diff --git a/Dockerfile b/Dockerfile index 4eff3f5..8227371 100644 --- a/Dockerfile +++ b/Dockerfile @@ -99,11 +99,11 @@ RUN git clone https://github.com/SeisSol/easi \ RUN pip install numpy && docker-clean -RUN git clone --recursive --depth 1 --single-branch --branch v1.0.1 https://github.com/SeisSol/SeisSol.git \ +RUN git clone --recursive --depth 1 --single-branch --branch v1.1.3 https://github.com/SeisSol/SeisSol.git \ && cd SeisSol \ && mkdir build_hsw && cd build_hsw \ && export PATH=$PATH:/home/tools/bin \ - && CC=mpicc CXX=mpicxx cmake .. -DCMAKE_PREFIX_PATH=/home/tools -DGEMM_TOOLS_LIST=LIBXSMM -DHOST_ARCH=hsw -DASAGI=on -DNETCDF=on -DORDER=4 -DCMAKE_Fortran_FLAGS="-ffast-math -funsafe-math-optimizations" \ + && CC=mpicc CXX=mpicxx cmake .. -DCMAKE_PREFIX_PATH=/home/tools -DGEMM_TOOLS_LIST=LIBXSMM -DHOST_ARCH=hsw -DASAGI=on -DNETCDF=on -DORDER=4 -DDR_QUAD_RULE_OPTIONS=dunavant \ && make -j$(nproc) \ && cmake .. -DEQUATIONS=viscoelastic2 -DNUMBER_OF_MECHANISMS=3 \ && make -j$(nproc) \ diff --git a/frontera.md b/frontera.md index d80255f..32deaf5 100644 --- a/frontera.md +++ b/frontera.md @@ -2,6 +2,12 @@ ## Setup Copy `singularity.def` to your home directory on frontera. + +Then get an interactive session on a compute node. For example for a 30 min session: +``` +idev -m 30 -N 1 --tasks-per-node 2 -p development +``` + Then execute: ``` @@ -23,7 +29,7 @@ To run the TPV13 scenario, you should: cd seissol-training/tpv13 mpirun singularity run ~/my-training.sif gmsh -3 tpv13_training.geo mpirun singularity run ~/my-training.sif pumgen -s msh2 tpv13_training.msh -OMP_NUM_THREADS=56 mpirun singularity run ~/my-training.sif seissol parameters.par +OMP_NUM_THREADS=28 mpirun -n 2 singularity run ~/my-training.sif seissol parameters.par ``` ## Expected runtimes @@ -32,13 +38,13 @@ On one node of Frontera: Scenario | runtime ------------------------|--------- -Kaikoura LSW | 15 min -Kaikoura RS | 11 min +Kaikoura LSW | 9 min +Kaikoura RS | 7 min Northridge elastic | 3 min Northridge viscoelastic | 5 min -Sulawesi LSW | 13 min -Sulawesi RS | 16 min -TPV13 | 1 min +Sulawesi LSW | 6 min +Sulawesi RS | 6 min +TPV13 | 12 s ## Visualization diff --git a/tpv13/tpv12_13_initial_stress.yaml b/tpv13/tpv12_13_initial_stress.yaml index 678ee6a..77c517f 100644 --- a/tpv13/tpv12_13_initial_stress.yaml +++ b/tpv13/tpv12_13_initial_stress.yaml @@ -4,25 +4,25 @@ s_xy: 0 s_yz: 0 s_xz: 0 -[s_xx, s_yy, s_zz]: !FunctionMap - map: - depth: return abs(z); - s_max_minus_Pf: return 9.8 * (2700.0 - 1000.0); - components: - # Upper region (includes fault) - - !AxisAlignedCuboidalDomainFilter - limits: - depth: [0, 11951.15] - s_max_minus_Pf: [-.inf, .inf] - components: !FunctionMap - map: - # Round to two significant digits as in benchmark description - s_xx: return -0.01 * round(100.0 * (0.5 * (1.0 + 0.3496) * s_max_minus_Pf)) * depth; - s_yy: return -0.01 * round(100.0 * (0.3496 * s_max_minus_Pf)) * depth; - s_zz: return -s_max_minus_Pf * depth; - # Lower region (excludes fault) - - !FunctionMap - map: - s_xx: return -s_max_minus_Pf * depth; - s_yy: return -s_max_minus_Pf * depth; - s_zz: return -s_max_minus_Pf * depth; +[s_xx, s_yy, s_zz]: !LuaMap + returns: [s_xx, s_yy, s_zz] + function: | + function f (x) + depth = math.abs(x["z"]) + s_max_minus_Pf = 9.8 * (2700.0 - 1000.0); + if (depth<=11951.15) then + -- math.floor(a+0.5) is round + s_xx = -0.01 * math.floor(100.0 * (0.5 * (1.0 + 0.3496) * s_max_minus_Pf) + 0.5) * depth + s_yy = -0.01 * math.floor(100.0 * (0.3496 * s_max_minus_Pf) + 0.5) * depth + s_zz = -s_max_minus_Pf * depth + else + s_xx = -s_max_minus_Pf * depth + s_yy = s_xx + s_zz = s_xx + end + return { + s_xx = s_xx, + s_yy = s_yy, + s_zz = s_zz, + } + end