From 179f0cd9a217c5d81011d20be3d5f33726b26751 Mon Sep 17 00:00:00 2001 From: ru58zid Date: Thu, 15 Oct 2020 11:52:49 +0200 Subject: [PATCH 1/3] add coarse mesh for training --- tpv13/tpv12_13_example_training.geo | 168 ++++++++++++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 tpv13/tpv12_13_example_training.geo diff --git a/tpv13/tpv12_13_example_training.geo b/tpv13/tpv12_13_example_training.geo new file mode 100644 index 0000000..e21374b --- /dev/null +++ b/tpv13/tpv12_13_example_training.geo @@ -0,0 +1,168 @@ +/* +/** + * @file + * This file is part of SeisSol. + * + * @author Stephanie Wollherr and Thomas Ulrich + * + * @section LICENSE + * Copyright (c) 2014-2015, SeisSol Group + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + + +Creates the mesh for tpv13, 60 degree dipping fault with a square nucleation patch +Obtain the mesh: +gmsh tpv13_example.geo -3 -optimize +Convert the mesh: +gmsh2gambit -i tpv13_example.msh -o tpv13_example.neu +Convert .neu file with pumgen for the use in SeisSol + + */ + +//resolution, off- and on-fault and nucleation patch +lc = 25e3; +lc_fault = 750; +lc_nucl = 250; + +Fault_length = 30e3; +Fault_width = 15e3; +Fault_dip = 60*Pi/180.; + +//Square nucleation patch in X,Z local coordinates +X_nucl = 0e3; +Z_nucl = -12e3; +Width_nucl = 3e3; + +Xmax = 45e3; +Xmin = -Xmax; +Ymin = 36e3; +Ymax = -Ymin; +Zmin = -42e3; + + +//Create the Volume +Point(1) = {Xmin, Ymin, 0, lc}; +Point(2) = {Xmin, Ymax, 0, lc}; +Point(3) = {Xmax, Ymax, 0, lc}; +Point(4) = {Xmax, Ymin, 0, lc}; +Line(1) = {1, 2}; +Line(2) = {2, 3}; +Line(3) = {3, 4}; +Line(4) = {4, 1}; +Line Loop(5) = {1,2,3,4}; +Plane Surface(1) = {5}; +Extrude {0,0, Zmin} { Surface{1}; } + +//Create the fault +Point(100) = {-0.5*Fault_length, -Fault_width *Cos(Fault_dip), -Fault_width *Sin(Fault_dip), lc}; +Point(101) = {-0.5*Fault_length, 0, 0e3, lc}; +Point(102) = {0.5*Fault_length, 0, 0e3, lc}; +Point(103) = {0.5*Fault_length, -Fault_width *Cos(Fault_dip), -Fault_width *Sin(Fault_dip), lc}; +Line(100) = {100, 101}; +Line(101) = {101, 102}; +Line{101} In Surface{1}; +Line(102) = {102, 103}; +Line(103) = {103, 100}; + +//create nucleation patch +Point(200) = {X_nucl + 0.5*Width_nucl, (Z_nucl+0.5*Width_nucl)*Cos(Fault_dip), (Z_nucl+0.5*Width_nucl)*Sin(Fault_dip), lc_nucl}; +Point(201) = {X_nucl - 0.5*Width_nucl, (Z_nucl+0.5*Width_nucl)*Cos(Fault_dip), (Z_nucl+0.5*Width_nucl)*Sin(Fault_dip), lc_nucl}; +Point(202) = {X_nucl - 0.5*Width_nucl, (Z_nucl-0.5*Width_nucl)*Cos(Fault_dip), (Z_nucl-0.5*Width_nucl)*Sin(Fault_dip), lc_nucl}; +Point(203) = {X_nucl + 0.5*Width_nucl, (Z_nucl-0.5*Width_nucl)*Cos(Fault_dip), (Z_nucl-0.5*Width_nucl)*Sin(Fault_dip), lc_nucl}; +Line(200) = {200,201}; +Line(201) = {201,202}; +Line(202) = {202,203}; +Line(203) = {203,200}; +Line Loop(204) = {200,201,202,203}; +Plane Surface(200) = {204}; + +Line Loop(105) = {100,101,102,103,200,201,202,203}; +Plane Surface(100) = {105}; + +//There is a bug in "Attractor", we need to define a Ruled surface in FaceList +Line Loop(106) = {100,101,102,103}; +Ruled Surface(101) = {106}; +Ruled Surface(201) = {204}; + +Surface{100,200} In Volume{1}; + + +//1.2 Managing coarsening away from the fault +// Attractor field returns the distance to the curve (actually, the +// distance to 100 equidistant points on the curve) +Field[1] = Distance; +Field[1].FacesList = {101}; + +// Matheval field returns "distance squared + lc/20" +Field[2] = MathEval; +//Field[2].F = Sprintf("0.02*F1 + 0.00001*F1^2 + %g", lc_fault); +//Field[2].F = Sprintf("0.02*F1 +(F1/2e3)^2 + %g", lc_fault); +Field[2].F = Sprintf("0.05*F1 +(F1/2.5e3)^2 + %g", lc_fault); + +//3.4.5 Managing coarsening around the nucleation Patch +Field[3] = Distance; +Field[3].FacesList = {201}; + +Field[4] = Threshold; +Field[4].IField = 3; +Field[4].LcMin = lc_nucl; +Field[4].LcMax = lc_fault; +Field[4].DistMin = Width_nucl; +Field[4].DistMax = 3*Width_nucl; + +Field[5] = Restrict; +Field[5].IField = 4; +Field[5].FacesList = {100,200} ; + +//equivalent of propagation size on element +Field[6] = Threshold; +Field[6].IField = 1; +Field[6].LcMin = lc_fault; +Field[6].LcMax = lc; +Field[6].DistMin = 2*lc_fault; +Field[6].DistMax = 2*lc_fault+0.001; + + +Field[7] = Min; +Field[7].FieldsList = {2,5,6}; + + +Background Field = 7; + + +//Define SeisSol specific boundary conditions +//free surface +Physical Surface(101) = {1}; +//dynamic rupture +Physical Surface(103) = {100,200}; +//absorbing +Physical Surface(105) = {14,18,22,26,27}; + +Physical Volume(1) = {1}; +Mesh.MshFileVersion = 2.2; From b6ed390c48cad45d0f15b42df71abbfed8119db7 Mon Sep 17 00:00:00 2001 From: ru58zid Date: Fri, 1 Jul 2022 13:59:20 +0200 Subject: [PATCH 2/3] fix fault mu_s setup --- tpv6_7/fault.yaml | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/tpv6_7/fault.yaml b/tpv6_7/fault.yaml index c748ed7..7f200b0 100644 --- a/tpv6_7/fault.yaml +++ b/tpv6_7/fault.yaml @@ -22,9 +22,24 @@ return 81600000; } return 70000000; -[mu_s, mu_d, d_c, cohesion]: !ConstantMap +[mu_s]: !FunctionMap + map: + x: return abs(x); + z: return abs(z); + components: + - !AxisAlignedCuboidalDomainFilter + limits: + x: [0, 15000] + z: [0, 15000] + components: !ConstantMap + map: + mu_s: 0.677 + - !ConstantMap + map: + mu_s: 1000.0 +[mu_d, d_c, cohesion]: !ConstantMap map: - mu_s: 0.677 mu_d: 0.525 d_c: 0.4 cohesion: 0.0 + From 7458dade3307d90b88a38589d1bdf874b2642bd5 Mon Sep 17 00:00:00 2001 From: ru58zid Date: Fri, 1 Jul 2022 14:00:28 +0200 Subject: [PATCH 3/3] I change the parameters which seems compare with scec better --- tpv6_7/parameters.par | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/tpv6_7/parameters.par b/tpv6_7/parameters.par index c58bfb6..863afde 100644 --- a/tpv6_7/parameters.par +++ b/tpv6_7/parameters.par @@ -17,8 +17,8 @@ FL = 6 ! Friction law !0: none, 16:LSW, 103: RS with strong velocity weakening !yaml file defining spatial dependance of fault properties ModelFileName = 'fault.yaml' -v_star = 1 ! Prakash-Clifton regularization parameter -L = 0.01 +v_star = 0.1 ! Prakash-Clifton regularization parameter +L = 0.5 !reference vector for defining strike and dip direction @@ -29,7 +29,7 @@ refPointMethod = 1 RF_output_on = 1 ! Rupture front ascii output OutputPointType = 5 ! Type (0: no output, 3: ascii file, 4: paraview file, 5: 3+4) -SlipRateOutputType=1 ! 0: (smoother) slip rate output evaluated from the difference between the velocity on both side of the fault +SlipRateOutputType=0 ! 0: (smoother) slip rate output evaluated from the difference between the velocity on both side of the fault ! 1: slip rate output evaluated from the fault tractions and the failure criterion (less smooth but usually more accurate where the rupture front is well developped) / @@ -58,7 +58,7 @@ PPFileName = 'tpv6_faultreceivers.dat' / &MeshNml -MeshFile = 'tpv5_f200m.puml.h5' +MeshFile = 'tpv5_f200_halfdom_sym' meshgenerator = 'PUML' ! Name of meshgenerator (Gambit3D-fast, Netcdf or PUML) / @@ -75,8 +75,6 @@ OutputFile = 'output/tpv6' Format = 10 ! Format (10= no output, 6=hdf5 output) ! |stress |vel iOutputMask = 0 0 0 0 0 0 1 1 1 -! |strain |eta -iPlasticityMask = 0 0 0 0 0 0 1 TimeInterval = 5. ! Index of printed info at time refinement = 1