Open ghost opened 9 years ago
can you send the Parfile and SOURCE file in order to check. Thanks
Here the Parfile and source file:
Thanks, Lucia
On May 5, 2015, at 1:56 PM, Paul Cristini notifications@github.com wrote:
can you send the Parfile and SOURCE file in order to check. Thanks
— Reply to this email directly or view it on GitHub https://github.com/geodynamics/specfem2d/issues/324#issuecomment-99219320.
I am not sure it worked. I copy and paste the files below.
Thanks, Lucia
source_surf = .false. # source inside the medium or at the surface xs = 0. # source location x in meters zs = 0.75 # source location z in meters source_type = 1 # elastic force or acoustic pressure = 1 or moment tensor = 2 time_function_type = 1 # Ricker = 1, first derivative = 2, Gaussian = 3, Dirac = 4, Heaviside = 5 f0 = 6.d3 # dominant source frequency (Hz) if not Dirac or Heaviside t0 = 0.0 # time shift when multi sources (if one source, must be zero) anglesource = 0.0 # angle of the source (for a force only) Mxx = 1. # Mxx component (for a moment tensor source only) Mzz = 1. # Mzz component (for a moment tensor source only) Mxz = 0. # Mxz component (for a moment tensor source only) factor = 1.d10 # amplification factor
title = Shallow water 30 Hz Source middle 4 receiver sets
SIMULATION_TYPE = 1 # 1 = forward, 2 = adjoint + kernels NOISE_TOMOGRAPHY = 0 # 0 = earthquake simulation, 1/2/3 = noise simulation SAVE_FORWARD = .false. # save the last frame, needed for adjoint simulation
nproc = 4 # number of processes partitioning_method = 3 # ascending order = 1, Scotch = 3 PERFORM_CUTHILL_MCKEE = .false. # perform inverse Cuthill-McKee (1969) optimization/permutation for mesh numbering (can be very costly and not very useful)
ngnod = 9 # number of control nodes per element (4 or 9) initialfield = .false. # use a plane wave as source or not add_Bielak_conditions = .false. # add Bielak conditions or not if initial plane wave assign_external_model = .false. # define external earth model or not READ_EXTERNAL_SEP_FILE = .false. # Read external SEP file from DATA/model_velocity.dat_input, or use routine ATTENUATION_VISCOELASTIC_SOLID = .false. # turn attenuation (viscoelasticity) on or off for non-poroelastic solid parts of the model ATTENUATION_PORO_FLUID_PART = .false. # turn viscous attenuation on or off for the fluid part of poroelastic parts of the model Q0 = 1 # quality factor for viscous attenuation freq0 = 10 # frequency for viscous attenuation p_sv = .true. # set the type of calculation (P-SV or SH/membrane waves)
nt = 2400 # total number of time steps deltat = 5.d-7 # duration of a time step (see section "How to choose the time step" of the manual for how to do this) USER_T0 = 0.0d0 # use this t0 as earliest starting time rather than the automatically calculated one time_stepping_scheme = 1 # 1 = Newmark (2nd order), 2 = LDDRK4-6 (4th-order 6-stage low storage Runge-Kutta), 3 = classical 4th-order 4-stage Runge-Kutta
NSOURCES = 1 # number of sources [source info read in CMTSOLUTION file] force_normal_to_surface = .false. # angleforce normal to surface (external mesh and curve file needed)
N_SLS = 2 # number of standard linear solids for attenuation f0_attenuation = 5.196152422706633 # (Hz) relevant only if source is a Dirac or a Heaviside, else it is f0
seismotype = 4 # record 1=displ 2=veloc 3=accel 4=pressure 5=curl of displ 6=the fluid potential NSTEP_BETWEEN_OUTPUT_SEISMOS = 5000000 # every how many time steps we save the seismograms (costly, do not use a very small value; if you use a very large value that is larger than the total number of time steps of the run, the seismograms will automatically be saved once at the end of the run anyway) save_ASCII_seismograms = .true. # save seismograms in ASCII format or not save_binary_seismograms_single = .true. # save seismograms in single precision binary format or not (can be used jointly with ASCII above to save both) save_binary_seismograms_double = .false. # save seismograms in double precision binary format or not (can be used jointly with both flags above to save all) SU_FORMAT = .false. # output single precision binary seismograms in Seismic Unix format (adjoint traces will be read in the same format) subsamp_seismos = 1 # subsampling of the seismograms to create smaller files (but less accurately sampled in time) generate_STATIONS = .true. # creates a STATION file in ./DATA nreceiversets = 1 # number of receiver sets anglerec = 0.d0 # angle to rotate components at receivers rec_normal_to_surface = .false. # replace anglerec with the normal to the surface (external mesh and curve file needed, anglerec above ignored)
nrec = 11 # number of receivers xdeb = -0.5 # first receiver x in meters zdeb = 0.5 # first receiver z in meters xfin = 0.5 # last receiver x in meters (ignored if onlyone receiver) zfin = 0.5 # last receiver z in meters (ignored if onlyone receiver) enreg_surf_same_vertical = .false. # receivers inside the medium or at the surface
NSTEP_BETWEEN_OUTPUT_INFO = 300 # every how many time steps we display information about the simulation (costly, do not use a very small value) NSTEP_BETWEEN_OUTPUT_IMAGES = 100 # every how many time steps we draw JPEG or PostScript pictures of the simulation (costly, do not use a very small value) cutsnaps = 1. # minimum amplitude kept in % for the JPEG and PostScript snapshots; amplitudes below that are muted
output_color_image = .true. # output JPEG color image of the results every NSTEP_BETWEEN_OUTPUT_IMAGES time steps or not imagetype_JPEG = 10 # display 1=displ_Ux 2=displ_Uz 3=displ_norm 4=veloc_Vx 5=veloc_Vz 6=veloc_norm 7=accel_Ax 8=accel_Az 9=accel_norm 10=pressure factor_subsample_image = 1 # factor to subsample color images output by the code (useful for very large models) POWER_DISPLAY_COLOR = 0.30d0 # non linear display to enhance small amplitudes in color images DRAW_SOURCES_AND_RECEIVERS = .true. # display sources as orange crosses and receivers as green squares in JPEG images or not DRAW_WATER_IN_BLUE = .true. # display acoustic layers as constant blue in JPEG images, because they likely correspond to water in the case of ocean acoustics or in the case of offshore oil industry experiments (if off, display them as greyscale, as for elastic or poroelastic elements, for instance for acoustic-only oil industry models of solid media) USE_SNAPSHOT_NUMBER_IN_FILENAME = .false. # use snapshot number in the file name of JPEG color snapshots instead of the time step
output_postscript_snapshot = .false. # output Postscript snapshot of the results imagetype_postscript = 1 # display 1=displ vector 2=veloc vector 3=accel vector; small arrows are displayed for the vectors meshvect = .true. # display mesh on vector plots or not modelvect = .false. # display velocity model on vector plots boundvect = .true. # display boundary conditions on plots interpol = .true. # interpolation of the display or not pointsdisp = 6 # points for interpolation of display (set to 1 for lower-left corner only) subsamp_postscript = 1 # subsampling of color snapshots sizemax_arrows = 1.d0 # maximum size of arrows on vector plots in cm US_LETTER = .false. # US letter paper or European A4
NSTEP_BETWEEN_OUTPUT_WAVE_DUMPS = 100 # every how many time steps we dump results of the simulation as ASCII or binary files (costly, do not use a very small value) output_wavefield_dumps = .false. # output wave field to a text file every NSTEP_BETWEEN_OUTPUT_TEXT_DUMPS time steps (creates very big files) imagetype_wavefield_dumps = 1 # display 1=displ vector 2=veloc vector 3=accel vector 4=pressure use_binary_for_wavefield_dumps = .false. # use ASCII or single-precision binary format for the wave field dumps
output_grid_Gnuplot = .false. # save the grid in a text file or not output_grid_ASCII = .false. # dump the grid in an ASCII text file consisting of a set of X,Y,Z points or not output_energy = .false. # compute and output acoustic and elastic energy (slows down the code significantly)
nbmodels = 2 # nb of different models
1 1 1000.d0 1500.d0 0.0d0 0 0 10.d0 10.d0 0 0 0 0 0 0 2 1 1300.d0 5800.d0 3.2d0 0 0 10.d0 10.d0 0 0 0 0 0 0
read_external_mesh = .true.
PML_BOUNDARY_CONDITIONS = .false. NELEM_PML_THICKNESS = 3 STACEY_ABSORBING_CONDITIONS = .true. ADD_SPRING_TO_STACEY = .true.
ADD_PERIODIC_CONDITIONS = .false.
PERIODIC_horiz_dist = 0.3597d0
PERIODIC_DETECT_TOL = 3.3334d-6
mesh_file = Mesh_solid_fluid_flat # file containing the mesh nodes_coords_file = Nodes_solid_fluid_flat # file containing the nodes coordinates materials_file = Material_solid_fluid_flat # file containing the material number for each element free_surface_file = Surf_free_solid_fluid_flat # file containing the free surface absorbing_surface_file = Surf_abs_solid_fluid_flat # file containing the absorbing surface CPML_element_file = EltPML_xxxxxx # file containing the CPML element numbers tangential_detection_curve_file = ./DATA/courbe_eros_nodes # file containing the curve delimiting the velocity model
interfacesfile = Interface_flat_ASM_DGA_119_62kHz.dat
xmin = -1.d0 # abscissa of left side of the model xmax = 4.d0 # abscissa of right side of the model# file containing interfaces for internal mesh nx = 835 # number of elements along X
absorbbottom = .true. absorbright = .true. absorbtop = .true. absorbleft = .true.
nbregions = 2 # nb of regions and model number for each 1 835 1 71 1 1 835 72 96 2
I checked and found that you did a mistake an inversion of file names. Just change solid_fluid to fluid_solid. One more thing. Don't use several cores in your computation since you only have 8 elements. A serial run will be enough. thanks Paul
Le 05/05/2015 23:08, gualtierilucia a écrit :
I am not sure it worked. I copy and paste the files below.
Thanks, Lucia
here "SOURCE.solid_fluid":
source 1. The components of a moment tensor source must be given in
N.m, not in dyne.cm as in the DATA/CMTSOLUTION source file of the 3D version of the code. source_surf = .false. # source inside the medium or at the surface xs = 0. # source location x in meters zs = 0.75 # source location z in meters source_type = 1 # elastic force or acoustic pressure = 1 or moment tensor = 2 time_function_type = 1 # Ricker = 1, first derivative = 2, Gaussian = 3, Dirac = 4, Heaviside = 5 f0 = 6.d3 # dominant source frequency (Hz) if not Dirac or Heaviside t0 = 0.0 # time shift when multi sources (if one source, must be zero) anglesource = 0.0 # angle of the source (for a force only) Mxx = 1. # Mxx component (for a moment tensor source only) Mzz = 1. # Mzz component (for a moment tensor source only) Mxz = 0. # Mxz component (for a moment tensor source only) factor = 1.d10 # amplification factor
here "Par_file_Gmsh_solid_fluid.in":
title of job
title = Shallow water 30 Hz Source middle 4 receiver sets
forward or adjoint simulation
SIMULATION_TYPE = 1 # 1 = forward, 2 = adjoint + kernels NOISE_TOMOGRAPHY = 0 # 0 = earthquake simulation, 1/2/3 = noise simulation SAVE_FORWARD = .false. # save the last frame, needed for adjoint simulation
parameters concerning partitioning
nproc = 4 # number of processes partitioning_method = 3 # ascending order = 1, Scotch = 3 PERFORM_CUTHILL_MCKEE = .false. # perform inverse Cuthill-McKee (1969) optimization/permutation for mesh numbering (can be very costly and not very useful)
ngnod = 9 # number of control nodes per element (4 or 9) initialfield = .false. # use a plane wave as source or not add_Bielak_conditions = .false. # add Bielak conditions or not if initial plane wave assign_external_model = .false. # define external earth model or not READ_EXTERNAL_SEP_FILE = .false. # Read external SEP file from DATA/model_velocity.dat_input, or use routine ATTENUATION_VISCOELASTIC_SOLID = .false. # turn attenuation (viscoelasticity) on or off for non-poroelastic solid parts of the model ATTENUATION_PORO_FLUID_PART = .false. # turn viscous attenuation on or off for the fluid part of poroelastic parts of the model Q0 = 1 # quality factor for viscous attenuation freq0 = 10 # frequency for viscous attenuation p_sv = .true. # set the type of calculation (P-SV or SH/membrane waves)
time step parameters
nt = 2400 # total number of time steps deltat = 5.d-7 # duration of a time step (see section "How to choose the time step" of the manual for how to do this) USER_T0 = 0.0d0 # use this t0 as earliest starting time rather than the automatically calculated one time_stepping_scheme = 1 # 1 = Newmark (2nd order), 2 = LDDRK4-6 (4th-order 6-stage low storage Runge-Kutta), 3 = classical 4th-order 4-stage Runge-Kutta
source parameters
NSOURCES = 1 # number of sources [source info read in CMTSOLUTION file] force_normal_to_surface = .false. # angleforce normal to surface (external mesh and curve file needed)
constants for attenuation
N_SLS = 2 # number of standard linear solids for attenuation f0_attenuation = 5.196152422706633 # (Hz) relevant only if source is a Dirac or a Heaviside, else it is f0
receiver set parameters for seismograms
seismotype = 4 # record 1=displ 2=veloc 3=accel 4=pressure 5=curl of displ 6=the fluid potential NSTEP_BETWEEN_OUTPUT_SEISMOS = 5000000 # every how many time steps we save the seismograms (costly, do not use a very small value; if you use a very large value that is larger than the total number of time steps of the run, the seismograms will automatically be saved once at the end of the run anyway) save_ASCII_seismograms = .true. # save seismograms in ASCII format or not save_binary_seismograms_single = .true. # save seismograms in single precision binary format or not (can be used jointly with ASCII above to save both) save_binary_seismograms_double = .false. # save seismograms in double precision binary format or not (can be used jointly with both flags above to save all) SU_FORMAT = .false. # output single precision binary seismograms in Seismic Unix format (adjoint traces will be read in the same format) subsamp_seismos = 1 # subsampling of the seismograms to create smaller files (but less accurately sampled in time) generate_STATIONS = .true. # creates a STATION file in ./DATA nreceiversets = 1 # number of receiver sets anglerec = 0.d0 # angle to rotate components at receivers rec_normal_to_surface = .false. # replace anglerec with the normal to the surface (external mesh and curve file needed, anglerec above ignored)
first receiver set
nrec = 11 # number of receivers xdeb = -0.5 # first receiver x in meters zdeb = 0.5 # first receiver z in meters xfin = 0.5 # last receiver x in meters (ignored if onlyone receiver) zfin = 0.5 # last receiver z in meters (ignored if onlyone receiver) enreg_surf_same_vertical = .false. # receivers inside the medium or at the surface
display parameters
NSTEP_BETWEEN_OUTPUT_INFO = 300 # every how many time steps we display information about the simulation (costly, do not use a very small value) NSTEP_BETWEEN_OUTPUT_IMAGES = 100 # every how many time steps we draw JPEG or PostScript pictures of the simulation (costly, do not use a very small value) cutsnaps = 1. # minimum amplitude kept in % for the JPEG and PostScript snapshots; amplitudes below that are muted
for JPEG color images
output_color_image = .true. # output JPEG color image of the results every NSTEP_BETWEEN_OUTPUT_IMAGES time steps or not imagetype_JPEG = 10 # display 1=displ_Ux 2=displ_Uz 3=displ_norm 4=veloc_Vx 5=veloc_Vz 6=veloc_norm 7=accel_Ax 8=accel_Az 9=accel_norm 10=pressure factor_subsample_image = 1 # factor to subsample color images output by the code (useful for very large models) POWER_DISPLAY_COLOR = 0.30d0 # non linear display to enhance small amplitudes in color images DRAW_SOURCES_AND_RECEIVERS = .true. # display sources as orange crosses and receivers as green squares in JPEG images or not DRAW_WATER_IN_BLUE = .true. # display acoustic layers as constant blue in JPEG images, because they likely correspond to water in the case of ocean acoustics or in the case of offshore oil industry experiments (if off, display them as greyscale, as for elastic or poroelastic elements, for instance for acoustic-only oil industry models of solid media) USE_SNAPSHOT_NUMBER_IN_FILENAME = .false. # use snapshot number in the file name of JPEG color snapshots instead of the time step
for PostScript snapshots
output_postscript_snapshot = .false. # output Postscript snapshot of the results imagetype_postscript = 1 # display 1=displ vector 2=veloc vector 3=accel vector; small arrows are displayed for the vectors meshvect = .true. # display mesh on vector plots or not modelvect = .false. # display velocity model on vector plots boundvect = .true. # display boundary conditions on plots interpol = .true. # interpolation of the display or not pointsdisp = 6 # points for interpolation of display (set to 1 for lower-left corner only) subsamp_postscript = 1 # subsampling of color snapshots sizemax_arrows = 1.d0 # maximum size of arrows on vector plots in cm US_LETTER = .false. # US letter paper or European A4
for wavefield dumps
NSTEP_BETWEEN_OUTPUT_WAVE_DUMPS = 100 # every how many time steps we dump results of the simulation as ASCII or binary files (costly, do not use a very small value) output_wavefield_dumps = .false. # output wave field to a text file every NSTEP_BETWEEN_OUTPUT_TEXT_DUMPS time steps (creates very big files) imagetype_wavefield_dumps = 1 # display 1=displ vector 2=veloc vector 3=accel vector 4=pressure use_binary_for_wavefield_dumps = .false. # use ASCII or single-precision binary format for the wave field dumps
output_grid_Gnuplot = .false. # save the grid in a text file or not output_grid_ASCII = .false. # dump the grid in an ASCII text file consisting of a set of X,Y,Z points or not output_energy = .false. # compute and output acoustic and elastic energy (slows down the code significantly)
velocity and density models
nbmodels = 2 # nb of different models
define models as I: (model_number,1,rho,Vp,Vs,0,0,QKappa Qmu) or II: (model_number,2,rho,c11,c13,c15,c33,c35,c55) or III: (model_number,3,rhos,rhof,phi,c,kxx,kxz,kzz,Ks,Kf,Kfr,etaf,mufr,Qmu).
For istropic elastic/acoustic material use I and set Vs to zero to make a given model acoustic, for anisotropic elastic use II,
and for isotropic poroelastic material use III. The mesh can contain acoustic, elastic, & poroelastic models simultaneously
1 1 1000.d0 1500.d0 0.0d0 0 0 10.d0 10.d0 0 0 0 0 0 0 2 1 1300.d0 5800.d0 3.2d0 0 0 10.d0 10.d0 0 0 0 0 0 0
3 https://github.com/geodynamics/specfem2d/pull/3 3 2650.d0
1000.0d0 0.4 1.25 1d-10 0.0 1d-10 3.6d10 2.25d9 2d9 0.0d-4 3.204d9 10.d0
2 https://github.com/geodynamics/specfem2d/pull/2 1 2500.d0 5000.d0
2500.0d0 0 0 10.d0 10.d0 0 0 0 0 0 0
3 https://github.com/geodynamics/specfem2d/pull/3 1 2200.d0 2500.d0
1443.375d0 0 0 10.d0 10.d0 0 0 0 0 0 0
4 https://github.com/geodynamics/specfem2d/pull/4 3 2200.d0 786.3d0
0.4 2.0 1d-11 0.0 1d-11 5.341d9 2d9 3d9 0.0d-4 3.204d9 10.d0
5 https://github.com/geodynamics/specfem2d/pull/5 2 2500.d0 169.d9
122.d9 0.d0 169.d9 0.d0 75.3d9 0 0 0 0 0 0
4 https://github.com/geodynamics/specfem2d/pull/4 1 2200.d0 2200.d0
1343.375d0 0 0 10.d0 10.d0 0 0 0 0 0 0
external mesh or not
read_external_mesh = .true.
absorbing boundary active or not
PML_BOUNDARY_CONDITIONS = .false. NELEM_PML_THICKNESS = 3 STACEY_ABSORBING_CONDITIONS = .true. ADD_SPRING_TO_STACEY = .true.
for horizontal periodic conditions: detect common points between left and right edges
ADD_PERIODIC_CONDITIONS = .false.
horizontal periodicity distance for periodic conditions
PERIODIC_horiz_dist = 0.3597d0
grid point detection tolerance for periodic conditions
PERIODIC_DETECT_TOL = 3.3334d-6
-----------------------------------------------------------------------------
PARAMETERS FOR EXTERNAL MESHING
data concerning mesh, when generated using third-party app (more info in README)
(see also absorbing_conditions above)
mesh_file = Mesh_solid_fluid_flat # file containing the mesh nodes_coords_file = Nodes_solid_fluid_flat # file containing the nodes coordinates materials_file = Material_solid_fluid_flat # file containing the material number for each element free_surface_file = Surf_free_solid_fluid_flat # file containing the free surface absorbing_surface_file = Surf_abs_solid_fluid_flat # file containing the absorbing surface CPML_element_file = EltPML_xxxxxx # file containing the CPML element numbers tangential_detection_curve_file = ./DATA/courbe_eros_nodes # file containing the curve delimiting the velocity model
-----------------------------------------------------------------------------
PARAMETERS FOR INTERNAL MESHING
file containing interfaces for internal mesh
interfacesfile = Interface_flat_ASM_DGA_119_62kHz.dat
geometry of the model (origin lower-left corner = 0,0) and mesh description
xmin = -1.d0 # abscissa of left side of the model xmax = 4.d0 # abscissa of right side of the model# file containing interfaces for internal mesh nx = 835 # number of elements along X
absorbing boundaries parameters
absorbbottom = .true. absorbright = .true. absorbtop = .true. absorbleft = .true.
define the different regions of the model in the (nx,nz) spectral element mesh
nbregions = 2 # nb of regions and model number for each 1 835 1 71 1 1 835 72 96 2
1 https://github.com/geodynamics/specfem2d/issues/1 80 21 40 4
1 https://github.com/geodynamics/specfem2d/issues/1 80 41 60 3
60 https://github.com/geodynamics/specfem2d/pull/60 80 21 40 4
30 https://github.com/geodynamics/specfem2d/pull/30 40 50 60 2
35 https://github.com/geodynamics/specfem2d/pull/35 40 50 60 5
— Reply to this email directly or view it on GitHub https://github.com/geodynamics/specfem2d/issues/324#issuecomment-99221874.
Where is this inversion? Do you mean the file name "solid_fluid.geo"? I have checked and I think I have called everything solid_fluid. Thanks, Lucia
Hello,
I am having some problems generating the mesh configuration for specfem2D (version 7.0.0) using Gmesh. I cannot use the internal mesh since I need to build crossing interfaces.
Here the steps I followed:
1) I created the input file called “solid_fluid_flat.geo” (see below): this is a simple two layer model (top:fluid; bottom:solid) with a flat interface; I wrote this input file using SPECFEM2D-7.0.0/EXAMPLES/Gmsh_example_MPI/SqrCirc.geo as reference.
2) I run gmsh (I tried both on mac OX (mesh downloaded from http://geuz.org/gmsh/) and on linux (gmsh-2.8.4-Linux from http://geuz.org/gmsh/bin/Linux/).:
gmsh -2 solid_fluid_flat.geo
on the shell
3) and then, as reported by the manual, I run on the shell:
python SPECFEM2D-7.0.0/UTILS/Gmsh/LibGmsh2Specfem_convert_Gmsh_to_Specfem2D_official.py solid_fluid_flat -t F -b A -r A -l A
I get no errors up to this stage.
4) I run the mesh builder:
xmeshfem2D > OUTPUT_FILES/output_mesher.txt
and at this stage I get this:
At line 138 of file ./part_unstruct.F90 (unit = 990, file = 'Mesh_solid_fluid_flat') Fortran runtime error: End of file
I am wondering if this is related to the fact that the manual says that the mesh should be built selecting a couple of options, “Subdivision algorithm” and “Element order" (page 10). How/Where can I set these options?
Thanks. Regards, Lucia
============================== solid_fluid_flat.geo =============================
km=1; s=0.1; lc1=1_km_s; Point(1) = {-1_km,-1_km,0,lc1}; Point(2) = {1_km ,-1_km,0,lc1}; Point(3) = {1_km,1_km,0,lc1}; Point(4) = {-1_km,1_km,0,lc1}; Point(5) = {-1_km, 0.5_km,0,lc1}; Point(6) = {1_km, 0.5_km,0,lc1};
Line(1)={3,4}; Line(2)={4,1}; Line(3)={2,1}; Line(4)={2,3}; Line(5)={5,6}; Line(6)={1,5}; Line(7)={6,2}; Line(8)={4,5}; Line(9)={6,3};
Line Loop(100)={1,8,5,9}; Line Loop(200)={5,7,3,6}; Plane Surface(10)={100}; Plane Surface(11)={200}; Recombine Surface{10,11}; Mesh.SubdivisionAlgorithm = 1; Physical Line("Top") = {1}; Physical Line("Left") = {2}; Physical Line("Bottom") = {3}; Physical Line("Right") = {4}; Physical Surface("M1") = {10}; Physical Surface("M2") = {11};