From 3fdc86a227360cd5a2fa17c3474f71f7c5c5e917 Mon Sep 17 00:00:00 2001 From: mthielma Date: Fri, 10 Nov 2023 15:55:39 +0100 Subject: [PATCH 01/21] added stress preloading Adapted the functionality from MDOODZ6, where this was already implemented. --- MDLIB/InputOutput.c | 5 +++++ MDLIB/Main_DOODZ.c | 25 +++++++++++++++++++++---- MDLIB/include/mdoodz.h | 3 +++ 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/MDLIB/InputOutput.c b/MDLIB/InputOutput.c index 2f9adb68..7e36c8eb 100755 --- a/MDLIB/InputOutput.c +++ b/MDLIB/InputOutput.c @@ -1163,6 +1163,11 @@ Input ReadInputFile( char *fileName ) { model.surf_baselev = ReadDou2( fin, "surf_baselev", 0.0 ) / scaling.L; model.surf_Winc = ReadDou2( fin, "surf_Winc", 0.0 ) / scaling.L; model.surf_Vinc = ReadDou2( fin, "surf_Vinc", 0.0 ) / scaling.V; + // Initial stress field + model.preload = ReadInt2( fin, "preload", 0 ); // put 1 if you want initial stresses + model.preload_sxxd = ReadDou2( fin, "preload_sxxd", 0.0 ) / scaling.S; + model.preload_szzd = ReadDou2( fin, "preload_szzd", 0.0 ) / scaling.S; + model.preload_sxz = ReadDou2( fin, "preload_sxz", 0.0 ) / scaling.S; // Initial thermal perturbation model.therm_perturb = ReadInt2( fin, "therm_perturb", 0 ); // Includes initial thermal perbation model.therm_perturb_x0 = ReadDou2( fin, "therm_perturb_x0", 0.0 )/scaling.L; // x position diff --git a/MDLIB/Main_DOODZ.c b/MDLIB/Main_DOODZ.c index df5a191d..09eec839 100755 --- a/MDLIB/Main_DOODZ.c +++ b/MDLIB/Main_DOODZ.c @@ -240,6 +240,27 @@ void RunMDOODZ(char *inputFileName, MdoodzSetup *setup) { ArrayEqualArray( mesh.T0_n, mesh.T, (mesh.Nx-1)*(mesh.Nz-1) ); //-------------------------------------------------------------------------------------------------------- + printf("*************************************\n"); + printf("******** Initialize stresses ********\n"); + printf("*************************************\n"); + + if ( input.model.preload == 0 ){ + printf(" ****** no preloaded values ******\n"); + // Set initial stresses to zero + Initialise1DArrayDouble( mesh.sxxd, (mesh.Nx-1)*(mesh.Nz-1), 0.0 ); + Initialise1DArrayDouble( mesh.szzd, (mesh.Nx-1)*(mesh.Nz-1), 0.0 ); + Initialise1DArrayDouble( mesh.sxz, (mesh.Nx) *(mesh.Nz) , 0.0 ); + } + else { + printf(" ****** set preloaded values ******\n"); + Initialise1DArrayDouble( mesh.sxxd, (mesh.Nx-1)*(mesh.Nz-1), input.model.preload_sxxd ); + Initialise1DArrayDouble( mesh.szzd, (mesh.Nx-1)*(mesh.Nz-1), input.model.preload_szzd ); + Initialise1DArrayDouble( mesh.sxz, (mesh.Nx) *(mesh.Nz) , input.model.preload_sxz); + Initialise1DArrayDouble( particles.sxxd, particles.Nb_part, input.model.preload_sxxd ); + Initialise1DArrayDouble( particles.szzd, particles.Nb_part, input.model.preload_szzd ); + Initialise1DArrayDouble( particles.sxz, particles.Nb_part, input.model.preload_sxz ); + } + printf("*************************************\n"); printf("******** Initialize pressure ********\n"); @@ -377,10 +398,6 @@ void RunMDOODZ(char *inputFileName, MdoodzSetup *setup) { if (input.model.writer_markers == 1 ) WriteOutputHDF5Particles( &mesh, &particles, &topo, &topo_chain, &topo_ini, &topo_chain_ini, input.model, BaseParticleFileName, input.materials, input.scaling ); } - // Set initial stresses and pressure to zero - Initialise1DArrayDouble( mesh.sxxd, (mesh.Nx-1)*(mesh.Nz-1), 0.0 ); - Initialise1DArrayDouble( mesh.szzd, (mesh.Nx-1)*(mesh.Nz-1), 0.0 ); - Initialise1DArrayDouble( mesh.sxz, (mesh.Nx) *(mesh.Nz) , 0.0 ); // Generate deformation maps if (input.model.deformation_maps == 1 ) GenerateDeformationMaps( &mesh, &input.materials, &input.model, Nmodel, &input.scaling ); particles.Nb_part_ini = particles.Nb_part; diff --git a/MDLIB/include/mdoodz.h b/MDLIB/include/mdoodz.h index b4eb8341..4f538235 100644 --- a/MDLIB/include/mdoodz.h +++ b/MDLIB/include/mdoodz.h @@ -103,6 +103,9 @@ typedef struct { double diffusion_length; // For Pips int chemical_diffusion, no_return, density_variations, unsplit_diff_reac, kinetics; + // initial stresses + int preload; + double preload_sxxd,preload_szzd,preload_sxz; // Anisotropy int anisotropy, out_of_plane, marker_noise; //aniso_fstrain int residual_form; From 6274a8088ed017805673532fe311566da69866dc Mon Sep 17 00:00:00 2001 From: mthielma Date: Mon, 19 Feb 2024 12:23:13 +0100 Subject: [PATCH 02/21] changed stress preloading - new attempt --- MDLIB/Main_DOODZ.c | 24 +- MDLIB/Setup.c | 10 + SETS/ShrinkingMarcel.c | 154 +++++++ SETS/ShrinkingMarcel_template.c | 154 +++++++ SETS/ShrinkingMarcel_test.c | 87 ++++ SETS/ShrinkingMarcel_test.txt | 254 ++++++++++++ TestRun.txt | 704 ++++++++++++++++++++++++++++++++ 7 files changed, 1371 insertions(+), 16 deletions(-) create mode 100644 SETS/ShrinkingMarcel.c create mode 100644 SETS/ShrinkingMarcel_template.c create mode 100644 SETS/ShrinkingMarcel_test.c create mode 100644 SETS/ShrinkingMarcel_test.txt create mode 100644 TestRun.txt diff --git a/MDLIB/Main_DOODZ.c b/MDLIB/Main_DOODZ.c index 8b8a22cf..cd3b40a0 100755 --- a/MDLIB/Main_DOODZ.c +++ b/MDLIB/Main_DOODZ.c @@ -227,22 +227,14 @@ void RunMDOODZ(char *inputFileName, MdoodzSetup *setup) { printf("******** Initialize stresses ********\n"); printf("*************************************\n"); - if ( input.model.preload == 0 ){ - printf(" ****** no preloaded values ******\n"); - // Set initial stresses to zero - Initialise1DArrayDouble( mesh.sxxd, (mesh.Nx-1)*(mesh.Nz-1), 0.0 ); - Initialise1DArrayDouble( mesh.szzd, (mesh.Nx-1)*(mesh.Nz-1), 0.0 ); - Initialise1DArrayDouble( mesh.sxz, (mesh.Nx) *(mesh.Nz) , 0.0 ); - } - else { - printf(" ****** set preloaded values ******\n"); - Initialise1DArrayDouble( mesh.sxxd, (mesh.Nx-1)*(mesh.Nz-1), input.model.preload_sxxd ); - Initialise1DArrayDouble( mesh.szzd, (mesh.Nx-1)*(mesh.Nz-1), input.model.preload_szzd ); - Initialise1DArrayDouble( mesh.sxz, (mesh.Nx) *(mesh.Nz) , input.model.preload_sxz); - Initialise1DArrayDouble( particles.sxxd, particles.Nb_part, input.model.preload_sxxd ); - Initialise1DArrayDouble( particles.szzd, particles.Nb_part, input.model.preload_szzd ); - Initialise1DArrayDouble( particles.sxz, particles.Nb_part, input.model.preload_sxz ); - } + // stresses on particles should have been set in SetParticles, so here we only have to interpolate to the mesh + P2Mastah( &input.model, particles, particles.sxxd0, &mesh, mesh.sxxd, mesh.BCp.type, 1, 0, interp, cent, input.model.interp_stencil); + P2Mastah( &input.model, particles, particles.szzd0, &mesh, mesh.szzd, mesh.BCp.type, 1, 0, interp, cent, input.model.interp_stencil); + P2Mastah( &input.model, particles, particles.sxz0, &mesh, mesh.sxz, mesh.BCg.type, 1, 0, interp, vert, input.model.interp_stencil); + + // P2Mastah( &input.model, particles, particles.sxxd, &mesh, mesh.sxxd, mesh.BCp.type, 1, 0, interp, cent, input.model.interp_stencil); + // P2Mastah( &input.model, particles, particles.szzd, &mesh, mesh.szzd, mesh.BCp.type, 1, 0, interp, cent, input.model.interp_stencil); + //P2Mastah( &input.model, particles, particles.sxz, &mesh, mesh.sxz, mesh.BCg.type, 1, 0, interp, vert, input.model.interp_stencil); printf("*************************************\n"); diff --git a/MDLIB/Setup.c b/MDLIB/Setup.c index f5ccd6f2..981e168c 100644 --- a/MDLIB/Setup.c +++ b/MDLIB/Setup.c @@ -97,6 +97,16 @@ void SetParticles(SetParticles_ff setParticles, MdoodzInput *instance, markers * } else { particles->P[np] = 0.0; } + if (setParticles.SetTxx) { + particles->sxxd[np] = setParticles.SetTxx(instance, coordinates, particles->phase[np]); + } else { + particles->sxxd[np] = 0.0; + } + if (setParticles.SetTzz) { + particles->szzd[np] = setParticles.SetTzz(instance, coordinates, particles->phase[np]); + } else { + particles->szzd[np] = 0.0; + } if (setParticles.SetNoise) { particles->noise[np] = setParticles.SetNoise(instance, coordinates, particles->phase[np]); } else { diff --git a/SETS/ShrinkingMarcel.c b/SETS/ShrinkingMarcel.c new file mode 100644 index 00000000..64fe0eb7 --- /dev/null +++ b/SETS/ShrinkingMarcel.c @@ -0,0 +1,154 @@ +#include "mdoodz.h" +#include "math.h" +#include "stdio.h" +#include "stdlib.h" + + + +// for the ellipse, we have several arguments: effective radius, aspect ratio, orientation, X0,Z0 +int SetPhase(MdoodzInput *input, Coordinates coordinates) { + double radius = $RADIUS + double AR = $AR + double a,b, cos_theta = cos($THETA*PI/180.0), sin_theta=sin($THETA*PI/180.0) + double $X0,$Z0 + + if (AR>1){ + // compute half axis lengths so that we have the same "volume" as a circle with radius + b = radius / sqrt(AR); + a = radius * sqrt(AR); + + Xeff = (coordinates.x-X0)*cos_theta + (coordinates.z-Z0)*sin_theta; + Zeff = (coordinates.x-X0)*sin_theta - (coordinates.z-Z0)*cos_theta; + } + else { + b = radius; + a = radius; + Xeff = coordinates.x-X0; + Zeff = coordinates.z-Z0; + } + + if ( Xeff*Xeff/(a*a) +Zeff*Zeff/(b*b) <1) { + return 1; + } else { + return 0; + } +} + +int SetDualPhase(MdoodzInput *input, Coordinates coordinate, int phase) { + + int dual_phase = phase; + double Lx = input->model.xmax - input->model.xmin; + double Lz = input->model.zmax - input->model.zmin; + double Ax, Az; + + // Set checkerboard for phase 0 + Ax = cos( 6.0*2.0*M_PI*coordinate.x / Lx ); + Az = sin( 6.0*2.0*M_PI*coordinate.z / Lz ); + if ( ( (Az<0.0 && Ax<0.0) || (Az>0.0 && Ax>0.0) ) && dual_phase==0 ) { + dual_phase += input->model.Nb_phases; + } + + // Set checkerboard for phase 1 + Ax = cos( 24.0*2.0*M_PI*coordinate.x / Lx ); + Az = sin( 24.0*2.0*M_PI*coordinate.z / Lz ); + if ( ( (Az<0.0 && Ax<0.0) || (Az>0.0 && Ax>0.0) ) && dual_phase==1 ) { + dual_phase += input->model.Nb_phases; + } + + return dual_phase; +} + +double SetDensity(MdoodzInput *input, Coordinates coordinates, int phase) { + const double T_init = (input->model.user0 + zeroC) / input->scaling.T; + const double P_init = (input->model.bkg_pressure ) / input->scaling.S; + if (1 == 0) { + return input->materials.rho[phase] * exp(input->materials.bet[phase]*P_init - input->materials.alp[phase] * T_init); + } else { + return input->materials.rho[phase]; + } +} + +int main(int argc, char *args[]) { + +// Input file name + char *input_file; +// effective radius, aspect ratio, orientation, X0,Z0 + double radius, AR, theta, X0, Z0 + if ( nargs < 2 ) { // no input given + asprintf(&input_file, "Shrinking.txt"); // Default + radius = 0.1; + AR = 1; + theta = 0; + X0 = 0; + Z0 = 0; + } + else if ( nargs == 2) { // only input file given + asprintf(&input_file, "%s", args[1]); + radius = 0.1; + AR = 1; + theta = 0; + X0 = 0; + Z0 = 0; + } + else if ( nargs == 3) { // only input file and inclusion radius given --> circular inclusion + asprintf(&input_file, "%s", args[1]); + radius = atof(args[2]); + AR = 1; + theta = 0; + X0 = 0; + Z0 = 0; + } + else if ( nargs == 5) { // input file, inclusion radius, aspect ratio and orientation are given + asprintf(&input_file, "%s", args[1]); + radius = atof(args[2]); + AR = atof(args[3]); + theta = atof(args[4]); + X0 = 0; + Z0 = 0; + } + else if ( nargs == 7) { // input file, inclusion radius, aspect ratio, orientation, X0, Z0 are given + asprintf(&input_file, "%s", args[1]); + radius = atof(args[2]); + AR = atof(args[3]); + theta = atof(args[4]); + X0 = atof(args[5]); + Z0 = atof(args[6]); + } + else { + asprintf(&input_file, "Shrinking.txt"); // Default + radius = 0.1; + AR = 1; + theta = 0; + X0 = 0; + Z0 = 0; + printf("Wrong number of arguments, running MDoodz7.0 using default %s\n", input_file); + } + printf("Running MDoodz7.0 using %s\n", input_file); + + if (AR==1.0) { // circular inclusion + MdoodzSetup setup = { + .SetParticles = &(SetParticles_ff){ + .SetPhase = SetPhaseCircle, + .SetDensity = SetDensity, + }, + .SetBCs = &(SetBCs_ff){ + .SetBCVx = SetPureOrSimpleShearBCVx, + .SetBCVz = SetPureOrSimpleShearBCVz, + }, + }; + + } + else { // elliptic inclusion + MdoodzSetup setup = { + .SetParticles = &(SetParticles_ff){ + .SetPhase = SetPhaseEllipse, + .SetDensity = SetDensity, + }, + .SetBCs = &(SetBCs_ff){ + .SetBCVx = SetPureOrSimpleShearBCVx, + .SetBCVz = SetPureOrSimpleShearBCVz, + }, + }; + } + RunMDOODZ("Shrinking.txt", &setup); +} diff --git a/SETS/ShrinkingMarcel_template.c b/SETS/ShrinkingMarcel_template.c new file mode 100644 index 00000000..64fe0eb7 --- /dev/null +++ b/SETS/ShrinkingMarcel_template.c @@ -0,0 +1,154 @@ +#include "mdoodz.h" +#include "math.h" +#include "stdio.h" +#include "stdlib.h" + + + +// for the ellipse, we have several arguments: effective radius, aspect ratio, orientation, X0,Z0 +int SetPhase(MdoodzInput *input, Coordinates coordinates) { + double radius = $RADIUS + double AR = $AR + double a,b, cos_theta = cos($THETA*PI/180.0), sin_theta=sin($THETA*PI/180.0) + double $X0,$Z0 + + if (AR>1){ + // compute half axis lengths so that we have the same "volume" as a circle with radius + b = radius / sqrt(AR); + a = radius * sqrt(AR); + + Xeff = (coordinates.x-X0)*cos_theta + (coordinates.z-Z0)*sin_theta; + Zeff = (coordinates.x-X0)*sin_theta - (coordinates.z-Z0)*cos_theta; + } + else { + b = radius; + a = radius; + Xeff = coordinates.x-X0; + Zeff = coordinates.z-Z0; + } + + if ( Xeff*Xeff/(a*a) +Zeff*Zeff/(b*b) <1) { + return 1; + } else { + return 0; + } +} + +int SetDualPhase(MdoodzInput *input, Coordinates coordinate, int phase) { + + int dual_phase = phase; + double Lx = input->model.xmax - input->model.xmin; + double Lz = input->model.zmax - input->model.zmin; + double Ax, Az; + + // Set checkerboard for phase 0 + Ax = cos( 6.0*2.0*M_PI*coordinate.x / Lx ); + Az = sin( 6.0*2.0*M_PI*coordinate.z / Lz ); + if ( ( (Az<0.0 && Ax<0.0) || (Az>0.0 && Ax>0.0) ) && dual_phase==0 ) { + dual_phase += input->model.Nb_phases; + } + + // Set checkerboard for phase 1 + Ax = cos( 24.0*2.0*M_PI*coordinate.x / Lx ); + Az = sin( 24.0*2.0*M_PI*coordinate.z / Lz ); + if ( ( (Az<0.0 && Ax<0.0) || (Az>0.0 && Ax>0.0) ) && dual_phase==1 ) { + dual_phase += input->model.Nb_phases; + } + + return dual_phase; +} + +double SetDensity(MdoodzInput *input, Coordinates coordinates, int phase) { + const double T_init = (input->model.user0 + zeroC) / input->scaling.T; + const double P_init = (input->model.bkg_pressure ) / input->scaling.S; + if (1 == 0) { + return input->materials.rho[phase] * exp(input->materials.bet[phase]*P_init - input->materials.alp[phase] * T_init); + } else { + return input->materials.rho[phase]; + } +} + +int main(int argc, char *args[]) { + +// Input file name + char *input_file; +// effective radius, aspect ratio, orientation, X0,Z0 + double radius, AR, theta, X0, Z0 + if ( nargs < 2 ) { // no input given + asprintf(&input_file, "Shrinking.txt"); // Default + radius = 0.1; + AR = 1; + theta = 0; + X0 = 0; + Z0 = 0; + } + else if ( nargs == 2) { // only input file given + asprintf(&input_file, "%s", args[1]); + radius = 0.1; + AR = 1; + theta = 0; + X0 = 0; + Z0 = 0; + } + else if ( nargs == 3) { // only input file and inclusion radius given --> circular inclusion + asprintf(&input_file, "%s", args[1]); + radius = atof(args[2]); + AR = 1; + theta = 0; + X0 = 0; + Z0 = 0; + } + else if ( nargs == 5) { // input file, inclusion radius, aspect ratio and orientation are given + asprintf(&input_file, "%s", args[1]); + radius = atof(args[2]); + AR = atof(args[3]); + theta = atof(args[4]); + X0 = 0; + Z0 = 0; + } + else if ( nargs == 7) { // input file, inclusion radius, aspect ratio, orientation, X0, Z0 are given + asprintf(&input_file, "%s", args[1]); + radius = atof(args[2]); + AR = atof(args[3]); + theta = atof(args[4]); + X0 = atof(args[5]); + Z0 = atof(args[6]); + } + else { + asprintf(&input_file, "Shrinking.txt"); // Default + radius = 0.1; + AR = 1; + theta = 0; + X0 = 0; + Z0 = 0; + printf("Wrong number of arguments, running MDoodz7.0 using default %s\n", input_file); + } + printf("Running MDoodz7.0 using %s\n", input_file); + + if (AR==1.0) { // circular inclusion + MdoodzSetup setup = { + .SetParticles = &(SetParticles_ff){ + .SetPhase = SetPhaseCircle, + .SetDensity = SetDensity, + }, + .SetBCs = &(SetBCs_ff){ + .SetBCVx = SetPureOrSimpleShearBCVx, + .SetBCVz = SetPureOrSimpleShearBCVz, + }, + }; + + } + else { // elliptic inclusion + MdoodzSetup setup = { + .SetParticles = &(SetParticles_ff){ + .SetPhase = SetPhaseEllipse, + .SetDensity = SetDensity, + }, + .SetBCs = &(SetBCs_ff){ + .SetBCVx = SetPureOrSimpleShearBCVx, + .SetBCVz = SetPureOrSimpleShearBCVz, + }, + }; + } + RunMDOODZ("Shrinking.txt", &setup); +} diff --git a/SETS/ShrinkingMarcel_test.c b/SETS/ShrinkingMarcel_test.c new file mode 100644 index 00000000..ed6cc38e --- /dev/null +++ b/SETS/ShrinkingMarcel_test.c @@ -0,0 +1,87 @@ +#include "mdoodz.h" +#include "math.h" +#include "stdio.h" +#include "stdlib.h" + + + +// for the ellipse, we have several arguments: effective radius, aspect ratio, orientation, X0,Z0 +int SetPhase(MdoodzInput *input, Coordinates coordinates) { + double radius = 0.1; + double AR = 2; + double a,b, Xeff,Zeff; + double cos_theta = cos(45*M_PI/180.0); + double sin_theta=sin(45*M_PI/180.0); + double X0=0; + double Z0=0; + + if (AR>1){ + // compute half axis lengths so that we have the same "volume" as a circle with radius + b = radius / sqrt(AR); + a = radius * sqrt(AR); + + Xeff = (coordinates.x-X0)*cos_theta + (coordinates.z-Z0)*sin_theta; + Zeff = (coordinates.x-X0)*sin_theta - (coordinates.z-Z0)*cos_theta; + } + else { + b = radius; + a = radius; + Xeff = coordinates.x-X0; + Zeff = coordinates.z-Z0; + } + + if ( Xeff*Xeff/(a*a) +Zeff*Zeff/(b*b) <1) { + return 1; + } else { + return 0; + } +} + +int SetDualPhase(MdoodzInput *input, Coordinates coordinate, int phase) { + + int dual_phase = phase; + double Lx = input->model.xmax - input->model.xmin; + double Lz = input->model.zmax - input->model.zmin; + double Ax, Az; + + // Set checkerboard for phase 0 + Ax = cos( 6.0*2.0*M_PI*coordinate.x / Lx ); + Az = sin( 6.0*2.0*M_PI*coordinate.z / Lz ); + if ( ( (Az<0.0 && Ax<0.0) || (Az>0.0 && Ax>0.0) ) && dual_phase==0 ) { + dual_phase += input->model.Nb_phases; + } + + // Set checkerboard for phase 1 + Ax = cos( 24.0*2.0*M_PI*coordinate.x / Lx ); + Az = sin( 24.0*2.0*M_PI*coordinate.z / Lz ); + if ( ( (Az<0.0 && Ax<0.0) || (Az>0.0 && Ax>0.0) ) && dual_phase==1 ) { + dual_phase += input->model.Nb_phases; + } + + return dual_phase; +} + +double SetDensity(MdoodzInput *input, Coordinates coordinates, int phase) { + const double T_init = (input->model.user0 + zeroC) / input->scaling.T; + const double P_init = (input->model.bkg_pressure ) / input->scaling.S; + if (1 == 0) { + return input->materials.rho[phase] * exp(input->materials.bet[phase]*P_init - input->materials.alp[phase] * T_init); + } else { + return input->materials.rho[phase]; + } +} + +int main() { + MdoodzSetup setup = { + .SetParticles = &(SetParticles_ff){ + .SetPhase = SetPhase, + .SetDualPhase = SetDualPhase, + .SetDensity = SetDensity, + }, + .SetBCs = &(SetBCs_ff){ + .SetBCVx = SetPureOrSimpleShearBCVx, + .SetBCVz = SetPureOrSimpleShearBCVz, + }, + }; + RunMDOODZ("ShrinkingMarcel_test.txt", &setup); +} diff --git a/SETS/ShrinkingMarcel_test.txt b/SETS/ShrinkingMarcel_test.txt new file mode 100644 index 00000000..b1ba6a7b --- /dev/null +++ b/SETS/ShrinkingMarcel_test.txt @@ -0,0 +1,254 @@ +/**** RESTART ****/ +istep = 00000 +irestart = 0 + +/**** OUTPUT FILES ****/ +writer = 1 +writer_step = 1 +writer_markers = 0 +writer_debug = 0 +writer_energies = 0 + +/**** SCALES ****/ +eta = 1e15 +L = 2.0 +V = 1.0e-10 +T = 700 + +/**** SPACE-TIME ****/ +Nx = 201 +Nz = 201 +Nt = 10 +xmin =-1.0 +zmin =-1.0 +xmax = 1.0 +zmax = 1.0 +advection = 1 +dt = 1e7 +constant_dt = 0 +Courant = 0.2 +penalty = 1e2 +lin_solver = 2 +diag_scaling = 0 +gnuplot_log_res = 0 +preconditioner = 1 +eta_average = 0 +num_deriv = 0 +stress_rotation = 1 +safe_mode = 1 +safe_dt_div = 2.0 +max_num_stag = 10 +IncrementalUpdateGrid = 1 + + +lin_abs_div = 1e-10 +lin_rel_div = 1e-10 +lin_abs_mom = 1e-10 / momentum tolerance (new in MD7.0) +lin_rel_mom = 1e-10 + +/**** SWITCHES ****/ +compressible = 1 +elastic = 1 +mechanical = 1 +RK = 4 +periodic_x = 0 +pure_shear_ALE = 0 +thermal = 0 +line_search = 1 +free_surface = 0 +free_surface_stab = 0 + +initial_cooling = 0 +subgrid_diffusion = 2 +shear_heating = 0 +adiab_heating = 0 +finite_strain = 0 + +/*** CHEMICAL ***/ +chemical_diffusion = 0 / +no_return = 0 +density_variations = 1 / renamed in MD7.0 (VolChangeReac) +unsplit_diff_reac = 0 + + +/**** STRESS PRELOADING ****/ +preload = 1; +preload_sxxd = 5e8; +preload_szzd = 5e8; +preload_sxz = 0 + +/**** SETUP DEPENDANT ****/ +shear_style = 0 +bkg_strain_rate = 1.0e-15 +bkg_pressure = 2.0e9 +user0 = 680.0 / temperature [°C] +user1 = 3.1558e9 +user2 = 10.0 +user3 = 0 + +/**** GRAVITY ****/ +gx = 0.0000 +gz = 0.0000 + +/**** MAT PROPERTIES ****/ +Nb_phases = 4 + +/**** PHASE 0 ****/ +ID = 0 +rho = 2850.00 / matrix Granulite +G = 4.0e10 +Cv = 1050.0 +k = 2.3 +Qr = 0.0 +C = 1.0e70 +phi = 10.0 +eta_vp = 5.0e19 +n_vp = 1.0 +Slim = 500e9 +alp = 0.0e-6 +bet = 1.25e-11 / (K=80e9) +drho = 0 +cstv = 0 / constant visc law +pwlv = 1 / disloc. creep +linv = 0 / diff. creep +gbsv = 0 / grain boundary sliding +expv = 0 / peierls creep +gsel = 0 / grain size evo. +eta0 = 1.0e22 +npwl = 1.0 +Qpwl = 0 +reac_soft = 1 +reac_phase = 0 +Pr = 1.0e80 +dPr = 700.0e6 +tau_kin = 3.1558e9 +k_chem = 5.0e-26 +density_model = 3 + +/**** PHASE 1 ****/ +ID = 1 +rho = 2850.00 / Dry CPX inclusion +G = 4.0e10 +Cv = 1050.0 +k = 2.3 +Qr = 0.0 +C = 1.0e70 +phi = 10.0 +eta_vp = 5.0e19 +n_vp = 1.0 +Slim = 500e9 +alp = 0.0e-6 +bet = 1.25e-11 / (K=80e9) +drho = 0 +cstv = 0 / constant visc law +pwlv = 1 / disloc. creep +linv = 0 / diff. creep +gbsv = 0 / grain boundary sliding +expv = 0 / peierls creep +gsel = 0 / grain size evo. +eta0 = 1.0e22 +npwl = 1.0 +Qpwl = 0 +reac_soft = 1 +reac_phase = 3 +Pr = 1.5e9 +dPr = 700.0e6 +tau_kin = 3.1558e9 +k_chem = 5.0e-26 +density_model = 3 + +/**** PHASE 2 ****/ +ID = 2 +rho = 2850.00 / matrix Granulite +G = 4.0e10 +Cv = 1050.0 +k = 2.3 +Qr = 0.0 +C = 1.0e70 +phi = 10.0 +eta_vp = 5.0e19 +n_vp = 1.0 +Slim = 500e9 +alp = 0.0e-6 +bet = 1.25e-11 / (K=80e9) +drho = 0 +cstv = 0 / constant visc law +pwlv = 1 / disloc. creep +linv = 0 / diff. creep +gbsv = 0 / grain boundary sliding +expv = 0 / peierls creep +gsel = 0 / grain size evo. +eta0 = 1.0e22 +npwl = 1.0 +Qpwl = 0 +reac_soft = 1 +reac_phase = 2 +Pr = 1.0e80 +dPr = 700.0e6 +tau_kin = 3.1558e9 +k_chem = 5.0e-26 +density_model = 3 + +/**** PHASE 3 ****/ +ID = 3 +rho = 3250.00 / keep granulite, only change in rho +G = 4.0e10 +Cv = 1050.0 +k = 2.3 +Qr = 0.0 +C = 1.0e70 +phi = 10.0 +eta_vp = 5.0e19 +n_vp = 1.0 +Slim = 500e9 +alp = 0.0e-6 +bet = 1.25e-11 / (K=80e9) +drho = 0 +cstv = 0 / constant visc law +pwlv = 1 / disloc. creep +linv = 0 / diff. creep +gbsv = 0 / grain boundary sliding +expv = 0 / peierls creep +gsel = 0 / grain size evo. +eta0 = 1.0e22 +npwl = 1.0 +Qpwl = 0 +reac_soft = 0 +reac_phase = 3 +Pr = 1.0e80 +dPr = 700.0e6 +tau_kin = 3.1558e9 +k_chem = 5.0e-26 +density_model = 3 + +/**** DEFMAPS ****/ +nT = 51 / Temperature resolutin [] +nE = 51 / Strain rate resolution [] +nd = 2 / Grain size resolution [] +Tmin = 240 / Temperature minimum [°C] +Tmax = 2000 / Temperature maximum [°C] +Emin = -50 / Strain rate minimum log_10 [1/s] +Emax = 5 / Strain rate maximum log_10 [1/s] +dmin = -7 / Grain size minimum log_10 [m] +dmax = -2 / Grain size maximum log_10 [m] +Pn = 1e9 / Pressure [Pa] + +/**** PARTICLES ****/ +Nx_part = 4 +Nz_part = 4 +min_part_cell = 16 + +/**** NON-LINEAR ITERATIONS ****/ +Newton = 1 +let_res_grow = 0 +line_search_min = 0.0 +Picard2Newton = 1 +Picard2Newton_tol = 2e-1 +nit_max = 30 +rel_tol_KSP = 5e-4 +nonlin_abs_mom = 1e-9 +nonlin_abs_div = 1e-9 +nonlin_rel_mom = 1e-9 +nonlin_rel_div = 1e-9 +min_eta = 1e10 +max_eta = 1e30 diff --git a/TestRun.txt b/TestRun.txt new file mode 100644 index 00000000..3df10d3f --- /dev/null +++ b/TestRun.txt @@ -0,0 +1,704 @@ +cd cmake-exec/ShrinkingMarcel_test && ./ShrinkingMarcel_test + +******************************************************** +************ Starting MDOODZ 7.0 simulation ************ +******************************************************** +Warning : Parameter 'writer_subfolder' not found in the setup file, running with default value ./ +Warning : Parameter 'noisy' not found in the setup file, running with default value 1 +Warning : Parameter 'track_T_P_x_z' not found in the setup file, running with default value 0 +Warning : Parameter 'delete_breakpoints' not found in the setup file, running with default value 1 +Warning : Parameter 'import_files_dir' not found in the setup file, running with default value ../../IMPORT +Warning : Parameter 'import_file' not found in the setup file, running with default value blah.bin +Warning : Parameter 'save_initial_markers' not found in the setup file, running with default value 0 +Warning : Parameter 'load_initial_markers' not found in the setup file, running with default value 0 +Warning : Parameter 'initial_markers_file' not found in the setup file, running with default value markers.bin +Warning : Parameter 'balance_boundaries' not found in the setup file, running with default value 0 +Warning : Parameter 'anisotropy' not found in the setup file, running with default value 0 +Warning : Parameter 'polar' not found in the setup file, running with default value 0 +Warning : Parameter 'kinetics' not found in the setup file, running with default value 0 +Warning : Parameter 'out_of_plane' not found in the setup file, running with default value 0 +Warning : Parameter 'max_Pic_its' not found in the setup file, running with default value 10 +Warning : Parameter 'residual_form' not found in the setup file, running with default value 1 +Warning : Parameter 'ani_average' not found in the setup file, running with default value 1 +Warning : Parameter 'interp_stencil' not found in the setup file, running with default value 1 +Warning : Parameter 'conserv_interp' not found in the setup file, running with default value 0 +Warning : Parameter 'direct_neighbour' not found in the setup file, running with default value 0 +Warning : Parameter 'initial_noise' not found in the setup file, running with default value 0 +Warning : Parameter 'marker_noise' not found in the setup file, running with default value 0 +Warning : Parameter 'reseed_markers' not found in the setup file, running with default value 1 +Warning : Parameter 'topo_update' not found in the setup file, running with default value 1 +Warning : Parameter 'surface_processes' not found in the setup file, running with default value 0 +Warning : Parameter 'marker_aniso_angle' not found in the setup file, running with default value 0 +Warning : Parameter 'smooth_softening' not found in the setup file, running with default value 1 +Warning : Parameter 'fix_temperature' not found in the setup file, running with default value 0 +Warning : Parameter 'surf_ised1' not found in the setup file, running with default value 0 +Warning : Parameter 'surf_ised2' not found in the setup file, running with default value 0 +Warning : Parameter 'therm_perturb' not found in the setup file, running with default value 0 +Warning : Parameter 'force_act_vol_ast' not found in the setup file, running with default value 0 +Warning : Parameter 'diffuse_X' not found in the setup file, running with default value 0 +Warning : Parameter 'diffuse_avg' not found in the setup file, running with default value 0 +WARNING!! Changing from solver type 0 to solver type 2!!! That's the new standard in MDOODZ 6.0. +Warning : Parameter 'deformation_maps' not found in the setup file, running with default value 0 +Warning : Parameter 'plast' not found in the setup file, running with default value 1.00 +Warning : Parameter 'yield' not found in the setup file, running with default value 1.00 +Warning : Parameter 'sig_tens' not found in the setup file, running with default value 1.00e+07 +Warning : Parameter 'sig1' not found in the setup file, running with default value 1.00e+07 +Warning : Parameter 'dsig1' not found in the setup file, running with default value 1.00e+07 +Warning : Parameter 'psi' not found in the setup file, running with default value 0.00 +Warning : Parameter 'coh_soft' not found in the setup file, running with default value 0.00 +Warning : Parameter 'phi_soft' not found in the setup file, running with default value 0.00 +Warning : Parameter 'psi_soft' not found in the setup file, running with default value 0.00 +Warning : Parameter 'Ce' not found in the setup file, running with default value 1.00e+70 +Warning : Parameter 'phie' not found in the setup file, running with default value 10.00 +Warning : Parameter 'psie' not found in the setup file, running with default value 0.00 +0 materials.coh_soft[k]=0 materials.C[k] = 1.00e+70 materials.C_end[k] = 1.00e+70 +Warning : Parameter 'plss' not found in the setup file, running with default value 1.00 +Warning : Parameter 'plse' not found in the setup file, running with default value 2.00 +Warning : Parameter 'eps0' not found in the setup file, running with default value 0.00 +Warning : Parameter 'tau0' not found in the setup file, running with default value 2.00e+06 +Warning : Parameter 'pref_pwl' not found in the setup file, running with default value 1.00 +Warning : Parameter 'gs' not found in the setup file, running with default value 0.00 +Warning : Parameter 'gs_ref' not found in the setup file, running with default value 0.00 +Warning : Parameter 'kin' not found in the setup file, running with default value 0.00 +Warning : Parameter 'phase_diagram' not found in the setup file, running with default value -1.00 +Warning : Parameter 'phase_mix' not found in the setup file, running with default value 0.00 +Warning : Parameter 'phase_mix' not found in the setup file, running with default value 0.00 +Warning : Parameter 'aniso_angle' not found in the setup file, running with default value 90.00 +Warning : Parameter 'aniso_factor' not found in the setup file, running with default value 1.00 +Warning : Parameter 'ani_fac_max' not found in the setup file, running with default value 1.00e+03 +Warning : Parameter 'ani_fstrain' not found in the setup file, running with default value 0.00 +Warning : Parameter 'axx' not found in the setup file, running with default value 1.00 +Warning : Parameter 'azz' not found in the setup file, running with default value 1.00 +Warning : Parameter 'ayy' not found in the setup file, running with default value 1.00 +Warning : Parameter 'transmutation' not found in the setup file, running with default value 0.00 +Warning : Parameter 'transmutation_phase' not found in the setup file, running with default value 1.00 +Warning : Parameter 'transmutation_temperature' not found in the setup file, running with default value 1.40e+03 +----------------------------------------- MODEL DOMAIN ------------------------------------------ +Xmin = -0.0 km Xmax = 0.0 km Nx = 201 dx = 0.01 m +Zmin = -0.0 km Zmax = 0.0 km Nz = 201 dz = 0.01 m +-------------------------------------------- PHASE: 0 ------------------------------------------- +rho = 2.85e+03 kg/m^3 G = 4.00e+10 Pa +Cv = 1.05e+03 J/kg/K k = 2.30e+00 W/m/K Qr = 0.00e+00 W/m3 +C = 1.00e+70 Pa phi = 1.00e+01 deg Slim = 5.00e+11 Pa +alp = 0.00e+00 1/T T0 = 2.73e+02 K bet = 1.25e-11 1/Pa P0 = 1.00e+05 Pa drho = 0.00e+00 kg/m^3 +prefactor for power-law: 1.00e+00 +C_end = 1.00e+70 Pa Phi_end = 1.00e+01 deg pls_start = 1.00e+00 pls_end = 2.00e+00 +eta0_vp = 5.00e+19 Pa.s^(1/n) n_vp = 1.00e+00 +aniso_factor = 1.00e+00 [] aniso_angle = 9.00e+01 deg ani_fac_max = 1.00e+03 [] ani_fstrain = 0 +Flow law settings: +---> Power law viscosity activated +'Homemade' power law flow of the form: eta = eta0 * exp(-Q/n/R/T) * Eii^(1/n - 1): +t = 0 n = 1.0 m = 0.0 r = 0.0 Q = 0.00e+00 J V = 0.00e+00 m^3 A = 1.00e-07 Pa^-n/s f = 0.00e+00 Pa a = 0.0 F = 1.00 +Warning : Parameter 'plast' not found in the setup file, running with default value 1.00 +Warning : Parameter 'yield' not found in the setup file, running with default value 1.00 +Warning : Parameter 'sig_tens' not found in the setup file, running with default value 1.00e+07 +Warning : Parameter 'sig1' not found in the setup file, running with default value 1.00e+07 +Warning : Parameter 'dsig1' not found in the setup file, running with default value 1.00e+07 +Warning : Parameter 'psi' not found in the setup file, running with default value 0.00 +Warning : Parameter 'coh_soft' not found in the setup file, running with default value 0.00 +Warning : Parameter 'phi_soft' not found in the setup file, running with default value 0.00 +Warning : Parameter 'psi_soft' not found in the setup file, running with default value 0.00 +Warning : Parameter 'Ce' not found in the setup file, running with default value 1.00e+70 +Warning : Parameter 'phie' not found in the setup file, running with default value 10.00 +Warning : Parameter 'psie' not found in the setup file, running with default value 0.00 +1 materials.coh_soft[k]=0 materials.C[k] = 1.00e+70 materials.C_end[k] = 1.00e+70 +Warning : Parameter 'plss' not found in the setup file, running with default value 1.00 +Warning : Parameter 'plse' not found in the setup file, running with default value 2.00 +Warning : Parameter 'eps0' not found in the setup file, running with default value 0.00 +Warning : Parameter 'tau0' not found in the setup file, running with default value 2.00e+06 +Warning : Parameter 'pref_pwl' not found in the setup file, running with default value 1.00 +Warning : Parameter 'gs' not found in the setup file, running with default value 0.00 +Warning : Parameter 'gs_ref' not found in the setup file, running with default value 0.00 +Warning : Parameter 'kin' not found in the setup file, running with default value 0.00 +Warning : Parameter 'phase_diagram' not found in the setup file, running with default value -1.00 +Warning : Parameter 'phase_mix' not found in the setup file, running with default value 0.00 +Warning : Parameter 'phase_mix' not found in the setup file, running with default value 1.00 +Warning : Parameter 'aniso_angle' not found in the setup file, running with default value 90.00 +Warning : Parameter 'aniso_factor' not found in the setup file, running with default value 1.00 +Warning : Parameter 'ani_fac_max' not found in the setup file, running with default value 1.00e+03 +Warning : Parameter 'ani_fstrain' not found in the setup file, running with default value 0.00 +Warning : Parameter 'axx' not found in the setup file, running with default value 1.00 +Warning : Parameter 'azz' not found in the setup file, running with default value 1.00 +Warning : Parameter 'ayy' not found in the setup file, running with default value 1.00 +Warning : Parameter 'transmutation' not found in the setup file, running with default value 0.00 +Warning : Parameter 'transmutation_phase' not found in the setup file, running with default value 1.00 +Warning : Parameter 'transmutation_temperature' not found in the setup file, running with default value 1.40e+03 +----------------------------------------- MODEL DOMAIN ------------------------------------------ +Xmin = -0.0 km Xmax = 0.0 km Nx = 201 dx = 0.01 m +Zmin = -0.0 km Zmax = 0.0 km Nz = 201 dz = 0.01 m +-------------------------------------------- PHASE: 1 ------------------------------------------- +rho = 2.85e+03 kg/m^3 G = 4.00e+10 Pa +Cv = 1.05e+03 J/kg/K k = 2.30e+00 W/m/K Qr = 0.00e+00 W/m3 +C = 1.00e+70 Pa phi = 1.00e+01 deg Slim = 5.00e+11 Pa +alp = 0.00e+00 1/T T0 = 2.73e+02 K bet = 1.25e-11 1/Pa P0 = 1.00e+05 Pa drho = 0.00e+00 kg/m^3 +prefactor for power-law: 1.00e+00 +C_end = 1.00e+70 Pa Phi_end = 1.00e+01 deg pls_start = 1.00e+00 pls_end = 2.00e+00 +eta0_vp = 5.00e+19 Pa.s^(1/n) n_vp = 1.00e+00 +aniso_factor = 1.00e+00 [] aniso_angle = 9.00e+01 deg ani_fac_max = 1.00e+03 [] ani_fstrain = 0 +Flow law settings: +---> Power law viscosity activated +'Homemade' power law flow of the form: eta = eta0 * exp(-Q/n/R/T) * Eii^(1/n - 1): +t = 0 n = 1.0 m = 0.0 r = 0.0 Q = 0.00e+00 J V = 0.00e+00 m^3 A = 1.00e-07 Pa^-n/s f = 0.00e+00 Pa a = 0.0 F = 1.00 +Warning : Parameter 'plast' not found in the setup file, running with default value 1.00 +Warning : Parameter 'yield' not found in the setup file, running with default value 1.00 +Warning : Parameter 'sig_tens' not found in the setup file, running with default value 1.00e+07 +Warning : Parameter 'sig1' not found in the setup file, running with default value 1.00e+07 +Warning : Parameter 'dsig1' not found in the setup file, running with default value 1.00e+07 +Warning : Parameter 'psi' not found in the setup file, running with default value 0.00 +Warning : Parameter 'coh_soft' not found in the setup file, running with default value 0.00 +Warning : Parameter 'phi_soft' not found in the setup file, running with default value 0.00 +Warning : Parameter 'psi_soft' not found in the setup file, running with default value 0.00 +Warning : Parameter 'Ce' not found in the setup file, running with default value 1.00e+70 +Warning : Parameter 'phie' not found in the setup file, running with default value 10.00 +Warning : Parameter 'psie' not found in the setup file, running with default value 0.00 +2 materials.coh_soft[k]=0 materials.C[k] = 1.00e+70 materials.C_end[k] = 1.00e+70 +Warning : Parameter 'plss' not found in the setup file, running with default value 1.00 +Warning : Parameter 'plse' not found in the setup file, running with default value 2.00 +Warning : Parameter 'eps0' not found in the setup file, running with default value 0.00 +Warning : Parameter 'tau0' not found in the setup file, running with default value 2.00e+06 +Warning : Parameter 'pref_pwl' not found in the setup file, running with default value 1.00 +Warning : Parameter 'gs' not found in the setup file, running with default value 0.00 +Warning : Parameter 'gs_ref' not found in the setup file, running with default value 0.00 +Warning : Parameter 'kin' not found in the setup file, running with default value 0.00 +Warning : Parameter 'phase_diagram' not found in the setup file, running with default value -1.00 +Warning : Parameter 'phase_mix' not found in the setup file, running with default value 0.00 +Warning : Parameter 'phase_mix' not found in the setup file, running with default value 2.00 +Warning : Parameter 'aniso_angle' not found in the setup file, running with default value 90.00 +Warning : Parameter 'aniso_factor' not found in the setup file, running with default value 1.00 +Warning : Parameter 'ani_fac_max' not found in the setup file, running with default value 1.00e+03 +Warning : Parameter 'ani_fstrain' not found in the setup file, running with default value 0.00 +Warning : Parameter 'axx' not found in the setup file, running with default value 1.00 +Warning : Parameter 'azz' not found in the setup file, running with default value 1.00 +Warning : Parameter 'ayy' not found in the setup file, running with default value 1.00 +Warning : Parameter 'transmutation' not found in the setup file, running with default value 0.00 +Warning : Parameter 'transmutation_phase' not found in the setup file, running with default value 1.00 +Warning : Parameter 'transmutation_temperature' not found in the setup file, running with default value 1.40e+03 +----------------------------------------- MODEL DOMAIN ------------------------------------------ +Xmin = -0.0 km Xmax = 0.0 km Nx = 201 dx = 0.01 m +Zmin = -0.0 km Zmax = 0.0 km Nz = 201 dz = 0.01 m +-------------------------------------------- PHASE: 2 ------------------------------------------- +rho = 2.85e+03 kg/m^3 G = 4.00e+10 Pa +Cv = 1.05e+03 J/kg/K k = 2.30e+00 W/m/K Qr = 0.00e+00 W/m3 +C = 1.00e+70 Pa phi = 1.00e+01 deg Slim = 5.00e+11 Pa +alp = 0.00e+00 1/T T0 = 2.73e+02 K bet = 1.25e-11 1/Pa P0 = 1.00e+05 Pa drho = 0.00e+00 kg/m^3 +prefactor for power-law: 1.00e+00 +C_end = 1.00e+70 Pa Phi_end = 1.00e+01 deg pls_start = 1.00e+00 pls_end = 2.00e+00 +eta0_vp = 5.00e+19 Pa.s^(1/n) n_vp = 1.00e+00 +aniso_factor = 1.00e+00 [] aniso_angle = 9.00e+01 deg ani_fac_max = 1.00e+03 [] ani_fstrain = 0 +Flow law settings: +---> Power law viscosity activated +'Homemade' power law flow of the form: eta = eta0 * exp(-Q/n/R/T) * Eii^(1/n - 1): +t = 0 n = 1.0 m = 0.0 r = 0.0 Q = 0.00e+00 J V = 0.00e+00 m^3 A = 1.00e-07 Pa^-n/s f = 0.00e+00 Pa a = 0.0 F = 1.00 +Warning : Parameter 'plast' not found in the setup file, running with default value 1.00 +Warning : Parameter 'yield' not found in the setup file, running with default value 1.00 +Warning : Parameter 'sig_tens' not found in the setup file, running with default value 1.00e+07 +Warning : Parameter 'sig1' not found in the setup file, running with default value 1.00e+07 +Warning : Parameter 'dsig1' not found in the setup file, running with default value 1.00e+07 +Warning : Parameter 'psi' not found in the setup file, running with default value 0.00 +Warning : Parameter 'coh_soft' not found in the setup file, running with default value 0.00 +Warning : Parameter 'phi_soft' not found in the setup file, running with default value 0.00 +Warning : Parameter 'psi_soft' not found in the setup file, running with default value 0.00 +Warning : Parameter 'Ce' not found in the setup file, running with default value 1.00e+70 +Warning : Parameter 'phie' not found in the setup file, running with default value 10.00 +Warning : Parameter 'psie' not found in the setup file, running with default value 0.00 +3 materials.coh_soft[k]=0 materials.C[k] = 1.00e+70 materials.C_end[k] = 1.00e+70 +Warning : Parameter 'plss' not found in the setup file, running with default value 1.00 +Warning : Parameter 'plse' not found in the setup file, running with default value 2.00 +Warning : Parameter 'eps0' not found in the setup file, running with default value 0.00 +Warning : Parameter 'tau0' not found in the setup file, running with default value 2.00e+06 +Warning : Parameter 'pref_pwl' not found in the setup file, running with default value 1.00 +Warning : Parameter 'gs' not found in the setup file, running with default value 0.00 +Warning : Parameter 'gs_ref' not found in the setup file, running with default value 0.00 +Warning : Parameter 'kin' not found in the setup file, running with default value 0.00 +Warning : Parameter 'phase_diagram' not found in the setup file, running with default value -1.00 +Warning : Parameter 'phase_mix' not found in the setup file, running with default value 0.00 +Warning : Parameter 'phase_mix' not found in the setup file, running with default value 3.00 +Warning : Parameter 'aniso_angle' not found in the setup file, running with default value 90.00 +Warning : Parameter 'aniso_factor' not found in the setup file, running with default value 1.00 +Warning : Parameter 'ani_fac_max' not found in the setup file, running with default value 1.00e+03 +Warning : Parameter 'ani_fstrain' not found in the setup file, running with default value 0.00 +Warning : Parameter 'axx' not found in the setup file, running with default value 1.00 +Warning : Parameter 'azz' not found in the setup file, running with default value 1.00 +Warning : Parameter 'ayy' not found in the setup file, running with default value 1.00 +Warning : Parameter 'transmutation' not found in the setup file, running with default value 0.00 +Warning : Parameter 'transmutation_phase' not found in the setup file, running with default value 1.00 +Warning : Parameter 'transmutation_temperature' not found in the setup file, running with default value 1.40e+03 +----------------------------------------- MODEL DOMAIN ------------------------------------------ +Xmin = -0.0 km Xmax = 0.0 km Nx = 201 dx = 0.01 m +Zmin = -0.0 km Zmax = 0.0 km Nz = 201 dz = 0.01 m +-------------------------------------------- PHASE: 3 ------------------------------------------- +rho = 3.25e+03 kg/m^3 G = 4.00e+10 Pa +Cv = 1.05e+03 J/kg/K k = 2.30e+00 W/m/K Qr = 0.00e+00 W/m3 +C = 1.00e+70 Pa phi = 1.00e+01 deg Slim = 5.00e+11 Pa +alp = 0.00e+00 1/T T0 = 2.73e+02 K bet = 1.25e-11 1/Pa P0 = 1.00e+05 Pa drho = 0.00e+00 kg/m^3 +prefactor for power-law: 1.00e+00 +C_end = 1.00e+70 Pa Phi_end = 1.00e+01 deg pls_start = 1.00e+00 pls_end = 2.00e+00 +eta0_vp = 5.00e+19 Pa.s^(1/n) n_vp = 1.00e+00 +aniso_factor = 1.00e+00 [] aniso_angle = 9.00e+01 deg ani_fac_max = 1.00e+03 [] ani_fstrain = 0 +Flow law settings: +---> Power law viscosity activated +'Homemade' power law flow of the form: eta = eta0 * exp(-Q/n/R/T) * Eii^(1/n - 1): +t = 0 n = 1.0 m = 0.0 r = 0.0 Q = 0.00e+00 J V = 0.00e+00 m^3 A = 1.00e-07 Pa^-n/s f = 0.00e+00 Pa a = 0.0 F = 1.00 +Phase 0 --- density model 3 +Phase 1 --- density model 3 +Phase 2 --- density model 3 +Phase 3 --- density model 3 +************************************* +****** Allocate and initialise ****** +************************************* +Allocation of grid arrays ! +Memory succesfully allocated : +Diantre, que c'est bon! +Num threads = 001 +************************************* +******* Initialize particles ******** +************************************* +VxWestSum: 0.002000, VxEastSum: -0.002000 +VzWestSum: 0.000000, VzEastSum: 0.000000: +total West+East+South sum: 0.002000 +SetBCs: Boundary conditions were set up +Initial particle spacing : dxm = 0.002500 dzm = 0.002500 m +Initial number of particles = 640000 +min(Vxp init) = -9.9875000000e-16 max(Vxp init) = 9.9875000000e-16 +min(Vzp init) = -9.9875000000e-16 max(Vzp init) = 9.9875000000e-16 +min(Tp init) = 2.7315000000e+02 max(Tp init) = 2.7315000000e+02 +USING NEW PART IN CELL +min(Vx. grid) = 0.0000000000e+00 max(Vx. grid) = 0.0000000000e+00 +min(Vz. grid) = 0.0000000000e+00 max(Vz. grid) = 0.0000000000e+00 +min( P) = 0.0000000000e+00 max( P) = 0.0000000000e+00 +VxWestSum: 0.002000, VxEastSum: -0.002000 +VzWestSum: 0.000000, VzEastSum: 0.000000: +total West+East+South sum: 0.002000 +SetBCs: Boundary conditions were set up +Velocity field was set to background pure shear +min(Vx. grid) = -1.0000000000e-15 max(Vx. grid) = 1.0000000000e-15 +min(Vz. grid) = -1.0000000000e-15 max(Vz. grid) = 1.0000000000e-15 +min( P) = 2.0000000000e+09 max( P) = 2.0000000000e+09 +************************************* +****** Initialize temperature ******* +************************************* +VxWestSum: 0.002000, VxEastSum: -0.002000 +VzWestSum: 0.000000, VzEastSum: 0.000000: +total West+East+South sum: 0.002000 +SetBCs: Boundary conditions were set up +************************************* +******** Initialize stresses ******** +************************************* + ****** set preloaded values ****** +************************************* +******** Initialize pressure ******** +************************************* +min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 +min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 +min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 +min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 +min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 +min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 +min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 +min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 +min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 +min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 +************************************* +******* Initialize grain size ******* +************************************* +************************************* +******** Initialize density ********* +************************************* +************************************* +****** Initialize composition ******* +************************************* +************************************* +******* Initialize viscosity ******** +************************************* +Number of phases : 4 +min(d0 ) = 2.0000000000e-03 max(d0 ) = 2.0000000000e-03 +min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 +min(P litho ) = 2.0000000000e+09 max(P litho ) = 2.0000000000e+09 +min(P old ) = 2.0000000000e+09 max(P old ) = 2.0000000000e+09 +min(P ) = 2.0000000000e+09 max(P ) = 2.0000000000e+09 +min(T ) = 2.7315000000e+02 max(T ) = 2.7315000000e+02 +min(mu_s ) = 4.0000000000e+10 max(mu_s ) = 4.0000000000e+10 +min(mu_n ) = 4.0000000000e+10 max(mu_n ) = 4.0000000000e+10 +min(eta_s ) = 1.0000000000e+10 max(eta_s ) = 1.0000000000e+10 +min(eta_n ) = 1.0000000000e+10 max(eta_n ) = 1.0000000000e+10 +min(eta_phys_s) = 1.0000000000e+10 max(eta_phys_s) = 1.0000000000e+10 +min(eta_phys_n) = 1.0000000000e+10 max(eta_phys_n) = 1.0000000000e+10 +min(rho_s ) = 2.9221480935e+03 max(rho_s ) = 2.9221480935e+03 +min(rho_n ) = 2.9221480935e+03 max(rho_n ) = 3.2682078983e+03 +min(X_n ) = 0.0000000000e+00 max(X_n ) = 8.4378889438e-01 +min(X0_n ) = 0.0000000000e+00 max(X0_n ) = 0.0000000000e+00 +min(X0_s ) = 0.0000000000e+00 max(X0_s ) = 0.0000000000e+00 +min(X part) = 0.0000000000e+00 max(X part) = 0.0000000000e+00 +Phase number 0: +min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 1.0000000000e+00 +min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 1.0000000000e+00 +Phase number 1: +min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 1.0000000000e+00 +min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 1.0000000000e+00 +Phase number 2: +min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 0.0000000000e+00 +min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 0.0000000000e+00 +Phase number 3: +min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 0.0000000000e+00 +min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 0.0000000000e+00 +************************************* +******** Initialize timestep ******** +************************************* +Setting initial dt to minimum Maxwell time: 2.50e-01 +min. Maxwell = 2.50e-01 s, max. Maxwell = 2.50e-01 s +Suggested dt = 2.50e-01 s, VE dt = 2.50e-01 s +Initial timestep = 2.50e-01 s +************************************* +*** Write initial file or restart *** +************************************* +***************************************************** +****************** Time step 00001 ****************** +***************************************************** +Transmutated particles = 000 +Number of particles = 640000 +Min Vxm = -1.00e-15 m/s / Max Vxm = 1.00e-15 m/s +Min Vzm = -1.00e-15 m/s / Max Vzm = 1.00e-15 m/s +Courant number = 2.00e-01 --- dtc = 2.00e+12 +Do not allow for large time step increase: dt0 = 2.50e-01 +Timestep limited by advection +Current dt = 3.12e-01 s / Courant dt = 3.12e-01 s +Selected dt = 3.12e-01 +---> Detecting compressible cells +---> 40000 compressibles cells detected +min(d0 ) = 2.0000000000e-03 max(d0 ) = 2.0000000000e-03 +min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 +min(sxxd part ) = 5.0000000000e+08 max(sxxd part ) = 5.0000000000e+08 +min(T part ) = 2.7315000000e+02 max(T part ) = 2.7315000000e+02 +min(p0_n) = 2.0000000000e+09 max(p0_n) = 2.0000000000e+09 +min(sxz0 ) = 0.0000000000e+00 max(sxz0 ) = 0.0000000000e+00 +min(sxx0 ) = 5.0000000000e+08 max(sxx0 ) = 5.0000000000e+08 +min(szz0 ) = 5.0000000000e+08 max(szz0 ) = 5.0000000000e+08 +min(mu_s ) = 4.0000000000e+10 max(mu_s ) = 4.0000000000e+10 +min(mu_n ) = 4.0000000000e+10 max(mu_n ) = 4.0000000000e+10 +min(C_s ) = 1.0000000000e+70 max(C_s ) = 1.0000000000e+70 +min(C_n ) = 1.0000000000e+70 max(C_n ) = 1.0000000000e+70 +min(fric_s ) = 1.0000000000e+01 max(fric_s ) = 1.0000000000e+01 +min(fric_n ) = 1.0000000000e+01 max(fric_n ) = 1.0000000000e+01 +min(dil_s ) = 0.0000000000e+00 max(dil_s ) = 0.0000000000e+00 +min(dil_n ) = 0.0000000000e+00 max(dil_n ) = 0.0000000000e+00 +min(strain_s) = 0.0000000000e+00 max(strain_s) = 0.0000000000e+00 +min(strain_n) = 0.0000000000e+00 max(strain_n) = 0.0000000000e+00 +min(beta_s ) = 1.2500000000e-11 max(beta_s ) = 1.2500000000e-11 +min(beta_n ) = 1.2500000000e-11 max(beta_n ) = 1.2500000000e-11 +min(T0 ) = 2.7315000000e+02 max(T0 ) = 2.7315000000e+02 +min(T ) = 2.7315000000e+02 max(T ) = 2.7315000000e+02 +min(P ) = 2.0000000000e+09 max(P ) = 2.0000000000e+09 +min(comp_cells) = 1 max(comp_cells) = 1 +min(rho_s ) = 2.9221480935e+03 max(rho_s ) = 3.2682078983e+03 +min(rho_n ) = 2.9221480935e+03 max(rho_n ) = 3.2682078983e+03 +min(rho0_n ) = 2.9221480935e+03 max(rho0_n ) = 2.9221480935e+03 +min(X0_s ) = 0.0000000000e+00 max(X0_s ) = 0.0000000000e+00 +min(X0_n ) = 0.0000000000e+00 max(X0_n ) = 0.0000000000e+00 +Phase number 0: +min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 1.0000000000e+00 +min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 1.0000000000e+00 +Phase number 1: +min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 1.0000000000e+00 +min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 1.0000000000e+00 +Phase number 2: +min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 0.0000000000e+00 +min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 0.0000000000e+00 +Phase number 3: +min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 0.0000000000e+00 +min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 0.0000000000e+00 +** Time for particles interpolations I = 0.197227 sec +VxWestSum: 0.002000, VxEastSum: -0.002000 +VzWestSum: 0.000000, VzEastSum: 0.000000: +total West+East+South sum: 0.002000 +SetBCs: Boundary conditions were set up +Velocity field was set to background pure shear +Linear systems allocated +neq_tot = 119600, neq_mom = 79600, neq_cont = 40000 +Run CHOLMOD analysis yes/no: 1 +********************************************** +*** Picard it. 00 of 30 (step = 00001) on 016 threads *** +********************************************** +min(T ) = 2.7315000000e+02 max(T ) = 2.7315000000e+02 +min(P old ) = 2.0000000000e+09 max(P old ) = 2.0000000000e+09 +min(P ) = 2.0000000000e+09 max(P ) = 2.0000000000e+09 +min(div ) = -1.6940658945e-29 max(div ) = 1.6940658945e-29 +min(exxd ) = -1.0000000000e-15 max(exxd ) = -1.0000000000e-15 +min(ezzd ) = 1.0000000000e-15 max(ezzd ) = 1.0000000000e-15 +min(exz ) = 0.0000000000e+00 max(exz ) = 0.0000000000e+00 +min(sxxd ) = 4.0000000000e+08 max(sxxd ) = 4.0000000000e+08 +min(szzd ) = 4.0000000000e+08 max(szzd ) = 4.0000000000e+08 +min(sxz ) = 0.0000000000e+00 max(sxz ) = 0.0000000000e+00 +min(eta_s ) = 1.0000000000e+10 max(eta_s ) = 1.0000000000e+10 +min(eta_n ) = 1.0000000000e+10 max(eta_n ) = 1.0000000000e+10 +min(eta_phys_s) = 1.0000000000e+10 max(eta_phys_s) = 1.0000000000e+10 +min(eta_phys_n) = 1.0000000000e+10 max(eta_phys_n) = 1.0000000000e+10 +min(rho_s ) = 2.9221480935e+03 max(rho_s ) = 3.2682078983e+03 +min(rho_n ) = 2.9221480935e+03 max(rho_n ) = 2.9221480935e+03 +min(rho0_n ) = 2.9221480935e+03 max(rho0_n ) = 2.9221480935e+03 +min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 +min(X_s ) = 0.0000000000e+00 max(X_s ) = 8.3555367725e-11 +min(X_n ) = 0.0000000000e+00 max(X_n ) = 8.3555367725e-11 +Number of momentum equations: 79600 +---- Non-linear residual ---- +Fu abs. = 4.412238e-15 --- Fu rel. = 1.000000e+00 +Fv abs. = 4.755138e-15 --- Fv rel. = 1.000000e+00 +Fp abs. = 3.298896e-06 --- Fp rel. = 1.000000e+00 +---- Non-linear residual ---- +---- Solve Stokes in a decoupled/segregated fashion and defect correction mode, lin_solver = 2 ---- +Killer solver... +Preparing Matrices... +Penalty factor = 4.00e+06 +Construct preconditioner: PC = 1/2 * (J'+ J) +Compute Schur complement 1: Jt = J - grad*(PPI*div) +Compute Schur complement 2: Jts = PC - grad*(PPI*div) +Cholesky factors of Jts... +** Time for Cholesky analysis = 0.433468 sec +Powell-Hestenes iterations, noisy = 1... +Initial residual: +Fu = 4.586893e-15 +Fp = 3.298896e-06 +PH comp it. 0. its_KSP = 01: max. cont. = 5.29e-23 - rel. max. div. = 1.00e+00 / max. mom. = 1.24e-21 - rel. max. mom. = 1.00e+00 +PH comp it. 1. its_KSP = 01: max. cont. = 0.00e+00 - rel. max. div. = 0.00e+00 / max. mom. = 6.53e-22 - rel. max. mom. = 5.28e-01 +PH comp it. 2. its_KSP = 01: max. cont. = 0.00e+00 - rel. max. div. = 0.00e+00 / max. mom. = 7.21e-22 - rel. max. mom. = 5.83e-01 +** PH - iterations = 0.857229 sec - its_KSP_tot = 03 +Fu = 5.904833e-23 +Fv = 5.956773e-23 +Fp = 0.000000e+00 +** Time for direct Stokes solver = 0.874838 sec +---- Line search for decoupled Stokes equations ---- +Alpha = -0.000000 --> rx = 4.4122e-15 rz = 4.7551e-15 rp = 3.2989e-06 +Alpha = -0.500000 --> rx = 7.5586e-15 rz = 7.6601e-15 rp = 1.6494e-06 +Alpha = -1.000000 --> rx = 4.9634e-15 rz = 4.8336e-15 rp = 7.7629e-09 +Alpha = -1.500000 --> rx = 9.1114e-15 rz = 9.0753e-15 rp = 1.6496e-06 +Alpha = -2.000000 --> rx = 5.8116e-15 rz = 7.8548e-15 rp = 3.2991e-06 +Alpha = -2.500000 --> rx = 1.0388e-14 rz = 1.0428e-14 rp = 4.9486e-06 +Predicted Residuals : alpha = -1.000000 --> rx = 4.9634e-15 rz = 4.8336e-15 rp = 7.7629e-09 +** Line search took = 0.955470 sec +input.model.Newton = 0 --- 0 +********************************************** +*** Picard it. 01 of 30 (step = 00001) on 016 threads *** +********************************************** +min(T ) = 2.7315000000e+02 max(T ) = 2.7315000000e+02 +min(P old ) = 2.0000000000e+09 max(P old ) = 2.0000000000e+09 +min(P ) = 1.9999999997e+09 max(P ) = 2.0000000000e+09 +min(div ) = -2.3716103447e-11 max(div ) = 7.6611923318e-13 +min(exxd ) = -1.0868142076e-11 max(exxd ) = 1.1121512825e-11 +min(ezzd ) = -1.0866140644e-11 max(ezzd ) = 1.1123513917e-11 +min(exz ) = -8.0480814522e-12 max(exz ) = 1.3949259419e-11 +min(sxxd ) = 3.9999999978e+08 max(sxxd ) = 4.0000000022e+08 +min(szzd ) = 3.9999999978e+08 max(szzd ) = 4.0000000022e+08 +min(sxz ) = -1.6096162904e-01 max(sxz ) = 2.7898518837e-01 +min(eta_s ) = 1.0000000000e+10 max(eta_s ) = 1.0000000000e+10 +min(eta_n ) = 1.0000000000e+10 max(eta_n ) = 1.0000000000e+10 +min(eta_phys_s) = 1.0000000000e+10 max(eta_phys_s) = 1.0000000000e+10 +min(eta_phys_n) = 1.0000000000e+10 max(eta_phys_n) = 1.0000000000e+10 +min(rho_s ) = 2.9221480935e+03 max(rho_s ) = 3.2682078983e+03 +min(rho_n ) = 2.9221480935e+03 max(rho_n ) = 2.9221480935e+03 +min(rho0_n ) = 2.9221480935e+03 max(rho0_n ) = 2.9221480935e+03 +min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 +min(X_s ) = 0.0000000000e+00 max(X_s ) = 8.3555367713e-11 +min(X_n ) = 0.0000000000e+00 max(X_n ) = 8.3555367709e-11 +Number of momentum equations: 79600 +---- Non-linear residual ---- +Fu abs. = 4.963389e-15 --- Fu rel. = 1.124914e+00 +Fv abs. = 4.833638e-15 --- Fv rel. = 1.016509e+00 +Fp abs. = 7.762895e-09 --- Fp rel. = 2.353180e-03 +---- Non-linear residual ---- +---- Solve Stokes in a decoupled/segregated fashion and defect correction mode, lin_solver = 2 ---- +Killer solver... +Preparing Matrices... +Penalty factor = 4.00e+06 +Construct preconditioner: PC = 1/2 * (J'+ J) +Compute Schur complement 1: Jt = J - grad*(PPI*div) +Compute Schur complement 2: Jts = PC - grad*(PPI*div) +Cholesky factors of Jts... +Powell-Hestenes iterations, noisy = 1... +Initial residual: +Fu = 4.898943e-15 +Fp = 7.762895e-09 +PH comp it. 0. its_KSP = 01: max. cont. = 1.65e-24 - rel. max. div. = 1.00e+00 / max. mom. = 5.36e-25 - rel. max. mom. = 1.00e+00 +PH comp it. 1. its_KSP = 01: max. cont. = 0.00e+00 - rel. max. div. = 0.00e+00 / max. mom. = 2.78e-25 - rel. max. mom. = 5.18e-01 +PH comp it. 2. its_KSP = 01: max. cont. = 0.00e+00 - rel. max. div. = 0.00e+00 / max. mom. = 3.30e-25 - rel. max. mom. = 6.14e-01 +** PH - iterations = 0.495379 sec - its_KSP_tot = 03 +Fu = 2.902468e-26 +Fv = 3.006329e-26 +Fp = 0.000000e+00 +** Time for direct Stokes solver = 0.513833 sec +---- Line search for decoupled Stokes equations ---- +Alpha = -0.000000 --> rx = 4.9634e-15 rz = 4.8336e-15 rp = 7.7629e-09 +Alpha = -0.500000 --> rx = 1.2496e-14 rz = 1.2544e-14 rp = 3.5393e-09 +Alpha = -1.000000 --> rx = 7.0466e-15 rz = 7.4386e-15 rp = 3.7853e-09 +Alpha = -1.500000 --> rx = 1.3311e-14 rz = 1.3390e-14 rp = 3.7664e-09 +Alpha = -2.000000 --> rx = 9.5495e-15 rz = 9.5963e-15 rp = 1.4968e-08 +Alpha = -2.500000 --> rx = 1.6496e-14 rz = 1.6228e-14 rp = 1.5064e-08 +Predicted Residuals : alpha = -0.500000 --> rx = 1.2496e-14 rz = 1.2544e-14 rp = 3.5393e-09 +** Line search took = 0.588482 sec +input.model.Newton = 0 --- 1 +********************************************** +*** Newton it. 02 of 30 (step = 00001) on 016 threads *** +********************************************** +min(T ) = 2.7315000000e+02 max(T ) = 2.7315000000e+02 +min(P old ) = 2.0000000000e+09 max(P old ) = 2.0000000000e+09 +min(P ) = 1.9999999997e+09 max(P ) = 2.0000000000e+09 +min(div ) = -2.3710804509e-11 max(div ) = 7.6593599452e-13 +min(exxd ) = -1.0867554888e-11 max(exxd ) = 1.1120861002e-11 +min(ezzd ) = -1.0865549785e-11 max(ezzd ) = 1.1122865509e-11 +min(exz ) = -8.0458996198e-12 max(exz ) = 1.3945369588e-11 +min(sxxd ) = 3.9999999978e+08 max(sxxd ) = 4.0000000022e+08 +min(szzd ) = 3.9999999978e+08 max(szzd ) = 4.0000000022e+08 +min(sxz ) = -1.6091799240e-01 max(sxz ) = 2.7890739176e-01 +min(eta_s ) = 1.0000000000e+10 max(eta_s ) = 1.0000000000e+10 +min(eta_n ) = 1.0000000000e+10 max(eta_n ) = 1.0000000000e+10 +min(eta_phys_s) = 1.0000000000e+10 max(eta_phys_s) = 1.0000000000e+10 +min(eta_phys_n) = 1.0000000000e+10 max(eta_phys_n) = 1.0000000000e+10 +min(rho_s ) = 2.9221480935e+03 max(rho_s ) = 3.2682078983e+03 +min(rho_n ) = 2.9221480935e+03 max(rho_n ) = 2.9221480935e+03 +min(rho0_n ) = 2.9221480935e+03 max(rho0_n ) = 2.9221480935e+03 +min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 +min(X_s ) = 0.0000000000e+00 max(X_s ) = 8.3555367713e-11 +min(X_n ) = 0.0000000000e+00 max(X_n ) = 8.3555367709e-11 +Number of momentum equations: 79600 +---- Non-linear residual ---- +Fu abs. = 1.249632e-14 --- Fu rel. = 2.832195e+00 +Fv abs. = 1.254389e-14 --- Fv rel. = 2.637965e+00 +Fp abs. = 3.539259e-09 --- Fp rel. = 1.072862e-03 +---- Non-linear residual ---- +---- Solve Stokes in a decoupled/segregated fashion and defect correction mode, lin_solver = 2 ---- +Killer solver... +Preparing Matrices... +Penalty factor = 4.00e+06 +Construct preconditioner: PC = 1/2 * (J'+ J) +Compute Schur complement 1: Jt = J - grad*(PPI*div) +Compute Schur complement 2: Jts = PC - grad*(PPI*div) +Cholesky factors of Jts... +** Time for Cholesky analysis = 0.909565 sec +Powell-Hestenes iterations, noisy = 1... +Initial residual: +Fu = 1.252013e-14 +Fp = 3.539259e-09 +PH comp it. 0. its_KSP = 02: max. cont. = 8.27e-25 - rel. max. div. = 1.00e+00 / max. mom. = 8.04e-15 - rel. max. mom. = 1.00e+00 +PH comp it. 1. its_KSP = 02: max. cont. = 8.27e-25 - rel. max. div. = 1.00e+00 / max. mom. = 2.28e-19 - rel. max. mom. = 2.84e-05 +PH comp it. 2. its_KSP = 02: max. cont. = 4.14e-25 - rel. max. div. = 5.00e-01 / max. mom. = 2.14e-23 - rel. max. mom. = 2.66e-09 +** PH - iterations = 0.799232 sec - its_KSP_tot = 06 +Fu = 2.434197e-25 +Fv = 2.495852e-25 +Fp = 6.858619e-27 +** Time for direct Stokes solver = 1.829930 sec +---- Line search for decoupled Stokes equations ---- +Alpha = -0.000000 --> rx = 1.2496e-14 rz = 1.2544e-14 rp = 3.5393e-09 +Alpha = -0.200000 --> rx = 1.1710e-14 rz = 1.1743e-14 rp = 3.5012e-09 +Alpha = -0.400000 --> rx = 1.1016e-14 rz = 1.1031e-14 rp = 3.4719e-09 +Alpha = -0.600000 --> rx = 1.0451e-14 rz = 1.0474e-14 rp = 7.7397e-09 +Alpha = -0.800000 --> rx = 7.8611e-15 rz = 7.9228e-15 rp = 7.7644e-09 +Alpha = -1.000000 --> rx = 8.5879e-15 rz = 8.9604e-15 rp = 7.7908e-09 +Predicted Residuals : alpha = -0.400000 --> rx = 1.1016e-14 rz = 1.1031e-14 rp = 3.4719e-09 +** Line search took = 0.934472 sec +input.model.Newton = 1 --- 1 +********************************************** +*** Newton it. 03 of 30 (step = 00001) on 016 threads *** +********************************************** +min(T ) = 2.7315000000e+02 max(T ) = 2.7315000000e+02 +min(P old ) = 2.0000000000e+09 max(P old ) = 2.0000000000e+09 +min(P ) = 1.9999999997e+09 max(P ) = 2.0000000000e+09 +min(div ) = -2.3713688324e-11 max(div ) = 7.6602832090e-13 +min(exxd ) = -1.0867716270e-11 max(exxd ) = 1.1121056094e-11 +min(ezzd ) = -1.0865714466e-11 max(ezzd ) = 1.1123057758e-11 +min(exz ) = -8.0467676444e-12 max(exz ) = 1.3947197242e-11 +min(sxxd ) = 3.9999999978e+08 max(sxxd ) = 4.0000000022e+08 +min(szzd ) = 3.9999999978e+08 max(szzd ) = 4.0000000022e+08 +min(sxz ) = -1.6093535289e-01 max(sxz ) = 2.7894394484e-01 +min(eta_s ) = 1.0000000000e+10 max(eta_s ) = 1.0000000000e+10 +min(eta_n ) = 1.0000000000e+10 max(eta_n ) = 1.0000000000e+10 +min(eta_phys_s) = 1.0000000000e+10 max(eta_phys_s) = 1.0000000000e+10 +min(eta_phys_n) = 1.0000000000e+10 max(eta_phys_n) = 1.0000000000e+10 +min(rho_s ) = 2.9221480935e+03 max(rho_s ) = 3.2682078983e+03 +min(rho_n ) = 2.9221480935e+03 max(rho_n ) = 2.9221480935e+03 +min(rho0_n ) = 2.9221480935e+03 max(rho0_n ) = 2.9221480935e+03 +min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 +min(X_s ) = 0.0000000000e+00 max(X_s ) = 8.3555367713e-11 +min(X_n ) = 0.0000000000e+00 max(X_n ) = 8.3555367709e-11 +Number of momentum equations: 79600 +---- Non-linear residual ---- +Fu abs. = 1.101573e-14 --- Fu rel. = 2.496632e+00 +Fv abs. = 1.103127e-14 --- Fv rel. = 2.319863e+00 +Fp abs. = 3.471947e-09 --- Fp rel. = 1.052457e-03 +---- Non-linear residual ---- +---- Solve Stokes in a decoupled/segregated fashion and defect correction mode, lin_solver = 2 ---- +Killer solver... +Preparing Matrices... +Penalty factor = 4.00e+06 +Construct preconditioner: PC = 1/2 * (J'+ J) +Compute Schur complement 1: Jt = J - grad*(PPI*div) +Compute Schur complement 2: Jts = PC - grad*(PPI*div) +Cholesky factors of Jts... +Powell-Hestenes iterations, noisy = 1... +Initial residual: +Fu = 1.102350e-14 +Fp = 3.471947e-09 +PH comp it. 0. its_KSP = 02: max. cont. = 4.14e-25 - rel. max. div. = 1.00e+00 / max. mom. = 1.97e-14 - rel. max. mom. = 1.00e+00 +PH comp it. 1. its_KSP = 02: max. cont. = 8.27e-25 - rel. max. div. = 2.00e+00 / max. mom. = 3.67e-18 - rel. max. mom. = 1.87e-04 +PH comp it. 2. its_KSP = 02: max. cont. = 4.14e-25 - rel. max. div. = 1.00e+00 / max. mom. = 1.21e-21 - rel. max. mom. = 6.12e-08 +** PH - iterations = 0.502711 sec - its_KSP_tot = 06 +Fu = 1.278049e-23 +Fv = 1.256878e-23 +Fp = 1.194119e-26 +** Time for direct Stokes solver = 1.532827 sec +---- Line search for decoupled Stokes equations ---- +Alpha = -0.000000 --> rx = 1.1016e-14 rz = 1.1031e-14 rp = 3.4719e-09 +Alpha = -0.200000 --> rx = 1.0593e-14 rz = 1.0602e-14 rp = 7.7340e-09 +Alpha = -0.400000 --> rx = 1.0399e-14 rz = 1.0401e-14 rp = 7.7522e-09 +Alpha = -0.600000 --> rx = 1.0141e-14 rz = 1.0255e-14 rp = 7.7711e-09 +Alpha = -0.800000 --> rx = 9.0580e-15 rz = 9.3831e-15 rp = 7.7924e-09 +Alpha = -1.000000 --> rx = 1.0528e-14 rz = 1.0585e-14 rp = 7.8141e-09 +Predicted Residuals : alpha = -0.000000 --> rx = 1.1016e-14 rz = 1.1031e-14 rp = 3.4719e-09 +Found minimum of the function -- cannot iterate further down +Stagnating... +!** Line search took = 0.639096 sec +WARNING : Non-linear solver stagnated (nonlin_abs_mom = 1.00e-09 nonlin_abs_div = 1.00e-09) +WARNING : Non-linear solver stagnated (nonlin_rel_mom = 1.00e-09 nonlin_rel_div = 1.00e-09) +Reducing the timestep, and restart the iterations cycle... +Before reduction: input.model.dt =, 3.12e-01 +Timestep divided by 2.00 => NEW CURRENT input.model.dt =, 1.56e-01 +Restart solutions +nstag value = 01 - max_num_stag = 10 +********************************************** +*** Newton it. 00 of 30 (step = 00001) on 016 threads *** +********************************************** +min(T ) = 2.7315000000e+02 max(T ) = 2.7315000000e+02 +min(P old ) = 2.0000000000e+09 max(P old ) = 2.0000000000e+09 +min(P ) = 2.0000000000e+09 max(P ) = 2.0000000000e+09 +min(div ) = -1.6940658945e-29 max(div ) = 1.6940658945e-29 +min(exxd ) = -1.0000000000e-15 max(exxd ) = -1.0000000000e-15 +min(ezzd ) = 1.0000000000e-15 max(ezzd ) = 1.0000000000e-15 +min(exz ) = 0.0000000000e+00 max(exz ) = 0.0000000000e+00 +min(sxxd ) = 8.0000000000e+08 max(sxxd ) = 8.0000000000e+08 +min(szzd ) = 8.0000000000e+08 max(szzd ) = 8.0000000000e+08 +min(sxz ) = 0.0000000000e+00 max(sxz ) = 0.0000000000e+00 +min(eta_s ) = 1.0000000000e+10 max(eta_s ) = 1.0000000000e+10 +min(eta_n ) = 1.0000000000e+10 max(eta_n ) = 1.0000000000e+10 +min(eta_phys_s) = 1.0000000000e+10 max(eta_phys_s) = 1.0000000000e+10 +min(eta_phys_n) = 1.0000000000e+10 max(eta_phys_n) = 1.0000000000e+10 +min(rho_s ) = 2.9221480935e+03 max(rho_s ) = 3.2682078983e+03 +min(rho_n ) = 2.9221480935e+03 max(rho_n ) = 2.9221480935e+03 +min(rho0_n ) = 2.9221480935e+03 max(rho0_n ) = 2.9221480935e+03 +min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 +min(X_s ) = 0.0000000000e+00 max(X_s ) = 4.1777683865e-11 +min(X_n ) = 0.0000000000e+00 max(X_n ) = 4.1777683865e-11 +Number of momentum equations: 79600 +---- Non-linear residual ---- +Fu abs. = 8.508155e-15 --- Fu rel. = 1.000000e+00 +Fv abs. = 7.623295e-15 --- Fv rel. = 1.000000e+00 +Fp abs. = 3.300879e-06 --- Fp rel. = 1.000000e+00 +---- Non-linear residual ---- +---- Solve Stokes in a decoupled/segregated fashion and defect correction mode, lin_solver = 2 ---- +Killer solver... +Preparing Matrices... +Penalty factor = 4.00e+06 +Construct preconditioner: PC = 1/2 * (J'+ J) +Compute Schur complement 1: Jt = J - grad*(PPI*div) +Compute Schur complement 2: Jts = PC - grad*(PPI*div) +Cholesky factors of Jts... +CHOLMOD warning: matrix not positive definite. file: /tmp/suite-sparse-20240125-4352-4573qi/SuiteSparse-7.6.0/CHOLMOD/Supernodal/t_cholmod_super_numeric_worker.c line: 1090 +CHOLDMOD failed because the matrix is not positive definite... +MDoodz7.0 has to stop... +Viscosity or diagonal elements of the tangent matrix are probably negative! From 0462658c69888b2680c3e20388e16aaf4ed05b5b Mon Sep 17 00:00:00 2001 From: mthielma Date: Tue, 20 Feb 2024 12:21:09 +0100 Subject: [PATCH 03/21] finished stress preloading Running MDOODZ with the set "Shrinking_preload" works now. However, during the first Picard iteration, stresses are significantly reduced. I am not sure whether this is a physical or numerical issue... --- MDLIB/Main_DOODZ.c | 16 +- MDLIB/Setup.c | 7 +- MDLIB/include/mdoodz.h | 6 + SETS/Shrinking_preload.c | 80 +++ SETS/Shrinking_preload.txt | 253 ++++++++ TestShrinking.txt | 1114 ++++++++++++++++++++++++++++++++++++ 6 files changed, 1469 insertions(+), 7 deletions(-) create mode 100644 SETS/Shrinking_preload.c create mode 100644 SETS/Shrinking_preload.txt create mode 100644 TestShrinking.txt diff --git a/MDLIB/Main_DOODZ.c b/MDLIB/Main_DOODZ.c index cd3b40a0..fec01db4 100755 --- a/MDLIB/Main_DOODZ.c +++ b/MDLIB/Main_DOODZ.c @@ -158,6 +158,11 @@ void RunMDOODZ(char *inputFileName, MdoodzSetup *setup) { MinMaxArray(particles.Vx, input.scaling.V, particles.Nb_part, "Vxp init" ); MinMaxArray(particles.Vz, input.scaling.V, particles.Nb_part, "Vzp init" ); MinMaxArray(particles.T, input.scaling.T, particles.Nb_part, "Tp init" ); + MinMaxArray(particles.sxxd, input.scaling.S, particles.Nb_part, "sxxd part "); + MinMaxArray(particles.szzd, input.scaling.S, particles.Nb_part, "szzd part "); + MinMaxArray(particles.sxxd, input.scaling.S, particles.Nb_part, "sxz part "); + + if (input.model.free_surface == 1 ) CleanUpSurfaceParticles( &particles, &mesh, topo, input.scaling ); @@ -228,13 +233,12 @@ void RunMDOODZ(char *inputFileName, MdoodzSetup *setup) { printf("*************************************\n"); // stresses on particles should have been set in SetParticles, so here we only have to interpolate to the mesh - P2Mastah( &input.model, particles, particles.sxxd0, &mesh, mesh.sxxd, mesh.BCp.type, 1, 0, interp, cent, input.model.interp_stencil); - P2Mastah( &input.model, particles, particles.szzd0, &mesh, mesh.szzd, mesh.BCp.type, 1, 0, interp, cent, input.model.interp_stencil); - P2Mastah( &input.model, particles, particles.sxz0, &mesh, mesh.sxz, mesh.BCg.type, 1, 0, interp, vert, input.model.interp_stencil); + P2Mastah( &input.model, particles, particles.sxxd, &mesh, mesh.sxxd0, mesh.BCp.type, 1, 0, interp, cent, input.model.interp_stencil); + P2Mastah( &input.model, particles, particles.szzd, &mesh, mesh.szzd0, mesh.BCp.type, 1, 0, interp, cent, input.model.interp_stencil); + P2Mastah( &input.model, particles, particles.sxz, &mesh, mesh.sxz0, mesh.BCg.type, 1, 0, interp, vert, input.model.interp_stencil); - // P2Mastah( &input.model, particles, particles.sxxd, &mesh, mesh.sxxd, mesh.BCp.type, 1, 0, interp, cent, input.model.interp_stencil); - // P2Mastah( &input.model, particles, particles.szzd, &mesh, mesh.szzd, mesh.BCp.type, 1, 0, interp, cent, input.model.interp_stencil); - //P2Mastah( &input.model, particles, particles.sxz, &mesh, mesh.sxz, mesh.BCg.type, 1, 0, interp, vert, input.model.interp_stencil); + MinMaxArrayTag( mesh.sxxd0, input.scaling.S, (mesh.Nx-1)*(mesh.Nz-1), "Sxx initial ", mesh.BCp.type ); + MinMaxArrayTag( mesh.szzd0, input.scaling.S, (mesh.Nx-1)*(mesh.Nz-1), "Szz initial ", mesh.BCp.type ); printf("*************************************\n"); diff --git a/MDLIB/Setup.c b/MDLIB/Setup.c index 981e168c..58b179ca 100644 --- a/MDLIB/Setup.c +++ b/MDLIB/Setup.c @@ -106,7 +106,12 @@ void SetParticles(SetParticles_ff setParticles, MdoodzInput *instance, markers * particles->szzd[np] = setParticles.SetTzz(instance, coordinates, particles->phase[np]); } else { particles->szzd[np] = 0.0; - } + } + if (setParticles.SetTxz) { + particles->sxz[np] = setParticles.SetTxz(instance, coordinates, particles->phase[np]); + } else { + particles->sxz[np] = 0.0; + } if (setParticles.SetNoise) { particles->noise[np] = setParticles.SetNoise(instance, coordinates, particles->phase[np]); } else { diff --git a/MDLIB/include/mdoodz.h b/MDLIB/include/mdoodz.h index ff2bc973..4765d421 100644 --- a/MDLIB/include/mdoodz.h +++ b/MDLIB/include/mdoodz.h @@ -185,6 +185,9 @@ typedef double (*SetPorosity_f)(MdoodzInput *input, Coordinates coordinates, int typedef double (*SetDensity_f)(MdoodzInput *input, Coordinates coordinates, int phase); typedef double (*SetXComponent_f)(MdoodzInput *input, Coordinates coordinates, int phase); typedef double (*SetPressure_f)(MdoodzInput *input, Coordinates coordinates, int phase); +typedef double (*SetTxx_f)(MdoodzInput *input, Coordinates coordinates, int phase); +typedef double (*SetTzz_f)(MdoodzInput *input, Coordinates coordinates, int phase); +typedef double (*SetTxz_f)(MdoodzInput *input, Coordinates coordinates, int phase); typedef double (*SetNoise_f)(MdoodzInput *input, Coordinates coordinates, int phase); typedef double (*SetAnisoAngle_f)(MdoodzInput *input, Coordinates coordinates, int phase); typedef Tensor2D (*SetDefGrad_f)(MdoodzInput *input, Coordinates coordinates, int phase); @@ -195,6 +198,9 @@ typedef struct { SetPhase_f SetPhase; SetDualPhase_f SetDualPhase; SetPressure_f SetPressure; + SetTxx_f SetTxx; + SetTzz_f SetTzz; + SetTxz_f SetTxz; SetNoise_f SetNoise; SetTemperature_f SetTemperature; SetGrainSize_f SetGrainSize; diff --git a/SETS/Shrinking_preload.c b/SETS/Shrinking_preload.c new file mode 100644 index 00000000..7f44ea66 --- /dev/null +++ b/SETS/Shrinking_preload.c @@ -0,0 +1,80 @@ +#include "mdoodz.h" +#include "math.h" + +int SetPhase(MdoodzInput *input, Coordinates coordinates) { + const double radius = 0.01 / input->scaling.L; + if (coordinates.x * coordinates.x + coordinates.z * coordinates.z < radius * radius) { + return 1; + } else { + return 0; + } +} + +int SetDualPhase(MdoodzInput *input, Coordinates coordinate, int phase) { + + int dual_phase = phase; + double Lx = input->model.xmax - input->model.xmin; + double Lz = input->model.zmax - input->model.zmin; + double Ax, Az; + + // Set checkerboard for phase 0 + Ax = cos( 6.0*2.0*M_PI*coordinate.x / Lx ); + Az = sin( 6.0*2.0*M_PI*coordinate.z / Lz ); + if ( ( (Az<0.0 && Ax<0.0) || (Az>0.0 && Ax>0.0) ) && dual_phase==0 ) { + dual_phase += input->model.Nb_phases; + } + + // Set checkerboard for phase 1 + Ax = cos( 24.0*2.0*M_PI*coordinate.x / Lx ); + Az = sin( 24.0*2.0*M_PI*coordinate.z / Lz ); + if ( ( (Az<0.0 && Ax<0.0) || (Az>0.0 && Ax>0.0) ) && dual_phase==1 ) { + dual_phase += input->model.Nb_phases; + } + + return dual_phase; +} + +double SetDensity(MdoodzInput *input, Coordinates coordinates, int phase) { + const double T_init = (input->model.user0 + zeroC) / input->scaling.T; + const double P_init = (input->model.bkg_pressure ) / input->scaling.S; + if (1 == 0) { + return input->materials.rho[phase] * exp(input->materials.bet[phase]*P_init - input->materials.alp[phase] * T_init); + } else { + return input->materials.rho[phase]; + } +} + +double SetPressure(MdoodzInput *input, Coordinates coordinates, int phase) { + return input->model.bkg_pressure; +} + +double SetTxx(MdoodzInput *input, Coordinates coordinates, int phase) { + return input->model.preload_sxxd; +} + +double SetTzz(MdoodzInput *input, Coordinates coordinates, int phase) { + return input->model.preload_szzd; +} + +double SetTxz(MdoodzInput *input, Coordinates coordinates, int phase) { + return input->model.preload_sxz; +} + +int main() { + MdoodzSetup setup = { + .SetParticles = &(SetParticles_ff){ + .SetPhase = SetPhase, + .SetDualPhase = SetDualPhase, + .SetDensity = SetDensity, + .SetPressure = SetPressure, + .SetTxx = SetTxx, + .SetTzz = SetTzz, + .SetTxz = SetTxz, + }, + .SetBCs = &(SetBCs_ff){ + .SetBCVx = SetPureOrSimpleShearBCVx, + .SetBCVz = SetPureOrSimpleShearBCVz, + }, + }; + RunMDOODZ("Shrinking_preload.txt", &setup); +} diff --git a/SETS/Shrinking_preload.txt b/SETS/Shrinking_preload.txt new file mode 100644 index 00000000..fa660d88 --- /dev/null +++ b/SETS/Shrinking_preload.txt @@ -0,0 +1,253 @@ +/**** RESTART ****/ +istep = 00000 +irestart = 0 + +/**** OUTPUT FILES ****/ +writer = 1 +writer_step = 1 +writer_markers = 0 +writer_debug = 0 +writer_energies = 0 +noisy = 1 + +/**** SCALES ****/ +eta = 1e15 +L = 0.1 +V = 1.0e-10 +T = 700 + +/**** SPACE-TIME ****/ +Nx = 64 +Nz = 64 +Nt = 5 +xmin =-0.05 +zmin =-0.05 +xmax = 0.05 +zmax = 0.05 +advection = 1 +dt = 1e3 +constant_dt = 0 +Courant = 0.2 +penalty = 1e2 +lin_solver = 2 +diag_scaling = 0 +gnuplot_log_res = 0 +preconditioner = 1 +eta_average = 0 +num_deriv = 0 +stress_rotation = 1 +safe_mode = 1 +safe_dt_div = 2.0 +max_num_stag = 10 +IncrementalUpdateGrid = 1 + +/**** SWITCHES ****/ +compressible = 1 +elastic = 1 +mechanical = 1 +RK = 4 +periodic_x = 0 +pure_shear_ALE = 0 +thermal = 0 +line_search = 1 +free_surface = 0 +free_surface_stab = 0 + +initial_cooling = 0 +subgrid_diffusion = 1 +shear_heating = 0 +adiab_heating = 0 +finite_strain = 0 + +/*** CHEMICAL ***/ +chemical_diffusion = 0 / +no_return = 0 +density_variations = 1 / renamed in MD7.0 (VolChangeReac) +unsplit_diff_reac = 0 + +/**** SETUP DEPENDANT ****/ +shear_style = 0 +bkg_strain_rate = 0.0e-12 +bkg_pressure = 2.0e9 +user0 = 680.0 / temperature [°C] +user1 = 3.1558e9 +user2 = 10.0 +user3 = 0 + +/**** STRESS PRELOADING ****/ +preload_sxxd = -1e8 / negative if positive pure shear strain rate!!! +preload_szzd = 1e8 +preload_sxz = 0.0e8 + +/**** GRAVITY ****/ +gx = 0.0000 +gz = 0.0000 + +/**** MAT PROPERTIES ****/ +Nb_phases = 4 + +/**** PHASE 0 ****/ +ID = 0 +rho = 2850.00 / matrix Granulite +G = 4.0e10 +Cv = 1050.0 +k = 2.3 +Qr = 0.0 +C = 1.0e70 +phi = 10.0 +eta_vp = 5.0e19 +n_vp = 1.0 +Slim = 500e9 +alp = 0.0e-6 +bet = 1.25e-11 / (K=80e9) +drho = 0 +cstv = 0 / constant visc law +pwlv = 1 / disloc. creep +linv = 0 / diff. creep +gbsv = 0 / grain boundary sliding +expv = 0 / peierls creep +gsel = 0 / grain size evo. +eta0 = 1.0e25 +npwl = 1.0 +Qpwl = 0 +reac_soft = 1 +reac_phase = 0 +Pr = 1.0e80 +dPr = 700.0e6 +tau_kin = 3.1558e9 +k_chem = 5.0e-26 +density_model = 3 + +/**** PHASE 1 ****/ +ID = 1 +rho = 2850.00 / Dry CPX inclusion +G = 4.0e10 +Cv = 1050.0 +k = 2.3 +Qr = 0.0 +C = 1.0e70 +phi = 10.0 +eta_vp = 5.0e19 +n_vp = 1.0 +Slim = 500e9 +alp = 0.0e-6 +bet = 1.25e-11 / (K=80e9) +drho = 0 +cstv = 0 / constant visc law +pwlv = 1 / disloc. creep +linv = 0 / diff. creep +gbsv = 0 / grain boundary sliding +expv = 0 / peierls creep +gsel = 0 / grain size evo. +eta0 = 1.0e25 +npwl = 1.0 +Qpwl = 0 +reac_soft = 1 +reac_phase = 3 +Pr = 1.5e9 +dPr = 700.0e6 +tau_kin = 3.1558e9 +k_chem = 5.0e-26 +density_model = 3 + +/**** PHASE 2 ****/ +ID = 2 +rho = 2850.00 / matrix Granulite +G = 4.0e10 +Cv = 1050.0 +k = 2.3 +Qr = 0.0 +C = 1.0e70 +phi = 10.0 +eta_vp = 5.0e19 +n_vp = 1.0 +Slim = 500e9 +alp = 0.0e-6 +bet = 1.25e-11 / (K=80e9) +drho = 0 +cstv = 0 / constant visc law +pwlv = 1 / disloc. creep +linv = 0 / diff. creep +gbsv = 0 / grain boundary sliding +expv = 0 / peierls creep +gsel = 0 / grain size evo. +eta0 = 1.0e25 +npwl = 1.0 +Qpwl = 0 +reac_soft = 1 +reac_phase = 2 +Pr = 1.0e80 +dPr = 700.0e6 +tau_kin = 3.1558e9 +k_chem = 5.0e-26 +density_model = 3 + +/**** PHASE 3 ****/ +ID = 3 +rho = 2850.00 /3250.00 / keep granulite, only change in rho +G = 4.0e10 +Cv = 1050.0 +k = 2.3 +Qr = 0.0 +C = 1.0e70 +phi = 10.0 +eta_vp = 5.0e19 +n_vp = 1.0 +Slim = 500e9 +alp = 0.0e-6 +bet = 1.25e-11 / (K=80e9) +drho = 0 +cstv = 0 / constant visc law +pwlv = 1 / disloc. creep +linv = 0 / diff. creep +gbsv = 0 / grain boundary sliding +expv = 0 / peierls creep +gsel = 0 / grain size evo. +eta0 = 1.0e25 +npwl = 1.0 +Qpwl = 0 +reac_soft = 0 +reac_phase = 3 +Pr = 1.0e80 +dPr = 700.0e6 +tau_kin = 3.1558e9 +k_chem = 5.0e-26 +density_model = 3 + +/**** DEFMAPS ****/ +nT = 51 / Temperature resolutin [] +nE = 51 / Strain rate resolution [] +nd = 2 / Grain size resolution [] +Tmin = 240 / Temperature minimum [°C] +Tmax = 2000 / Temperature maximum [°C] +Emin = -50 / Strain rate minimum log_10 [1/s] +Emax = 5 / Strain rate maximum log_10 [1/s] +dmin = -7 / Grain size minimum log_10 [m] +dmax = -2 / Grain size maximum log_10 [m] +Pn = 1e9 / Pressure [Pa] + +/**** PARTICLES ****/ +Nx_part = 4 +Nz_part = 4 +min_part_cell = 16 + +/**** NON-LINEAR ITERATIONS ****/ +Newton = 1 +let_res_grow = 0 +line_search_min = 0.0 +Picard2Newton = 1 +Picard2Newton_tol = 2e-1 +nit_max = 30 +rel_tol_KSP = 5e-4 + +lin_abs_div = 1e-8 +lin_rel_div = 1e-8 +lin_abs_mom = 1e-8 / momentum tolerance (new in MD7.0) +lin_rel_mom = 1e-8 + +nonlin_abs_mom = 1e-8 +nonlin_abs_div = 1e-8 +nonlin_rel_mom = 1e-8 +nonlin_rel_div = 1e-8 +min_eta = 1e10 +max_eta = 1e30 diff --git a/TestShrinking.txt b/TestShrinking.txt new file mode 100644 index 00000000..56221886 --- /dev/null +++ b/TestShrinking.txt @@ -0,0 +1,1114 @@ +rm -rf *build*/ && rm -rf *exec*/ +cmake -DOPT=ON -DOMP=ON -B ./cmake-build -DSET=Shrinking -DTXT= && cmake --build ./cmake-build +-- The C compiler identification is GNU 13.2.0 +-- The CXX compiler identification is AppleClang 14.0.3.14030022 +-- Checking whether C compiler has -isysroot +-- Checking whether C compiler has -isysroot - yes +-- Checking whether C compiler supports OSX deployment target flag +-- Checking whether C compiler supports OSX deployment target flag - yes +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/local/bin/gcc-13 - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Detecting CXX compiler ABI info +-- Detecting CXX compiler ABI info - done +-- Check for working CXX compiler: /Library/Developer/CommandLineTools/usr/bin/c++ - skipped +-- Detecting CXX compile features +-- Detecting CXX compile features - done +-- Found HDF5: /usr/local/Cellar/hdf5/1.14.3/lib/libhdf5.dylib;/usr/local/opt/libaec/lib/libsz.dylib;/Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/usr/lib/libz.tbd;/Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/usr/lib/libdl.tbd;/Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/usr/lib/libm.tbd (found version "1.14.3") +-- Found HDF5: /usr/local/Cellar/hdf5/1.14.3/lib/libhdf5.dylib;/usr/local/opt/libaec/lib/libsz.dylib;/Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/usr/lib/libz.tbd;/Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/usr/lib/libdl.tbd;/Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/usr/lib/libm.tbd (found version "1.14.3") found components: C +-- Found OpenMP_C: -fopenmp (found version "4.5") +-- Could NOT find OpenMP_CXX (missing: OpenMP_CXX_FLAGS OpenMP_CXX_LIB_NAMES) +-- Could NOT find OpenMP (missing: OpenMP_CXX_FOUND) (found version "4.5") +-- Configuring done (11.7s) +-- Generating done (0.0s) +-- Build files have been written to: /Users/mthiel/CODES/MDOODZ7.0_MT/cmake-build +[ 3%] Building C object MDLIB/CMakeFiles/mdoodz.dir/AdvectionRoutines.c.o +[ 7%] Building C object MDLIB/CMakeFiles/mdoodz.dir/AnisotropyRoutines.c.o +[ 11%] Building C object MDLIB/CMakeFiles/mdoodz.dir/ChemicalRoutines.c.o +[ 15%] Building C object MDLIB/CMakeFiles/mdoodz.dir/FD_Jacobian.c.o +[ 19%] Building C object MDLIB/CMakeFiles/mdoodz.dir/FlowLaws.c.o +[ 23%] Building C object MDLIB/CMakeFiles/mdoodz.dir/FreeSurface.c.o +[ 26%] Building C object MDLIB/CMakeFiles/mdoodz.dir/GridRoutines.c.o +[ 30%] Building C object MDLIB/CMakeFiles/mdoodz.dir/HDF5Output.c.o +[ 34%] Building C object MDLIB/CMakeFiles/mdoodz.dir/InputOutput.c.o +[ 38%] Building C object MDLIB/CMakeFiles/mdoodz.dir/Main_DOODZ.c.o +[ 42%] Building C object MDLIB/CMakeFiles/mdoodz.dir/MemoryAllocFree.c.o +[ 46%] Building C object MDLIB/CMakeFiles/mdoodz.dir/MiscFunctions.c.o +[ 50%] Building C object MDLIB/CMakeFiles/mdoodz.dir/ParticleReseeding.c.o +[ 53%] Building C object MDLIB/CMakeFiles/mdoodz.dir/ParticleRoutines.c.o +[ 57%] Building C object MDLIB/CMakeFiles/mdoodz.dir/RheologyDensity.c.o +[ 61%] Building C object MDLIB/CMakeFiles/mdoodz.dir/RheologyParticles.c.o +[ 65%] Building C object MDLIB/CMakeFiles/mdoodz.dir/Solvers.c.o +[ 69%] Building C object MDLIB/CMakeFiles/mdoodz.dir/SparseTools.c.o +[ 73%] Building C object MDLIB/CMakeFiles/mdoodz.dir/StokesAssemblyDecoupled.c.o +[ 76%] Building C object MDLIB/CMakeFiles/mdoodz.dir/StokesRoutines.c.o +[ 80%] Building C object MDLIB/CMakeFiles/mdoodz.dir/ThermalRoutines.c.o +[ 84%] Building C object MDLIB/CMakeFiles/mdoodz.dir/ThermalSolver.c.o +[ 88%] Building C object MDLIB/CMakeFiles/mdoodz.dir/Setup.c.o +[ 92%] Linking C shared library libmdoodz.dylib +[ 92%] Built target mdoodz +[ 96%] Building C object SETS/CMakeFiles/Shrinking.dir/Shrinking.c.o +[100%] Linking C executable /Users/mthiel/CODES/MDOODZ7.0_MT/cmake-exec/Shrinking/Shrinking +[100%] Built target Shrinking +cd cmake-exec/Shrinking && ./Shrinking + +******************************************************** +************ Starting MDOODZ 7.0 simulation ************ +******************************************************** +Warning : Parameter 'writer_subfolder' not found in the setup file, running with default value ./ +Warning : Parameter 'track_T_P_x_z' not found in the setup file, running with default value 0 +Warning : Parameter 'delete_breakpoints' not found in the setup file, running with default value 1 +Warning : Parameter 'import_files_dir' not found in the setup file, running with default value ../../IMPORT +Warning : Parameter 'import_file' not found in the setup file, running with default value blah.bin +Warning : Parameter 'save_initial_markers' not found in the setup file, running with default value 0 +Warning : Parameter 'load_initial_markers' not found in the setup file, running with default value 0 +Warning : Parameter 'initial_markers_file' not found in the setup file, running with default value markers.bin +Warning : Parameter 'balance_boundaries' not found in the setup file, running with default value 0 +Warning : Parameter 'anisotropy' not found in the setup file, running with default value 0 +Warning : Parameter 'polar' not found in the setup file, running with default value 0 +Warning : Parameter 'kinetics' not found in the setup file, running with default value 0 +Warning : Parameter 'out_of_plane' not found in the setup file, running with default value 0 +Warning : Parameter 'max_Pic_its' not found in the setup file, running with default value 10 +Warning : Parameter 'residual_form' not found in the setup file, running with default value 1 +Warning : Parameter 'ani_average' not found in the setup file, running with default value 1 +Warning : Parameter 'interp_stencil' not found in the setup file, running with default value 1 +Warning : Parameter 'conserv_interp' not found in the setup file, running with default value 0 +Warning : Parameter 'direct_neighbour' not found in the setup file, running with default value 0 +Warning : Parameter 'initial_noise' not found in the setup file, running with default value 0 +Warning : Parameter 'marker_noise' not found in the setup file, running with default value 0 +Warning : Parameter 'reseed_markers' not found in the setup file, running with default value 1 +Warning : Parameter 'topo_update' not found in the setup file, running with default value 1 +Warning : Parameter 'surface_processes' not found in the setup file, running with default value 0 +Warning : Parameter 'marker_aniso_angle' not found in the setup file, running with default value 0 +Warning : Parameter 'smooth_softening' not found in the setup file, running with default value 1 +Warning : Parameter 'fix_temperature' not found in the setup file, running with default value 0 +Warning : Parameter 'surf_ised1' not found in the setup file, running with default value 0 +Warning : Parameter 'surf_ised2' not found in the setup file, running with default value 0 +Warning : Parameter 'preload' not found in the setup file, running with default value 0 +Warning : Parameter 'therm_perturb' not found in the setup file, running with default value 0 +Warning : Parameter 'force_act_vol_ast' not found in the setup file, running with default value 0 +Warning : Parameter 'diffuse_X' not found in the setup file, running with default value 0 +Warning : Parameter 'diffuse_avg' not found in the setup file, running with default value 0 +WARNING!! Changing from solver type 0 to solver type 2!!! That's the new standard in MDOODZ 6.0. +Warning : Parameter 'deformation_maps' not found in the setup file, running with default value 0 +Warning : Parameter 'plast' not found in the setup file, running with default value 1.00 +Warning : Parameter 'yield' not found in the setup file, running with default value 1.00 +Warning : Parameter 'sig_tens' not found in the setup file, running with default value 1.00e+07 +Warning : Parameter 'sig1' not found in the setup file, running with default value 1.00e+07 +Warning : Parameter 'dsig1' not found in the setup file, running with default value 1.00e+07 +Warning : Parameter 'psi' not found in the setup file, running with default value 0.00 +Warning : Parameter 'coh_soft' not found in the setup file, running with default value 0.00 +Warning : Parameter 'phi_soft' not found in the setup file, running with default value 0.00 +Warning : Parameter 'psi_soft' not found in the setup file, running with default value 0.00 +Warning : Parameter 'Ce' not found in the setup file, running with default value 1.00e+70 +Warning : Parameter 'phie' not found in the setup file, running with default value 10.00 +Warning : Parameter 'psie' not found in the setup file, running with default value 0.00 +0 materials.coh_soft[k]=0 materials.C[k] = 1.00e+70 materials.C_end[k] = 1.00e+70 +Warning : Parameter 'plss' not found in the setup file, running with default value 1.00 +Warning : Parameter 'plse' not found in the setup file, running with default value 2.00 +Warning : Parameter 'eps0' not found in the setup file, running with default value 0.00 +Warning : Parameter 'tau0' not found in the setup file, running with default value 2.00e+06 +Warning : Parameter 'pref_pwl' not found in the setup file, running with default value 1.00 +Warning : Parameter 'gs' not found in the setup file, running with default value 0.00 +Warning : Parameter 'gs_ref' not found in the setup file, running with default value 0.00 +Warning : Parameter 'kin' not found in the setup file, running with default value 0.00 +Warning : Parameter 'phase_diagram' not found in the setup file, running with default value -1.00 +Warning : Parameter 'phase_mix' not found in the setup file, running with default value 0.00 +Warning : Parameter 'phase_mix' not found in the setup file, running with default value 0.00 +Warning : Parameter 'aniso_angle' not found in the setup file, running with default value 90.00 +Warning : Parameter 'aniso_factor' not found in the setup file, running with default value 1.00 +Warning : Parameter 'ani_fac_max' not found in the setup file, running with default value 1.00e+03 +Warning : Parameter 'ani_fstrain' not found in the setup file, running with default value 0.00 +Warning : Parameter 'axx' not found in the setup file, running with default value 1.00 +Warning : Parameter 'azz' not found in the setup file, running with default value 1.00 +Warning : Parameter 'ayy' not found in the setup file, running with default value 1.00 +Warning : Parameter 'transmutation' not found in the setup file, running with default value 0.00 +Warning : Parameter 'transmutation_phase' not found in the setup file, running with default value 1.00 +Warning : Parameter 'transmutation_temperature' not found in the setup file, running with default value 1.40e+03 +----------------------------------------- MODEL DOMAIN ------------------------------------------ +Xmin = -0.0 km Xmax = 0.0 km Nx = 64 dx = 0.00 m +Zmin = -0.0 km Zmax = 0.0 km Nz = 64 dz = 0.00 m +-------------------------------------------- PHASE: 0 ------------------------------------------- +rho = 2.85e+03 kg/m^3 G = 4.00e+10 Pa +Cv = 1.05e+03 J/kg/K k = 2.30e+00 W/m/K Qr = 0.00e+00 W/m3 +C = 1.00e+70 Pa phi = 1.00e+01 deg Slim = 5.00e+11 Pa +alp = 0.00e+00 1/T T0 = 2.73e+02 K bet = 1.25e-11 1/Pa P0 = 1.00e+05 Pa drho = 0.00e+00 kg/m^3 +prefactor for power-law: 1.00e+00 +C_end = 1.00e+70 Pa Phi_end = 1.00e+01 deg pls_start = 1.00e+00 pls_end = 2.00e+00 +eta0_vp = 5.00e+19 Pa.s^(1/n) n_vp = 1.00e+00 +aniso_factor = 1.00e+00 [] aniso_angle = 9.00e+01 deg ani_fac_max = 1.00e+03 [] ani_fstrain = 0 +Flow law settings: +---> Power law viscosity activated +'Homemade' power law flow of the form: eta = eta0 * exp(-Q/n/R/T) * Eii^(1/n - 1): +t = 0 n = 1.0 m = 0.0 r = 0.0 Q = 0.00e+00 J V = 0.00e+00 m^3 A = 1.00e-10 Pa^-n/s f = 0.00e+00 Pa a = 0.0 F = 1.00 +Warning : Parameter 'plast' not found in the setup file, running with default value 1.00 +Warning : Parameter 'yield' not found in the setup file, running with default value 1.00 +Warning : Parameter 'sig_tens' not found in the setup file, running with default value 1.00e+07 +Warning : Parameter 'sig1' not found in the setup file, running with default value 1.00e+07 +Warning : Parameter 'dsig1' not found in the setup file, running with default value 1.00e+07 +Warning : Parameter 'psi' not found in the setup file, running with default value 0.00 +Warning : Parameter 'coh_soft' not found in the setup file, running with default value 0.00 +Warning : Parameter 'phi_soft' not found in the setup file, running with default value 0.00 +Warning : Parameter 'psi_soft' not found in the setup file, running with default value 0.00 +Warning : Parameter 'Ce' not found in the setup file, running with default value 1.00e+70 +Warning : Parameter 'phie' not found in the setup file, running with default value 10.00 +Warning : Parameter 'psie' not found in the setup file, running with default value 0.00 +1 materials.coh_soft[k]=0 materials.C[k] = 1.00e+70 materials.C_end[k] = 1.00e+70 +Warning : Parameter 'plss' not found in the setup file, running with default value 1.00 +Warning : Parameter 'plse' not found in the setup file, running with default value 2.00 +Warning : Parameter 'eps0' not found in the setup file, running with default value 0.00 +Warning : Parameter 'tau0' not found in the setup file, running with default value 2.00e+06 +Warning : Parameter 'pref_pwl' not found in the setup file, running with default value 1.00 +Warning : Parameter 'gs' not found in the setup file, running with default value 0.00 +Warning : Parameter 'gs_ref' not found in the setup file, running with default value 0.00 +Warning : Parameter 'kin' not found in the setup file, running with default value 0.00 +Warning : Parameter 'phase_diagram' not found in the setup file, running with default value -1.00 +Warning : Parameter 'phase_mix' not found in the setup file, running with default value 0.00 +Warning : Parameter 'phase_mix' not found in the setup file, running with default value 1.00 +Warning : Parameter 'aniso_angle' not found in the setup file, running with default value 90.00 +Warning : Parameter 'aniso_factor' not found in the setup file, running with default value 1.00 +Warning : Parameter 'ani_fac_max' not found in the setup file, running with default value 1.00e+03 +Warning : Parameter 'ani_fstrain' not found in the setup file, running with default value 0.00 +Warning : Parameter 'axx' not found in the setup file, running with default value 1.00 +Warning : Parameter 'azz' not found in the setup file, running with default value 1.00 +Warning : Parameter 'ayy' not found in the setup file, running with default value 1.00 +Warning : Parameter 'transmutation' not found in the setup file, running with default value 0.00 +Warning : Parameter 'transmutation_phase' not found in the setup file, running with default value 1.00 +Warning : Parameter 'transmutation_temperature' not found in the setup file, running with default value 1.40e+03 +----------------------------------------- MODEL DOMAIN ------------------------------------------ +Xmin = -0.0 km Xmax = 0.0 km Nx = 64 dx = 0.00 m +Zmin = -0.0 km Zmax = 0.0 km Nz = 64 dz = 0.00 m +-------------------------------------------- PHASE: 1 ------------------------------------------- +rho = 2.85e+03 kg/m^3 G = 4.00e+10 Pa +Cv = 1.05e+03 J/kg/K k = 2.30e+00 W/m/K Qr = 0.00e+00 W/m3 +C = 1.00e+70 Pa phi = 1.00e+01 deg Slim = 5.00e+11 Pa +alp = 0.00e+00 1/T T0 = 2.73e+02 K bet = 1.25e-11 1/Pa P0 = 1.00e+05 Pa drho = 0.00e+00 kg/m^3 +prefactor for power-law: 1.00e+00 +C_end = 1.00e+70 Pa Phi_end = 1.00e+01 deg pls_start = 1.00e+00 pls_end = 2.00e+00 +eta0_vp = 5.00e+19 Pa.s^(1/n) n_vp = 1.00e+00 +aniso_factor = 1.00e+00 [] aniso_angle = 9.00e+01 deg ani_fac_max = 1.00e+03 [] ani_fstrain = 0 +Flow law settings: +---> Power law viscosity activated +'Homemade' power law flow of the form: eta = eta0 * exp(-Q/n/R/T) * Eii^(1/n - 1): +t = 0 n = 1.0 m = 0.0 r = 0.0 Q = 0.00e+00 J V = 0.00e+00 m^3 A = 1.00e-10 Pa^-n/s f = 0.00e+00 Pa a = 0.0 F = 1.00 +Warning : Parameter 'plast' not found in the setup file, running with default value 1.00 +Warning : Parameter 'yield' not found in the setup file, running with default value 1.00 +Warning : Parameter 'sig_tens' not found in the setup file, running with default value 1.00e+07 +Warning : Parameter 'sig1' not found in the setup file, running with default value 1.00e+07 +Warning : Parameter 'dsig1' not found in the setup file, running with default value 1.00e+07 +Warning : Parameter 'psi' not found in the setup file, running with default value 0.00 +Warning : Parameter 'coh_soft' not found in the setup file, running with default value 0.00 +Warning : Parameter 'phi_soft' not found in the setup file, running with default value 0.00 +Warning : Parameter 'psi_soft' not found in the setup file, running with default value 0.00 +Warning : Parameter 'Ce' not found in the setup file, running with default value 1.00e+70 +Warning : Parameter 'phie' not found in the setup file, running with default value 10.00 +Warning : Parameter 'psie' not found in the setup file, running with default value 0.00 +2 materials.coh_soft[k]=0 materials.C[k] = 1.00e+70 materials.C_end[k] = 1.00e+70 +Warning : Parameter 'plss' not found in the setup file, running with default value 1.00 +Warning : Parameter 'plse' not found in the setup file, running with default value 2.00 +Warning : Parameter 'eps0' not found in the setup file, running with default value 0.00 +Warning : Parameter 'tau0' not found in the setup file, running with default value 2.00e+06 +Warning : Parameter 'pref_pwl' not found in the setup file, running with default value 1.00 +Warning : Parameter 'gs' not found in the setup file, running with default value 0.00 +Warning : Parameter 'gs_ref' not found in the setup file, running with default value 0.00 +Warning : Parameter 'kin' not found in the setup file, running with default value 0.00 +Warning : Parameter 'phase_diagram' not found in the setup file, running with default value -1.00 +Warning : Parameter 'phase_mix' not found in the setup file, running with default value 0.00 +Warning : Parameter 'phase_mix' not found in the setup file, running with default value 2.00 +Warning : Parameter 'aniso_angle' not found in the setup file, running with default value 90.00 +Warning : Parameter 'aniso_factor' not found in the setup file, running with default value 1.00 +Warning : Parameter 'ani_fac_max' not found in the setup file, running with default value 1.00e+03 +Warning : Parameter 'ani_fstrain' not found in the setup file, running with default value 0.00 +Warning : Parameter 'axx' not found in the setup file, running with default value 1.00 +Warning : Parameter 'azz' not found in the setup file, running with default value 1.00 +Warning : Parameter 'ayy' not found in the setup file, running with default value 1.00 +Warning : Parameter 'transmutation' not found in the setup file, running with default value 0.00 +Warning : Parameter 'transmutation_phase' not found in the setup file, running with default value 1.00 +Warning : Parameter 'transmutation_temperature' not found in the setup file, running with default value 1.40e+03 +----------------------------------------- MODEL DOMAIN ------------------------------------------ +Xmin = -0.0 km Xmax = 0.0 km Nx = 64 dx = 0.00 m +Zmin = -0.0 km Zmax = 0.0 km Nz = 64 dz = 0.00 m +-------------------------------------------- PHASE: 2 ------------------------------------------- +rho = 2.85e+03 kg/m^3 G = 4.00e+10 Pa +Cv = 1.05e+03 J/kg/K k = 2.30e+00 W/m/K Qr = 0.00e+00 W/m3 +C = 1.00e+70 Pa phi = 1.00e+01 deg Slim = 5.00e+11 Pa +alp = 0.00e+00 1/T T0 = 2.73e+02 K bet = 1.25e-11 1/Pa P0 = 1.00e+05 Pa drho = 0.00e+00 kg/m^3 +prefactor for power-law: 1.00e+00 +C_end = 1.00e+70 Pa Phi_end = 1.00e+01 deg pls_start = 1.00e+00 pls_end = 2.00e+00 +eta0_vp = 5.00e+19 Pa.s^(1/n) n_vp = 1.00e+00 +aniso_factor = 1.00e+00 [] aniso_angle = 9.00e+01 deg ani_fac_max = 1.00e+03 [] ani_fstrain = 0 +Flow law settings: +---> Power law viscosity activated +'Homemade' power law flow of the form: eta = eta0 * exp(-Q/n/R/T) * Eii^(1/n - 1): +t = 0 n = 1.0 m = 0.0 r = 0.0 Q = 0.00e+00 J V = 0.00e+00 m^3 A = 1.00e-10 Pa^-n/s f = 0.00e+00 Pa a = 0.0 F = 1.00 +Warning : Parameter 'plast' not found in the setup file, running with default value 1.00 +Warning : Parameter 'yield' not found in the setup file, running with default value 1.00 +Warning : Parameter 'sig_tens' not found in the setup file, running with default value 1.00e+07 +Warning : Parameter 'sig1' not found in the setup file, running with default value 1.00e+07 +Warning : Parameter 'dsig1' not found in the setup file, running with default value 1.00e+07 +Warning : Parameter 'psi' not found in the setup file, running with default value 0.00 +Warning : Parameter 'coh_soft' not found in the setup file, running with default value 0.00 +Warning : Parameter 'phi_soft' not found in the setup file, running with default value 0.00 +Warning : Parameter 'psi_soft' not found in the setup file, running with default value 0.00 +Warning : Parameter 'Ce' not found in the setup file, running with default value 1.00e+70 +Warning : Parameter 'phie' not found in the setup file, running with default value 10.00 +Warning : Parameter 'psie' not found in the setup file, running with default value 0.00 +3 materials.coh_soft[k]=0 materials.C[k] = 1.00e+70 materials.C_end[k] = 1.00e+70 +Warning : Parameter 'plss' not found in the setup file, running with default value 1.00 +Warning : Parameter 'plse' not found in the setup file, running with default value 2.00 +Warning : Parameter 'eps0' not found in the setup file, running with default value 0.00 +Warning : Parameter 'tau0' not found in the setup file, running with default value 2.00e+06 +Warning : Parameter 'pref_pwl' not found in the setup file, running with default value 1.00 +Warning : Parameter 'gs' not found in the setup file, running with default value 0.00 +Warning : Parameter 'gs_ref' not found in the setup file, running with default value 0.00 +Warning : Parameter 'kin' not found in the setup file, running with default value 0.00 +Warning : Parameter 'phase_diagram' not found in the setup file, running with default value -1.00 +Warning : Parameter 'phase_mix' not found in the setup file, running with default value 0.00 +Warning : Parameter 'phase_mix' not found in the setup file, running with default value 3.00 +Warning : Parameter 'aniso_angle' not found in the setup file, running with default value 90.00 +Warning : Parameter 'aniso_factor' not found in the setup file, running with default value 1.00 +Warning : Parameter 'ani_fac_max' not found in the setup file, running with default value 1.00e+03 +Warning : Parameter 'ani_fstrain' not found in the setup file, running with default value 0.00 +Warning : Parameter 'axx' not found in the setup file, running with default value 1.00 +Warning : Parameter 'azz' not found in the setup file, running with default value 1.00 +Warning : Parameter 'ayy' not found in the setup file, running with default value 1.00 +Warning : Parameter 'transmutation' not found in the setup file, running with default value 0.00 +Warning : Parameter 'transmutation_phase' not found in the setup file, running with default value 1.00 +Warning : Parameter 'transmutation_temperature' not found in the setup file, running with default value 1.40e+03 +----------------------------------------- MODEL DOMAIN ------------------------------------------ +Xmin = -0.0 km Xmax = 0.0 km Nx = 64 dx = 0.00 m +Zmin = -0.0 km Zmax = 0.0 km Nz = 64 dz = 0.00 m +-------------------------------------------- PHASE: 3 ------------------------------------------- +rho = 2.85e+03 kg/m^3 G = 4.00e+10 Pa +Cv = 1.05e+03 J/kg/K k = 2.30e+00 W/m/K Qr = 0.00e+00 W/m3 +C = 1.00e+70 Pa phi = 1.00e+01 deg Slim = 5.00e+11 Pa +alp = 0.00e+00 1/T T0 = 2.73e+02 K bet = 1.25e-11 1/Pa P0 = 1.00e+05 Pa drho = 0.00e+00 kg/m^3 +prefactor for power-law: 1.00e+00 +C_end = 1.00e+70 Pa Phi_end = 1.00e+01 deg pls_start = 1.00e+00 pls_end = 2.00e+00 +eta0_vp = 5.00e+19 Pa.s^(1/n) n_vp = 1.00e+00 +aniso_factor = 1.00e+00 [] aniso_angle = 9.00e+01 deg ani_fac_max = 1.00e+03 [] ani_fstrain = 0 +Flow law settings: +---> Power law viscosity activated +'Homemade' power law flow of the form: eta = eta0 * exp(-Q/n/R/T) * Eii^(1/n - 1): +t = 0 n = 1.0 m = 0.0 r = 0.0 Q = 0.00e+00 J V = 0.00e+00 m^3 A = 1.00e-10 Pa^-n/s f = 0.00e+00 Pa a = 0.0 F = 1.00 +Phase 0 --- density model 3 +Phase 1 --- density model 3 +Phase 2 --- density model 3 +Phase 3 --- density model 3 +************************************* +****** Allocate and initialise ****** +************************************* +Allocation of grid arrays ! +Memory succesfully allocated : +Diantre, que c'est bon! +Num threads = 001 +************************************* +******* Initialize particles ******** +************************************* +VxWestSum: 0.000000, VxEastSum: 0.000000 +VzWestSum: 0.000000, VzEastSum: 0.000000: +total West+East+South sum: 0.000000 +SetBCs: Boundary conditions were set up +Initial particle spacing : dxm = 0.000397 dzm = 0.000397 m +Initial number of particles = 63504 +min(Vxp init) = 0.0000000000e+00 max(Vxp init) = 0.0000000000e+00 +min(Vzp init) = -0.0000000000e+00 max(Vzp init) = -0.0000000000e+00 +min(Tp init) = 2.7315000000e+02 max(Tp init) = 2.7315000000e+02 +min(sxxd part ) = -1.0000000000e+08 max(sxxd part ) = -1.0000000000e+08 +min(szzd part ) = 1.0000000000e+08 max(szzd part ) = 1.0000000000e+08 +min(sxz part ) = -1.0000000000e+08 max(sxz part ) = -1.0000000000e+08 +USING NEW PART IN CELL +min(Vx. grid) = 0.0000000000e+00 max(Vx. grid) = 0.0000000000e+00 +min(Vz. grid) = 0.0000000000e+00 max(Vz. grid) = 0.0000000000e+00 +min( P) = 0.0000000000e+00 max( P) = 0.0000000000e+00 +VxWestSum: 0.000000, VxEastSum: 0.000000 +VzWestSum: 0.000000, VzEastSum: 0.000000: +total West+East+South sum: 0.000000 +SetBCs: Boundary conditions were set up +Velocity field was set to background pure shear +min(Vx. grid) = 0.0000000000e+00 max(Vx. grid) = 0.0000000000e+00 +min(Vz. grid) = -0.0000000000e+00 max(Vz. grid) = -0.0000000000e+00 +min( P) = 2.0000000000e+09 max( P) = 2.0000000000e+09 +************************************* +****** Initialize temperature ******* +************************************* +VxWestSum: 0.000000, VxEastSum: 0.000000 +VzWestSum: 0.000000, VzEastSum: 0.000000: +total West+East+South sum: 0.000000 +SetBCs: Boundary conditions were set up +************************************* +******** Initialize stresses ******** +************************************* +min(Sxx initial ) = -1.0000000000e+08 max(Sxx initial ) = -1.0000000000e+08 +min(Szz initial ) = 1.0000000000e+08 max(Szz initial ) = 1.0000000000e+08 +************************************* +******** Initialize pressure ******** +************************************* +min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 +min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 +min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 +min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 +min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 +min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 +min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 +min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 +min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 +min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 +************************************* +******* Initialize grain size ******* +************************************* +************************************* +******** Initialize density ********* +************************************* +************************************* +****** Initialize composition ******* +************************************* +************************************* +******* Initialize viscosity ******** +************************************* +Number of phases : 4 +min(d0 ) = 2.0000000000e-03 max(d0 ) = 2.0000000000e-03 +min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 +min(P litho ) = 2.0000000000e+09 max(P litho ) = 2.0000000000e+09 +min(P old ) = 2.0000000000e+09 max(P old ) = 2.0000000000e+09 +min(P ) = 2.0000000000e+09 max(P ) = 2.0000000000e+09 +min(T ) = 2.7315000000e+02 max(T ) = 2.7315000000e+02 +min(mu_s ) = 4.0000000000e+10 max(mu_s ) = 4.0000000000e+10 +min(mu_n ) = 4.0000000000e+10 max(mu_n ) = 4.0000000000e+10 +min(eta_s ) = 1.0000000000e+10 max(eta_s ) = 1.0000000000e+10 +min(eta_n ) = 1.0000000000e+10 max(eta_n ) = 1.0000000000e+10 +min(eta_phys_s) = 1.0000000000e+10 max(eta_phys_s) = 1.0000000000e+10 +min(eta_phys_n) = 1.0000000000e+10 max(eta_phys_n) = 1.0000000000e+10 +min(rho_s ) = 2.9221480935e+03 max(rho_s ) = 2.9221480935e+03 +min(rho_n ) = 2.9221480935e+03 max(rho_n ) = 2.9221480935e+03 +min(X_n ) = 0.0000000000e+00 max(X_n ) = 8.4378889438e-01 +min(X0_n ) = 0.0000000000e+00 max(X0_n ) = 0.0000000000e+00 +min(X0_s ) = 0.0000000000e+00 max(X0_s ) = 0.0000000000e+00 +min(X part) = 0.0000000000e+00 max(X part) = 0.0000000000e+00 +Phase number 0: +min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 1.0000000000e+00 +min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 1.0000000000e+00 +Phase number 1: +min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 1.0000000000e+00 +min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 1.0000000000e+00 +Phase number 2: +min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 0.0000000000e+00 +min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 0.0000000000e+00 +Phase number 3: +min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 0.0000000000e+00 +min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 0.0000000000e+00 +************************************* +******** Initialize timestep ******** +************************************* +Setting initial dt to minimum Maxwell time: 2.50e-01 +min. Maxwell = 2.50e-01 s, max. Maxwell = 2.50e-01 s +Suggested dt = 2.50e-01 s, VE dt = 2.50e-01 s +Initial timestep = 2.50e-01 s +************************************* +*** Write initial file or restart *** +************************************* +***************************************************** +****************** Time step 00001 ****************** +***************************************************** +Transmutated particles = 000 +Number of particles = 63504 +Min Vxm = 0.00e+00 m/s / Max Vxm = 0.00e+00 m/s +Min Vzm = 0.00e+00 m/s / Max Vzm = 0.00e+00 m/s +Courant number = 2.00e-01 --- dtc = inf +Do not allow for large time step increase: dt0 = 2.50e-01 +Timestep limited by advection +Cutting off dt because of negligible motion +Current dt = 1.00e+03 s / Courant dt = 0.00e+00 s +Selected dt = 1.00e+03 +---> Detecting compressible cells +---> 3969 compressibles cells detected +min(d0 ) = 2.0000000000e-03 max(d0 ) = 2.0000000000e-03 +min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 +min(sxxd part ) = -1.0000000000e+08 max(sxxd part ) = -1.0000000000e+08 +min(T part ) = 2.7315000000e+02 max(T part ) = 2.7315000000e+02 +min(p0_n) = 2.0000000000e+09 max(p0_n) = 2.0000000000e+09 +min(sxz0 ) = 0.0000000000e+00 max(sxz0 ) = 0.0000000000e+00 +min(sxx0 ) = -1.0000000000e+08 max(sxx0 ) = -1.0000000000e+08 +min(szz0 ) = 1.0000000000e+08 max(szz0 ) = 1.0000000000e+08 +min(mu_s ) = 4.0000000000e+10 max(mu_s ) = 4.0000000000e+10 +min(mu_n ) = 4.0000000000e+10 max(mu_n ) = 4.0000000000e+10 +min(C_s ) = 1.0000000000e+70 max(C_s ) = 1.0000000000e+70 +min(C_n ) = 1.0000000000e+70 max(C_n ) = 1.0000000000e+70 +min(fric_s ) = 1.0000000000e+01 max(fric_s ) = 1.0000000000e+01 +min(fric_n ) = 1.0000000000e+01 max(fric_n ) = 1.0000000000e+01 +min(dil_s ) = 0.0000000000e+00 max(dil_s ) = 0.0000000000e+00 +min(dil_n ) = 0.0000000000e+00 max(dil_n ) = 0.0000000000e+00 +min(strain_s) = 0.0000000000e+00 max(strain_s) = 0.0000000000e+00 +min(strain_n) = 0.0000000000e+00 max(strain_n) = 0.0000000000e+00 +min(beta_s ) = 1.2500000000e-11 max(beta_s ) = 1.2500000000e-11 +min(beta_n ) = 1.2500000000e-11 max(beta_n ) = 1.2500000000e-11 +min(T0 ) = 2.7315000000e+02 max(T0 ) = 2.7315000000e+02 +min(T ) = 2.7315000000e+02 max(T ) = 2.7315000000e+02 +min(P ) = 2.0000000000e+09 max(P ) = 2.0000000000e+09 +min(comp_cells) = 1 max(comp_cells) = 1 +min(rho_s ) = 2.9221480935e+03 max(rho_s ) = 2.9221480935e+03 +min(rho_n ) = 2.9221480935e+03 max(rho_n ) = 2.9221480935e+03 +min(rho0_n ) = 2.9221480935e+03 max(rho0_n ) = 2.9221480935e+03 +min(X0_s ) = 0.0000000000e+00 max(X0_s ) = 0.0000000000e+00 +min(X0_n ) = 0.0000000000e+00 max(X0_n ) = 0.0000000000e+00 +Phase number 0: +min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 1.0000000000e+00 +min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 1.0000000000e+00 +Phase number 1: +min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 1.0000000000e+00 +min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 1.0000000000e+00 +Phase number 2: +min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 0.0000000000e+00 +min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 0.0000000000e+00 +Phase number 3: +min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 0.0000000000e+00 +min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 0.0000000000e+00 +** Time for particles interpolations I = 0.042641 sec +VxWestSum: 0.000000, VxEastSum: 0.000000 +VzWestSum: 0.000000, VzEastSum: 0.000000: +total West+East+South sum: 0.000000 +SetBCs: Boundary conditions were set up +Velocity field was set to background pure shear +Linear systems allocated +neq_tot = 11781, neq_mom = 7812, neq_cont = 3969 +Run CHOLMOD analysis yes/no: 1 +********************************************** +*** Picard it. 00 of 30 (step = 00001) on 016 threads *** +********************************************** +min(T ) = 2.7315000000e+02 max(T ) = 2.7315000000e+02 +min(P old ) = 2.0000000000e+09 max(P old ) = 2.0000000000e+09 +min(P ) = 2.0000000000e+09 max(P ) = 2.0000000000e+09 +min(div ) = 0.0000000000e+00 max(div ) = 0.0000000000e+00 +min(exxd ) = 0.0000000000e+00 max(exxd ) = 0.0000000000e+00 +min(ezzd ) = 0.0000000000e+00 max(ezzd ) = 0.0000000000e+00 +min(exz ) = 0.0000000000e+00 max(exz ) = 0.0000000000e+00 +min(sxxd ) = -2.5000000000e+04 max(sxxd ) = -2.5000000000e+04 +min(szzd ) = 2.5000000000e+04 max(szzd ) = 2.5000000000e+04 +min(sxz ) = 0.0000000000e+00 max(sxz ) = 0.0000000000e+00 +min(eta_s ) = 1.0000000000e+10 max(eta_s ) = 1.0000000000e+10 +min(eta_n ) = 1.0000000000e+10 max(eta_n ) = 1.0000000000e+10 +min(eta_phys_s) = 1.0000000000e+10 max(eta_phys_s) = 1.0000000000e+10 +min(eta_phys_n) = 1.0000000000e+10 max(eta_phys_n) = 1.0000000000e+10 +min(rho_s ) = 2.9221480935e+03 max(rho_s ) = 2.9221480935e+03 +min(rho_n ) = 2.9221480935e+03 max(rho_n ) = 2.9221480935e+03 +min(rho0_n ) = 2.9221480935e+03 max(rho0_n ) = 2.9221480935e+03 +min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 +min(X_s ) = 0.0000000000e+00 max(X_s ) = 2.6737709202e-07 +min(X_n ) = 0.0000000000e+00 max(X_n ) = 2.6737709202e-07 +Number of momentum equations: 7812 +---- Non-linear residual ---- +Fu abs. = 5.832322e-16 --- Fu rel. = 1.000000e+00 +Fv abs. = 5.774659e-16 --- Fv rel. = 1.000000e+00 +Fp abs. = 0.000000e+00 --- Fp rel. = nan +---- Non-linear residual ---- +Non-linear solver converged to nonlin_abs_mom = 1.00e-08 nonlin_abs_div = 1.00e-08 nonlin_rel_mom = 1.00e-08 nonlin_rel_div = 1.00e-08 +min(Vx grid) = 0.0000000000e+00 max(Vx grid) = 0.0000000000e+00 +min(Vz grid) = -0.0000000000e+00 max(Vz grid) = -0.0000000000e+00 +min( P) = 2.0000000000e+09 max( P) = 2.0000000000e+09 +min( div(V)) = 0.0000000000e+00 max( div(V)) = 0.0000000000e+00 +-------------------------------------------------------------- +Picard 2 Newton is activated with condition: 2.00e-01 +Pic. it. 00: abs: |Fx| = 5.83e-16 - |Fz| = 5.77e-16 - |Fp| = 0.00e+00 --- rel: |Fx| = 1.00e+00 - |Fz| = 1.00e+00 - |Fp| = nan +-------------------------------------------------------------- +No subgrid diffusion for stress tensor component update +min(d0) = 2.0000000000e-03 max(d0) = 2.0000000000e-03 +min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 +min(d on markers) = 2.000000000000e-03 max(d on markers) = 2.000000000000e-03 +Subgrid diffusion for temperature update +************************************* +************** Advection ************ +************************************* +Min Vxm = 0.00e+00 m/s / Max Vxm = 0.00e+00 m/s +Min Vzm = 0.00e+00 m/s / Max Vzm = 0.00e+00 m/s +Courant number = 2.00e-01 --- dtc = inf +Do not allow for large time step increase: dt0 = 1.00e+03 +Timestep limited by advection +Cutting off dt because of negligible motion +Current dt = 1.00e+03 s / Courant dt = 0.00e+00 s +************** Advection step 000 of 001: dtsub = 1.00e+03 ************** +** Time for Roger Gunther = 0.656773 sec --- using conservative interpolation: 0 +** Time for advection solver = 0.005263 sec +USING NEW PART IN CELL +OLD NUMBER OF MARKERS = 63504 +NEW NUMBER OF MARKERS = 63504 +USING NEW PART IN CELL +After re-seeding : +Initial number of particles = 63504 +Old number of particles = 63504 +New number of particles = 63504 +** Time for CountPartCell = 0.007018 sec +************************************* +********* Write output files ******** +************************************* +Loading phase proportions - Nb_phases = 4: +** Time for Breakpoint file write = 0.006309 sec +** Time for Output file write = 0.092475 sec +** Total timestep calculation time = 0.765612 sec +** Model time = 1.00e+03 sec +** Current dt = 1.00e+03 sec, Old dt = 1.00e+03 sec +***************************************************** +****************** Time step 00002 ****************** +***************************************************** +Transmutated particles = 000 +Number of particles = 63504 +Min Vxm = 0.00e+00 m/s / Max Vxm = 0.00e+00 m/s +Min Vzm = 0.00e+00 m/s / Max Vzm = 0.00e+00 m/s +Courant number = 2.00e-01 --- dtc = inf +Do not allow for large time step increase: dt0 = 1.00e+03 +Timestep limited by advection +Cutting off dt because of negligible motion +Current dt = 1.00e+03 s / Courant dt = 0.00e+00 s +Selected dt = 1.00e+03 +---> Detecting compressible cells +---> 3969 compressibles cells detected +min(d0 ) = 2.0000000000e-03 max(d0 ) = 2.0000000000e-03 +min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 +min(sxxd part ) = -2.5000000000e+04 max(sxxd part ) = -2.5000000000e+04 +min(T part ) = 2.7315000000e+02 max(T part ) = 2.7315000000e+02 +min(p0_n) = 2.0000000000e+09 max(p0_n) = 2.0000000000e+09 +min(sxz0 ) = 0.0000000000e+00 max(sxz0 ) = 0.0000000000e+00 +min(sxx0 ) = -2.5000000000e+04 max(sxx0 ) = -2.5000000000e+04 +min(szz0 ) = 2.5000000000e+04 max(szz0 ) = 2.5000000000e+04 +min(mu_s ) = 4.0000000000e+10 max(mu_s ) = 4.0000000000e+10 +min(mu_n ) = 4.0000000000e+10 max(mu_n ) = 4.0000000000e+10 +min(C_s ) = 1.0000000000e+70 max(C_s ) = 1.0000000000e+70 +min(C_n ) = 1.0000000000e+70 max(C_n ) = 1.0000000000e+70 +min(fric_s ) = 1.0000000000e+01 max(fric_s ) = 1.0000000000e+01 +min(fric_n ) = 1.0000000000e+01 max(fric_n ) = 1.0000000000e+01 +min(dil_s ) = 0.0000000000e+00 max(dil_s ) = 0.0000000000e+00 +min(dil_n ) = 0.0000000000e+00 max(dil_n ) = 0.0000000000e+00 +min(strain_s) = 0.0000000000e+00 max(strain_s) = 0.0000000000e+00 +min(strain_n) = 0.0000000000e+00 max(strain_n) = 0.0000000000e+00 +min(beta_s ) = 1.2500000000e-11 max(beta_s ) = 1.2500000000e-11 +min(beta_n ) = 1.2500000000e-11 max(beta_n ) = 1.2500000000e-11 +min(T0 ) = 2.7315000000e+02 max(T0 ) = 2.7315000000e+02 +min(T ) = 2.7315000000e+02 max(T ) = 2.7315000000e+02 +min(P ) = 2.0000000000e+09 max(P ) = 2.0000000000e+09 +min(comp_cells) = 1 max(comp_cells) = 1 +min(rho_s ) = 2.9221480935e+03 max(rho_s ) = 2.9221480935e+03 +min(rho_n ) = 2.9221480935e+03 max(rho_n ) = 2.9221480935e+03 +min(rho0_n ) = 2.9221480935e+03 max(rho0_n ) = 2.9221480935e+03 +min(X0_s ) = 0.0000000000e+00 max(X0_s ) = 2.6737709202e-07 +min(X0_n ) = 0.0000000000e+00 max(X0_n ) = 2.6737709202e-07 +Phase number 0: +min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 1.0000000000e+00 +min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 1.0000000000e+00 +Phase number 1: +min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 1.0000000000e+00 +min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 1.0000000000e+00 +Phase number 2: +min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 0.0000000000e+00 +min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 0.0000000000e+00 +Phase number 3: +min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 0.0000000000e+00 +min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 0.0000000000e+00 +** Time for particles interpolations I = 0.022543 sec +VxWestSum: 0.000000, VxEastSum: 0.000000 +VzWestSum: 0.000000, VzEastSum: 0.000000: +total West+East+South sum: 0.000000 +SetBCs: Boundary conditions were set up +Velocity field was set to background pure shear +Linear systems allocated +neq_tot = 11781, neq_mom = 7812, neq_cont = 3969 +Run CHOLMOD analysis yes/no: 1 +********************************************** +*** Picard it. 00 of 30 (step = 00002) on 016 threads *** +********************************************** +min(T ) = 2.7315000000e+02 max(T ) = 2.7315000000e+02 +min(P old ) = 2.0000000000e+09 max(P old ) = 2.0000000000e+09 +min(P ) = 2.0000000000e+09 max(P ) = 2.0000000000e+09 +min(div ) = 0.0000000000e+00 max(div ) = 0.0000000000e+00 +min(exxd ) = 0.0000000000e+00 max(exxd ) = 0.0000000000e+00 +min(ezzd ) = 0.0000000000e+00 max(ezzd ) = 0.0000000000e+00 +min(exz ) = 0.0000000000e+00 max(exz ) = 0.0000000000e+00 +min(sxxd ) = -6.2500000000e+00 max(sxxd ) = -6.2500000000e+00 +min(szzd ) = 6.2500000000e+00 max(szzd ) = 6.2500000000e+00 +min(sxz ) = 0.0000000000e+00 max(sxz ) = 0.0000000000e+00 +min(eta_s ) = 1.0000000000e+10 max(eta_s ) = 1.0000000000e+10 +min(eta_n ) = 1.0000000000e+10 max(eta_n ) = 1.0000000000e+10 +min(eta_phys_s) = 1.0000000000e+10 max(eta_phys_s) = 1.0000000000e+10 +min(eta_phys_n) = 1.0000000000e+10 max(eta_phys_n) = 1.0000000000e+10 +min(rho_s ) = 2.9221480935e+03 max(rho_s ) = 2.9221480935e+03 +min(rho_n ) = 2.9221480935e+03 max(rho_n ) = 2.9221480935e+03 +min(rho0_n ) = 2.9221480935e+03 max(rho0_n ) = 2.9221480935e+03 +min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 +min(X_s ) = 0.0000000000e+00 max(X_s ) = 5.3475409932e-07 +min(X_n ) = 0.0000000000e+00 max(X_n ) = 5.3475409932e-07 +Number of momentum equations: 7812 +---- Non-linear residual ---- +Fu abs. = 1.143343e-15 --- Fu rel. = 1.000000e+00 +Fv abs. = 1.119767e-15 --- Fv rel. = 1.000000e+00 +Fp abs. = 0.000000e+00 --- Fp rel. = nan +---- Non-linear residual ---- +Non-linear solver converged to nonlin_abs_mom = 1.00e-08 nonlin_abs_div = 1.00e-08 nonlin_rel_mom = 1.00e-08 nonlin_rel_div = 1.00e-08 +min(Vx grid) = 0.0000000000e+00 max(Vx grid) = 0.0000000000e+00 +min(Vz grid) = -0.0000000000e+00 max(Vz grid) = -0.0000000000e+00 +min( P) = 2.0000000000e+09 max( P) = 2.0000000000e+09 +min( div(V)) = 0.0000000000e+00 max( div(V)) = 0.0000000000e+00 +-------------------------------------------------------------- +Picard 2 Newton is activated with condition: 2.00e-01 +Pic. it. 00: abs: |Fx| = 1.14e-15 - |Fz| = 1.12e-15 - |Fp| = 0.00e+00 --- rel: |Fx| = 1.00e+00 - |Fz| = 1.00e+00 - |Fp| = nan +-------------------------------------------------------------- +No subgrid diffusion for stress tensor component update +min(d0) = 2.0000000000e-03 max(d0) = 2.0000000000e-03 +min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 +min(d on markers) = 2.000000000000e-03 max(d on markers) = 2.000000000000e-03 +Subgrid diffusion for temperature update +************************************* +************** Advection ************ +************************************* +Min Vxm = 0.00e+00 m/s / Max Vxm = 0.00e+00 m/s +Min Vzm = 0.00e+00 m/s / Max Vzm = 0.00e+00 m/s +Courant number = 2.00e-01 --- dtc = inf +Do not allow for large time step increase: dt0 = 1.00e+03 +Timestep limited by advection +Cutting off dt because of negligible motion +Current dt = 1.00e+03 s / Courant dt = 0.00e+00 s +************** Advection step 000 of 001: dtsub = 1.00e+03 ************** +** Time for Roger Gunther = 0.812762 sec --- using conservative interpolation: 0 +** Time for advection solver = 0.005175 sec +USING NEW PART IN CELL +OLD NUMBER OF MARKERS = 63504 +NEW NUMBER OF MARKERS = 63504 +USING NEW PART IN CELL +After re-seeding : +Initial number of particles = 63504 +Old number of particles = 63504 +New number of particles = 63504 +** Time for CountPartCell = 0.007237 sec +************************************* +********* Write output files ******** +************************************* +Loading phase proportions - Nb_phases = 4: +** Time for Breakpoint file write = 0.006306 sec +** Time for Output file write = 0.090162 sec +** Total timestep calculation time = 0.919409 sec +** Model time = 2.00e+03 sec +** Current dt = 1.00e+03 sec, Old dt = 1.00e+03 sec +***************************************************** +****************** Time step 00003 ****************** +***************************************************** +Transmutated particles = 000 +Number of particles = 63504 +Min Vxm = 0.00e+00 m/s / Max Vxm = 0.00e+00 m/s +Min Vzm = 0.00e+00 m/s / Max Vzm = 0.00e+00 m/s +Courant number = 2.00e-01 --- dtc = inf +Do not allow for large time step increase: dt0 = 1.00e+03 +Timestep limited by advection +Cutting off dt because of negligible motion +Current dt = 1.00e+03 s / Courant dt = 0.00e+00 s +Selected dt = 1.00e+03 +---> Detecting compressible cells +---> 3969 compressibles cells detected +min(d0 ) = 2.0000000000e-03 max(d0 ) = 2.0000000000e-03 +min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 +min(sxxd part ) = -6.2500000326e+00 max(sxxd part ) = -6.2499999668e+00 +min(T part ) = 2.7315000000e+02 max(T part ) = 2.7315000000e+02 +min(p0_n) = 2.0000000000e+09 max(p0_n) = 2.0000000000e+09 +min(sxz0 ) = 0.0000000000e+00 max(sxz0 ) = 0.0000000000e+00 +min(sxx0 ) = -6.2500000052e+00 max(sxx0 ) = -6.2499999956e+00 +min(szz0 ) = 6.2499999956e+00 max(szz0 ) = 6.2500000052e+00 +min(mu_s ) = 4.0000000000e+10 max(mu_s ) = 4.0000000000e+10 +min(mu_n ) = 4.0000000000e+10 max(mu_n ) = 4.0000000000e+10 +min(C_s ) = 1.0000000000e+70 max(C_s ) = 1.0000000000e+70 +min(C_n ) = 1.0000000000e+70 max(C_n ) = 1.0000000000e+70 +min(fric_s ) = 1.0000000000e+01 max(fric_s ) = 1.0000000000e+01 +min(fric_n ) = 1.0000000000e+01 max(fric_n ) = 1.0000000000e+01 +min(dil_s ) = 0.0000000000e+00 max(dil_s ) = 0.0000000000e+00 +min(dil_n ) = 0.0000000000e+00 max(dil_n ) = 0.0000000000e+00 +min(strain_s) = 0.0000000000e+00 max(strain_s) = 0.0000000000e+00 +min(strain_n) = 0.0000000000e+00 max(strain_n) = 0.0000000000e+00 +min(beta_s ) = 1.2500000000e-11 max(beta_s ) = 1.2500000000e-11 +min(beta_n ) = 1.2500000000e-11 max(beta_n ) = 1.2500000000e-11 +min(T0 ) = 2.7315000000e+02 max(T0 ) = 2.7315000000e+02 +min(T ) = 2.7315000000e+02 max(T ) = 2.7315000000e+02 +min(P ) = 2.0000000000e+09 max(P ) = 2.0000000000e+09 +min(comp_cells) = 1 max(comp_cells) = 1 +min(rho_s ) = 2.9221480935e+03 max(rho_s ) = 2.9221480935e+03 +min(rho_n ) = 2.9221480935e+03 max(rho_n ) = 2.9221480935e+03 +min(rho0_n ) = 2.9221480935e+03 max(rho0_n ) = 2.9221480935e+03 +min(X0_s ) = 0.0000000000e+00 max(X0_s ) = 5.3475410192e-07 +min(X0_n ) = 0.0000000000e+00 max(X0_n ) = 5.3475409949e-07 +Phase number 0: +min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 1.0000000000e+00 +min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 1.0000000000e+00 +Phase number 1: +min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 1.0000000000e+00 +min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 1.0000000000e+00 +Phase number 2: +min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 0.0000000000e+00 +min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 0.0000000000e+00 +Phase number 3: +min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 0.0000000000e+00 +min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 0.0000000000e+00 +** Time for particles interpolations I = 0.022109 sec +VxWestSum: 0.000000, VxEastSum: 0.000000 +VzWestSum: 0.000000, VzEastSum: 0.000000: +total West+East+South sum: 0.000000 +SetBCs: Boundary conditions were set up +Velocity field was set to background pure shear +Linear systems allocated +neq_tot = 11781, neq_mom = 7812, neq_cont = 3969 +Run CHOLMOD analysis yes/no: 1 +********************************************** +*** Picard it. 00 of 30 (step = 00003) on 016 threads *** +********************************************** +min(T ) = 2.7315000000e+02 max(T ) = 2.7315000000e+02 +min(P old ) = 2.0000000000e+09 max(P old ) = 2.0000000000e+09 +min(P ) = 2.0000000000e+09 max(P ) = 2.0000000000e+09 +min(div ) = 0.0000000000e+00 max(div ) = 0.0000000000e+00 +min(exxd ) = 0.0000000000e+00 max(exxd ) = 0.0000000000e+00 +min(ezzd ) = 0.0000000000e+00 max(ezzd ) = 0.0000000000e+00 +min(exz ) = 0.0000000000e+00 max(exz ) = 0.0000000000e+00 +min(sxxd ) = -1.5625000013e-03 max(sxxd ) = -1.5624999989e-03 +min(szzd ) = 1.5624999989e-03 max(szzd ) = 1.5625000013e-03 +min(sxz ) = 0.0000000000e+00 max(sxz ) = 0.0000000000e+00 +min(eta_s ) = 1.0000000000e+10 max(eta_s ) = 1.0000000000e+10 +min(eta_n ) = 1.0000000000e+10 max(eta_n ) = 1.0000000000e+10 +min(eta_phys_s) = 1.0000000000e+10 max(eta_phys_s) = 1.0000000000e+10 +min(eta_phys_n) = 1.0000000000e+10 max(eta_phys_n) = 1.0000000000e+10 +min(rho_s ) = 2.9221480935e+03 max(rho_s ) = 2.9221480935e+03 +min(rho_n ) = 2.9221480935e+03 max(rho_n ) = 2.9221480935e+03 +min(rho0_n ) = 2.9221480935e+03 max(rho0_n ) = 2.9221480935e+03 +min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 +min(X_s ) = 0.0000000000e+00 max(X_s ) = 8.0213102449e-07 +min(X_n ) = 0.0000000000e+00 max(X_n ) = 8.0213102206e-07 +Number of momentum equations: 7812 +---- Non-linear residual ---- +Fu abs. = 1.558114e-15 --- Fu rel. = 1.000000e+00 +Fv abs. = 1.440220e-15 --- Fv rel. = 1.000000e+00 +Fp abs. = 0.000000e+00 --- Fp rel. = nan +---- Non-linear residual ---- +Non-linear solver converged to nonlin_abs_mom = 1.00e-08 nonlin_abs_div = 1.00e-08 nonlin_rel_mom = 1.00e-08 nonlin_rel_div = 1.00e-08 +min(Vx grid) = 0.0000000000e+00 max(Vx grid) = 0.0000000000e+00 +min(Vz grid) = -0.0000000000e+00 max(Vz grid) = -0.0000000000e+00 +min( P) = 2.0000000000e+09 max( P) = 2.0000000000e+09 +min( div(V)) = 0.0000000000e+00 max( div(V)) = 0.0000000000e+00 +-------------------------------------------------------------- +Picard 2 Newton is activated with condition: 2.00e-01 +Pic. it. 00: abs: |Fx| = 1.56e-15 - |Fz| = 1.44e-15 - |Fp| = 0.00e+00 --- rel: |Fx| = 1.00e+00 - |Fz| = 1.00e+00 - |Fp| = nan +-------------------------------------------------------------- +No subgrid diffusion for stress tensor component update +min(d0) = 2.0000000000e-03 max(d0) = 2.0000000000e-03 +min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 +min(d on markers) = 2.000000000000e-03 max(d on markers) = 2.000000000000e-03 +Subgrid diffusion for temperature update +************************************* +************** Advection ************ +************************************* +Min Vxm = 0.00e+00 m/s / Max Vxm = 0.00e+00 m/s +Min Vzm = 0.00e+00 m/s / Max Vzm = 0.00e+00 m/s +Courant number = 2.00e-01 --- dtc = inf +Do not allow for large time step increase: dt0 = 1.00e+03 +Timestep limited by advection +Cutting off dt because of negligible motion +Current dt = 1.00e+03 s / Courant dt = 0.00e+00 s +************** Advection step 000 of 001: dtsub = 1.00e+03 ************** +** Time for Roger Gunther = 0.963393 sec --- using conservative interpolation: 0 +** Time for advection solver = 0.004950 sec +USING NEW PART IN CELL +OLD NUMBER OF MARKERS = 63504 +NEW NUMBER OF MARKERS = 63504 +USING NEW PART IN CELL +After re-seeding : +Initial number of particles = 63504 +Old number of particles = 63504 +New number of particles = 63504 +** Time for CountPartCell = 0.006838 sec +************************************* +********* Write output files ******** +************************************* +Loading phase proportions - Nb_phases = 4: +** Time for Breakpoint file write = 0.006634 sec +** Time for Output file write = 0.152511 sec +** Total timestep calculation time = 1.132655 sec +** Model time = 3.00e+03 sec +** Current dt = 1.00e+03 sec, Old dt = 1.00e+03 sec +***************************************************** +****************** Time step 00004 ****************** +***************************************************** +Transmutated particles = 000 +Number of particles = 63504 +Min Vxm = 0.00e+00 m/s / Max Vxm = 0.00e+00 m/s +Min Vzm = 0.00e+00 m/s / Max Vzm = 0.00e+00 m/s +Courant number = 2.00e-01 --- dtc = inf +Do not allow for large time step increase: dt0 = 1.00e+03 +Timestep limited by advection +Cutting off dt because of negligible motion +Current dt = 1.00e+03 s / Courant dt = 0.00e+00 s +Selected dt = 1.00e+03 +---> Detecting compressible cells +---> 3969 compressibles cells detected +min(d0 ) = 2.0000000000e-03 max(d0 ) = 2.0000000000e-03 +min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 +min(sxxd part ) = -1.5625289732e-03 max(sxxd part ) = -1.5624653980e-03 +min(T part ) = 2.7315000000e+02 max(T part ) = 2.7315000000e+02 +min(p0_n) = 2.0000000000e+09 max(p0_n) = 2.0000000000e+09 +min(sxz0 ) = 0.0000000000e+00 max(sxz0 ) = 0.0000000000e+00 +min(sxx0 ) = -1.5625017836e-03 max(sxx0 ) = -1.5624984237e-03 +min(szz0 ) = 1.5624984237e-03 max(szz0 ) = 1.5625017836e-03 +min(mu_s ) = 4.0000000000e+10 max(mu_s ) = 4.0000000000e+10 +min(mu_n ) = 4.0000000000e+10 max(mu_n ) = 4.0000000000e+10 +min(C_s ) = 1.0000000000e+70 max(C_s ) = 1.0000000000e+70 +min(C_n ) = 1.0000000000e+70 max(C_n ) = 1.0000000000e+70 +min(fric_s ) = 1.0000000000e+01 max(fric_s ) = 1.0000000000e+01 +min(fric_n ) = 1.0000000000e+01 max(fric_n ) = 1.0000000000e+01 +min(dil_s ) = 0.0000000000e+00 max(dil_s ) = 0.0000000000e+00 +min(dil_n ) = 0.0000000000e+00 max(dil_n ) = 0.0000000000e+00 +min(strain_s) = 0.0000000000e+00 max(strain_s) = 0.0000000000e+00 +min(strain_n) = 0.0000000000e+00 max(strain_n) = 0.0000000000e+00 +min(beta_s ) = 1.2500000000e-11 max(beta_s ) = 1.2500000000e-11 +min(beta_n ) = 1.2500000000e-11 max(beta_n ) = 1.2500000000e-11 +min(T0 ) = 2.7315000000e+02 max(T0 ) = 2.7315000000e+02 +min(T ) = 2.7315000000e+02 max(T ) = 2.7315000000e+02 +min(P ) = 2.0000000000e+09 max(P ) = 2.0000000000e+09 +min(comp_cells) = 1 max(comp_cells) = 1 +min(rho_s ) = 2.9221480935e+03 max(rho_s ) = 2.9221480935e+03 +min(rho_n ) = 2.9221480935e+03 max(rho_n ) = 2.9221480935e+03 +min(rho0_n ) = 2.9221480935e+03 max(rho0_n ) = 2.9221480935e+03 +min(X0_s ) = 0.0000000000e+00 max(X0_s ) = 8.0213102970e-07 +min(X0_n ) = 0.0000000000e+00 max(X0_n ) = 8.0213102240e-07 +Phase number 0: +min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 1.0000000000e+00 +min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 1.0000000000e+00 +Phase number 1: +min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 1.0000000000e+00 +min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 1.0000000000e+00 +Phase number 2: +min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 0.0000000000e+00 +min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 0.0000000000e+00 +Phase number 3: +min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 0.0000000000e+00 +min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 0.0000000000e+00 +** Time for particles interpolations I = 0.019508 sec +VxWestSum: 0.000000, VxEastSum: 0.000000 +VzWestSum: 0.000000, VzEastSum: 0.000000: +total West+East+South sum: 0.000000 +SetBCs: Boundary conditions were set up +Velocity field was set to background pure shear +Linear systems allocated +neq_tot = 11781, neq_mom = 7812, neq_cont = 3969 +Run CHOLMOD analysis yes/no: 1 +********************************************** +*** Picard it. 00 of 30 (step = 00004) on 016 threads *** +********************************************** +min(T ) = 2.7315000000e+02 max(T ) = 2.7315000000e+02 +min(P old ) = 2.0000000000e+09 max(P old ) = 2.0000000000e+09 +min(P ) = 2.0000000000e+09 max(P ) = 2.0000000000e+09 +min(div ) = 0.0000000000e+00 max(div ) = 0.0000000000e+00 +min(exxd ) = 0.0000000000e+00 max(exxd ) = 0.0000000000e+00 +min(ezzd ) = 0.0000000000e+00 max(ezzd ) = 0.0000000000e+00 +min(exz ) = 0.0000000000e+00 max(exz ) = 0.0000000000e+00 +min(sxxd ) = -3.9062544591e-07 max(sxxd ) = -3.9062460594e-07 +min(szzd ) = 3.9062460594e-07 max(szzd ) = 3.9062544591e-07 +min(sxz ) = 0.0000000000e+00 max(sxz ) = 0.0000000000e+00 +min(eta_s ) = 1.0000000000e+10 max(eta_s ) = 1.0000000000e+10 +min(eta_n ) = 1.0000000000e+10 max(eta_n ) = 1.0000000000e+10 +min(eta_phys_s) = 1.0000000000e+10 max(eta_phys_s) = 1.0000000000e+10 +min(eta_phys_n) = 1.0000000000e+10 max(eta_phys_n) = 1.0000000000e+10 +min(rho_s ) = 2.9221480935e+03 max(rho_s ) = 2.9221480935e+03 +min(rho_n ) = 2.9221480935e+03 max(rho_n ) = 2.9221480935e+03 +min(rho0_n ) = 2.9221480935e+03 max(rho0_n ) = 2.9221480935e+03 +min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 +min(X_s ) = 0.0000000000e+00 max(X_s ) = 1.0695078675e-06 +min(X_n ) = 0.0000000000e+00 max(X_n ) = 1.0695078602e-06 +Number of momentum equations: 7812 +---- Non-linear residual ---- +Fu abs. = 1.936050e-15 --- Fu rel. = 1.000000e+00 +Fv abs. = 1.794825e-15 --- Fv rel. = 1.000000e+00 +Fp abs. = 0.000000e+00 --- Fp rel. = nan +---- Non-linear residual ---- +Non-linear solver converged to nonlin_abs_mom = 1.00e-08 nonlin_abs_div = 1.00e-08 nonlin_rel_mom = 1.00e-08 nonlin_rel_div = 1.00e-08 +min(Vx grid) = 0.0000000000e+00 max(Vx grid) = 0.0000000000e+00 +min(Vz grid) = -0.0000000000e+00 max(Vz grid) = -0.0000000000e+00 +min( P) = 2.0000000000e+09 max( P) = 2.0000000000e+09 +min( div(V)) = 0.0000000000e+00 max( div(V)) = 0.0000000000e+00 +-------------------------------------------------------------- +Picard 2 Newton is activated with condition: 2.00e-01 +Pic. it. 00: abs: |Fx| = 1.94e-15 - |Fz| = 1.79e-15 - |Fp| = 0.00e+00 --- rel: |Fx| = 1.00e+00 - |Fz| = 1.00e+00 - |Fp| = nan +-------------------------------------------------------------- +No subgrid diffusion for stress tensor component update +min(d0) = 2.0000000000e-03 max(d0) = 2.0000000000e-03 +min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 +min(d on markers) = 2.000000000000e-03 max(d on markers) = 2.000000000000e-03 +Subgrid diffusion for temperature update +************************************* +************** Advection ************ +************************************* +Min Vxm = 0.00e+00 m/s / Max Vxm = 0.00e+00 m/s +Min Vzm = 0.00e+00 m/s / Max Vzm = 0.00e+00 m/s +Courant number = 2.00e-01 --- dtc = inf +Do not allow for large time step increase: dt0 = 1.00e+03 +Timestep limited by advection +Cutting off dt because of negligible motion +Current dt = 1.00e+03 s / Courant dt = 0.00e+00 s +************** Advection step 000 of 001: dtsub = 1.00e+03 ************** +** Time for Roger Gunther = 0.175295 sec --- using conservative interpolation: 0 +** Time for advection solver = 0.005062 sec +USING NEW PART IN CELL +OLD NUMBER OF MARKERS = 63504 +NEW NUMBER OF MARKERS = 63504 +USING NEW PART IN CELL +After re-seeding : +Initial number of particles = 63504 +Old number of particles = 63504 +New number of particles = 63504 +** Time for CountPartCell = 0.006946 sec +************************************* +********* Write output files ******** +************************************* +File Breakpoint00002.dat replaced by Breakpoint00004.dat +File Breakpoint00002.dat was successfully renamed +Loading phase proportions - Nb_phases = 4: +** Time for Breakpoint file write = 0.014681 sec +** Time for Output file write = 0.095864 sec +** Total timestep calculation time = 0.296326 sec +** Model time = 4.00e+03 sec +** Current dt = 1.00e+03 sec, Old dt = 1.00e+03 sec +***************************************************** +****************** Time step 00005 ****************** +***************************************************** +Transmutated particles = 000 +Number of particles = 63504 +Min Vxm = 0.00e+00 m/s / Max Vxm = 0.00e+00 m/s +Min Vzm = 0.00e+00 m/s / Max Vzm = 0.00e+00 m/s +Courant number = 2.00e-01 --- dtc = inf +Do not allow for large time step increase: dt0 = 1.00e+03 +Timestep limited by advection +Cutting off dt because of negligible motion +Current dt = 1.00e+03 s / Courant dt = 0.00e+00 s +Selected dt = 1.00e+03 +---> Detecting compressible cells +---> 3969 compressibles cells detected +min(d0 ) = 2.0000000000e-03 max(d0 ) = 2.0000000000e-03 +min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 +min(sxxd part ) = -4.1865994584e-07 max(sxxd part ) = -3.5561631785e-07 +min(T part ) = 2.7315000000e+02 max(T part ) = 2.7315000000e+02 +min(p0_n) = 2.0000000000e+09 max(p0_n) = 2.0000000000e+09 +min(sxz0 ) = 0.0000000000e+00 max(sxz0 ) = 0.0000000000e+00 +min(sxx0 ) = -3.9129610708e-07 max(sxx0 ) = -3.9002322358e-07 +min(szz0 ) = 3.9002322358e-07 max(szz0 ) = 3.9129610708e-07 +min(mu_s ) = 4.0000000000e+10 max(mu_s ) = 4.0000000000e+10 +min(mu_n ) = 4.0000000000e+10 max(mu_n ) = 4.0000000000e+10 +min(C_s ) = 1.0000000000e+70 max(C_s ) = 1.0000000000e+70 +min(C_n ) = 1.0000000000e+70 max(C_n ) = 1.0000000000e+70 +min(fric_s ) = 1.0000000000e+01 max(fric_s ) = 1.0000000000e+01 +min(fric_n ) = 1.0000000000e+01 max(fric_n ) = 1.0000000000e+01 +min(dil_s ) = 0.0000000000e+00 max(dil_s ) = 0.0000000000e+00 +min(dil_n ) = 0.0000000000e+00 max(dil_n ) = 0.0000000000e+00 +min(strain_s) = 0.0000000000e+00 max(strain_s) = 0.0000000000e+00 +min(strain_n) = 0.0000000000e+00 max(strain_n) = 0.0000000000e+00 +min(beta_s ) = 1.2500000000e-11 max(beta_s ) = 1.2500000000e-11 +min(beta_n ) = 1.2500000000e-11 max(beta_n ) = 1.2500000000e-11 +min(T0 ) = 2.7315000000e+02 max(T0 ) = 2.7315000000e+02 +min(T ) = 2.7315000000e+02 max(T ) = 2.7315000000e+02 +min(P ) = 2.0000000000e+09 max(P ) = 2.0000000000e+09 +min(comp_cells) = 1 max(comp_cells) = 1 +min(rho_s ) = 2.9221480935e+03 max(rho_s ) = 2.9221480935e+03 +min(rho_n ) = 2.9221480935e+03 max(rho_n ) = 2.9221480935e+03 +min(rho0_n ) = 2.9221480935e+03 max(rho0_n ) = 2.9221480935e+03 +min(X0_s ) = 0.0000000000e+00 max(X0_s ) = 1.0695078754e-06 +min(X0_n ) = 0.0000000000e+00 max(X0_n ) = 1.0695078608e-06 +Phase number 0: +min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 1.0000000000e+00 +min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 1.0000000000e+00 +Phase number 1: +min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 1.0000000000e+00 +min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 1.0000000000e+00 +Phase number 2: +min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 0.0000000000e+00 +min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 0.0000000000e+00 +Phase number 3: +min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 0.0000000000e+00 +min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 0.0000000000e+00 +** Time for particles interpolations I = 0.021027 sec +VxWestSum: 0.000000, VxEastSum: 0.000000 +VzWestSum: 0.000000, VzEastSum: 0.000000: +total West+East+South sum: 0.000000 +SetBCs: Boundary conditions were set up +Velocity field was set to background pure shear +Linear systems allocated +neq_tot = 11781, neq_mom = 7812, neq_cont = 3969 +Run CHOLMOD analysis yes/no: 1 +********************************************** +*** Picard it. 00 of 30 (step = 00005) on 016 threads *** +********************************************** +min(T ) = 2.7315000000e+02 max(T ) = 2.7315000000e+02 +min(P old ) = 2.0000000000e+09 max(P old ) = 2.0000000000e+09 +min(P ) = 2.0000000000e+09 max(P ) = 2.0000000000e+09 +min(div ) = 0.0000000000e+00 max(div ) = 0.0000000000e+00 +min(exxd ) = 0.0000000000e+00 max(exxd ) = 0.0000000000e+00 +min(ezzd ) = 0.0000000000e+00 max(ezzd ) = 0.0000000000e+00 +min(exz ) = 0.0000000000e+00 max(exz ) = 0.0000000000e+00 +min(sxxd ) = -9.7824026770e-11 max(sxxd ) = -9.7505805895e-11 +min(szzd ) = 9.7505805895e-11 max(szzd ) = 9.7824026770e-11 +min(sxz ) = 0.0000000000e+00 max(sxz ) = 0.0000000000e+00 +min(eta_s ) = 1.0000000000e+10 max(eta_s ) = 1.0000000000e+10 +min(eta_n ) = 1.0000000000e+10 max(eta_n ) = 1.0000000000e+10 +min(eta_phys_s) = 1.0000000000e+10 max(eta_phys_s) = 1.0000000000e+10 +min(eta_phys_n) = 1.0000000000e+10 max(eta_phys_n) = 1.0000000000e+10 +min(rho_s ) = 2.9221480935e+03 max(rho_s ) = 2.9221480935e+03 +min(rho_n ) = 2.9221480935e+03 max(rho_n ) = 2.9221480935e+03 +min(rho0_n ) = 2.9221480935e+03 max(rho0_n ) = 2.9221480935e+03 +min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 +min(X_s ) = 0.0000000000e+00 max(X_s ) = 1.3368846285e-06 +min(X_n ) = 0.0000000000e+00 max(X_n ) = 1.3368846139e-06 +Number of momentum equations: 7812 +---- Non-linear residual ---- +Fu abs. = 2.445934e-15 --- Fu rel. = 1.000000e+00 +Fv abs. = 2.266177e-15 --- Fv rel. = 1.000000e+00 +Fp abs. = 0.000000e+00 --- Fp rel. = nan +---- Non-linear residual ---- +Non-linear solver converged to nonlin_abs_mom = 1.00e-08 nonlin_abs_div = 1.00e-08 nonlin_rel_mom = 1.00e-08 nonlin_rel_div = 1.00e-08 +min(Vx grid) = 0.0000000000e+00 max(Vx grid) = 0.0000000000e+00 +min(Vz grid) = -0.0000000000e+00 max(Vz grid) = -0.0000000000e+00 +min( P) = 2.0000000000e+09 max( P) = 2.0000000000e+09 +min( div(V)) = 0.0000000000e+00 max( div(V)) = 0.0000000000e+00 +-------------------------------------------------------------- +Picard 2 Newton is activated with condition: 2.00e-01 +Pic. it. 00: abs: |Fx| = 2.45e-15 - |Fz| = 2.27e-15 - |Fp| = 0.00e+00 --- rel: |Fx| = 1.00e+00 - |Fz| = 1.00e+00 - |Fp| = nan +-------------------------------------------------------------- +No subgrid diffusion for stress tensor component update +min(d0) = 2.0000000000e-03 max(d0) = 2.0000000000e-03 +min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 +min(d on markers) = 2.000000000000e-03 max(d on markers) = 2.000000000000e-03 +Subgrid diffusion for temperature update +************************************* +************** Advection ************ +************************************* +Min Vxm = 0.00e+00 m/s / Max Vxm = 0.00e+00 m/s +Min Vzm = 0.00e+00 m/s / Max Vzm = 0.00e+00 m/s +Courant number = 2.00e-01 --- dtc = inf +Do not allow for large time step increase: dt0 = 1.00e+03 +Timestep limited by advection +Cutting off dt because of negligible motion +Current dt = 1.00e+03 s / Courant dt = 0.00e+00 s +************** Advection step 000 of 001: dtsub = 1.00e+03 ************** +** Time for Roger Gunther = 0.337238 sec --- using conservative interpolation: 0 +** Time for advection solver = 0.004314 sec +USING NEW PART IN CELL +OLD NUMBER OF MARKERS = 63504 +NEW NUMBER OF MARKERS = 63504 +USING NEW PART IN CELL +After re-seeding : +Initial number of particles = 63504 +Old number of particles = 63504 +New number of particles = 63504 +** Time for CountPartCell = 0.006363 sec +************************************* +********* Write output files ******** +************************************* +File Breakpoint00003.dat replaced by Breakpoint00005.dat +File Breakpoint00003.dat was successfully renamed +Loading phase proportions - Nb_phases = 4: +** Time for Breakpoint file write = 0.013564 sec +** Time for Output file write = 0.185263 sec +** Total timestep calculation time = 0.545934 sec +** Model time = 5.00e+03 sec +** Current dt = 1.00e+03 sec, Old dt = 1.00e+03 sec + +******************************************************** +************* Ending MDOODZ 7.0 simulation ************* +******************************************************** From b8c77a7a91b70c58049f72e319e8f50c159e687c Mon Sep 17 00:00:00 2001 From: mthielma Date: Mon, 26 Feb 2024 18:40:41 +0100 Subject: [PATCH 04/21] removed ShrinkingMarcel files --- SETS/ShrinkingMarcel.c | 154 ------------------- SETS/ShrinkingMarcel_template.c | 154 ------------------- SETS/ShrinkingMarcel_test.c | 87 ----------- SETS/ShrinkingMarcel_test.txt | 254 -------------------------------- 4 files changed, 649 deletions(-) delete mode 100644 SETS/ShrinkingMarcel.c delete mode 100644 SETS/ShrinkingMarcel_template.c delete mode 100644 SETS/ShrinkingMarcel_test.c delete mode 100644 SETS/ShrinkingMarcel_test.txt diff --git a/SETS/ShrinkingMarcel.c b/SETS/ShrinkingMarcel.c deleted file mode 100644 index 64fe0eb7..00000000 --- a/SETS/ShrinkingMarcel.c +++ /dev/null @@ -1,154 +0,0 @@ -#include "mdoodz.h" -#include "math.h" -#include "stdio.h" -#include "stdlib.h" - - - -// for the ellipse, we have several arguments: effective radius, aspect ratio, orientation, X0,Z0 -int SetPhase(MdoodzInput *input, Coordinates coordinates) { - double radius = $RADIUS - double AR = $AR - double a,b, cos_theta = cos($THETA*PI/180.0), sin_theta=sin($THETA*PI/180.0) - double $X0,$Z0 - - if (AR>1){ - // compute half axis lengths so that we have the same "volume" as a circle with radius - b = radius / sqrt(AR); - a = radius * sqrt(AR); - - Xeff = (coordinates.x-X0)*cos_theta + (coordinates.z-Z0)*sin_theta; - Zeff = (coordinates.x-X0)*sin_theta - (coordinates.z-Z0)*cos_theta; - } - else { - b = radius; - a = radius; - Xeff = coordinates.x-X0; - Zeff = coordinates.z-Z0; - } - - if ( Xeff*Xeff/(a*a) +Zeff*Zeff/(b*b) <1) { - return 1; - } else { - return 0; - } -} - -int SetDualPhase(MdoodzInput *input, Coordinates coordinate, int phase) { - - int dual_phase = phase; - double Lx = input->model.xmax - input->model.xmin; - double Lz = input->model.zmax - input->model.zmin; - double Ax, Az; - - // Set checkerboard for phase 0 - Ax = cos( 6.0*2.0*M_PI*coordinate.x / Lx ); - Az = sin( 6.0*2.0*M_PI*coordinate.z / Lz ); - if ( ( (Az<0.0 && Ax<0.0) || (Az>0.0 && Ax>0.0) ) && dual_phase==0 ) { - dual_phase += input->model.Nb_phases; - } - - // Set checkerboard for phase 1 - Ax = cos( 24.0*2.0*M_PI*coordinate.x / Lx ); - Az = sin( 24.0*2.0*M_PI*coordinate.z / Lz ); - if ( ( (Az<0.0 && Ax<0.0) || (Az>0.0 && Ax>0.0) ) && dual_phase==1 ) { - dual_phase += input->model.Nb_phases; - } - - return dual_phase; -} - -double SetDensity(MdoodzInput *input, Coordinates coordinates, int phase) { - const double T_init = (input->model.user0 + zeroC) / input->scaling.T; - const double P_init = (input->model.bkg_pressure ) / input->scaling.S; - if (1 == 0) { - return input->materials.rho[phase] * exp(input->materials.bet[phase]*P_init - input->materials.alp[phase] * T_init); - } else { - return input->materials.rho[phase]; - } -} - -int main(int argc, char *args[]) { - -// Input file name - char *input_file; -// effective radius, aspect ratio, orientation, X0,Z0 - double radius, AR, theta, X0, Z0 - if ( nargs < 2 ) { // no input given - asprintf(&input_file, "Shrinking.txt"); // Default - radius = 0.1; - AR = 1; - theta = 0; - X0 = 0; - Z0 = 0; - } - else if ( nargs == 2) { // only input file given - asprintf(&input_file, "%s", args[1]); - radius = 0.1; - AR = 1; - theta = 0; - X0 = 0; - Z0 = 0; - } - else if ( nargs == 3) { // only input file and inclusion radius given --> circular inclusion - asprintf(&input_file, "%s", args[1]); - radius = atof(args[2]); - AR = 1; - theta = 0; - X0 = 0; - Z0 = 0; - } - else if ( nargs == 5) { // input file, inclusion radius, aspect ratio and orientation are given - asprintf(&input_file, "%s", args[1]); - radius = atof(args[2]); - AR = atof(args[3]); - theta = atof(args[4]); - X0 = 0; - Z0 = 0; - } - else if ( nargs == 7) { // input file, inclusion radius, aspect ratio, orientation, X0, Z0 are given - asprintf(&input_file, "%s", args[1]); - radius = atof(args[2]); - AR = atof(args[3]); - theta = atof(args[4]); - X0 = atof(args[5]); - Z0 = atof(args[6]); - } - else { - asprintf(&input_file, "Shrinking.txt"); // Default - radius = 0.1; - AR = 1; - theta = 0; - X0 = 0; - Z0 = 0; - printf("Wrong number of arguments, running MDoodz7.0 using default %s\n", input_file); - } - printf("Running MDoodz7.0 using %s\n", input_file); - - if (AR==1.0) { // circular inclusion - MdoodzSetup setup = { - .SetParticles = &(SetParticles_ff){ - .SetPhase = SetPhaseCircle, - .SetDensity = SetDensity, - }, - .SetBCs = &(SetBCs_ff){ - .SetBCVx = SetPureOrSimpleShearBCVx, - .SetBCVz = SetPureOrSimpleShearBCVz, - }, - }; - - } - else { // elliptic inclusion - MdoodzSetup setup = { - .SetParticles = &(SetParticles_ff){ - .SetPhase = SetPhaseEllipse, - .SetDensity = SetDensity, - }, - .SetBCs = &(SetBCs_ff){ - .SetBCVx = SetPureOrSimpleShearBCVx, - .SetBCVz = SetPureOrSimpleShearBCVz, - }, - }; - } - RunMDOODZ("Shrinking.txt", &setup); -} diff --git a/SETS/ShrinkingMarcel_template.c b/SETS/ShrinkingMarcel_template.c deleted file mode 100644 index 64fe0eb7..00000000 --- a/SETS/ShrinkingMarcel_template.c +++ /dev/null @@ -1,154 +0,0 @@ -#include "mdoodz.h" -#include "math.h" -#include "stdio.h" -#include "stdlib.h" - - - -// for the ellipse, we have several arguments: effective radius, aspect ratio, orientation, X0,Z0 -int SetPhase(MdoodzInput *input, Coordinates coordinates) { - double radius = $RADIUS - double AR = $AR - double a,b, cos_theta = cos($THETA*PI/180.0), sin_theta=sin($THETA*PI/180.0) - double $X0,$Z0 - - if (AR>1){ - // compute half axis lengths so that we have the same "volume" as a circle with radius - b = radius / sqrt(AR); - a = radius * sqrt(AR); - - Xeff = (coordinates.x-X0)*cos_theta + (coordinates.z-Z0)*sin_theta; - Zeff = (coordinates.x-X0)*sin_theta - (coordinates.z-Z0)*cos_theta; - } - else { - b = radius; - a = radius; - Xeff = coordinates.x-X0; - Zeff = coordinates.z-Z0; - } - - if ( Xeff*Xeff/(a*a) +Zeff*Zeff/(b*b) <1) { - return 1; - } else { - return 0; - } -} - -int SetDualPhase(MdoodzInput *input, Coordinates coordinate, int phase) { - - int dual_phase = phase; - double Lx = input->model.xmax - input->model.xmin; - double Lz = input->model.zmax - input->model.zmin; - double Ax, Az; - - // Set checkerboard for phase 0 - Ax = cos( 6.0*2.0*M_PI*coordinate.x / Lx ); - Az = sin( 6.0*2.0*M_PI*coordinate.z / Lz ); - if ( ( (Az<0.0 && Ax<0.0) || (Az>0.0 && Ax>0.0) ) && dual_phase==0 ) { - dual_phase += input->model.Nb_phases; - } - - // Set checkerboard for phase 1 - Ax = cos( 24.0*2.0*M_PI*coordinate.x / Lx ); - Az = sin( 24.0*2.0*M_PI*coordinate.z / Lz ); - if ( ( (Az<0.0 && Ax<0.0) || (Az>0.0 && Ax>0.0) ) && dual_phase==1 ) { - dual_phase += input->model.Nb_phases; - } - - return dual_phase; -} - -double SetDensity(MdoodzInput *input, Coordinates coordinates, int phase) { - const double T_init = (input->model.user0 + zeroC) / input->scaling.T; - const double P_init = (input->model.bkg_pressure ) / input->scaling.S; - if (1 == 0) { - return input->materials.rho[phase] * exp(input->materials.bet[phase]*P_init - input->materials.alp[phase] * T_init); - } else { - return input->materials.rho[phase]; - } -} - -int main(int argc, char *args[]) { - -// Input file name - char *input_file; -// effective radius, aspect ratio, orientation, X0,Z0 - double radius, AR, theta, X0, Z0 - if ( nargs < 2 ) { // no input given - asprintf(&input_file, "Shrinking.txt"); // Default - radius = 0.1; - AR = 1; - theta = 0; - X0 = 0; - Z0 = 0; - } - else if ( nargs == 2) { // only input file given - asprintf(&input_file, "%s", args[1]); - radius = 0.1; - AR = 1; - theta = 0; - X0 = 0; - Z0 = 0; - } - else if ( nargs == 3) { // only input file and inclusion radius given --> circular inclusion - asprintf(&input_file, "%s", args[1]); - radius = atof(args[2]); - AR = 1; - theta = 0; - X0 = 0; - Z0 = 0; - } - else if ( nargs == 5) { // input file, inclusion radius, aspect ratio and orientation are given - asprintf(&input_file, "%s", args[1]); - radius = atof(args[2]); - AR = atof(args[3]); - theta = atof(args[4]); - X0 = 0; - Z0 = 0; - } - else if ( nargs == 7) { // input file, inclusion radius, aspect ratio, orientation, X0, Z0 are given - asprintf(&input_file, "%s", args[1]); - radius = atof(args[2]); - AR = atof(args[3]); - theta = atof(args[4]); - X0 = atof(args[5]); - Z0 = atof(args[6]); - } - else { - asprintf(&input_file, "Shrinking.txt"); // Default - radius = 0.1; - AR = 1; - theta = 0; - X0 = 0; - Z0 = 0; - printf("Wrong number of arguments, running MDoodz7.0 using default %s\n", input_file); - } - printf("Running MDoodz7.0 using %s\n", input_file); - - if (AR==1.0) { // circular inclusion - MdoodzSetup setup = { - .SetParticles = &(SetParticles_ff){ - .SetPhase = SetPhaseCircle, - .SetDensity = SetDensity, - }, - .SetBCs = &(SetBCs_ff){ - .SetBCVx = SetPureOrSimpleShearBCVx, - .SetBCVz = SetPureOrSimpleShearBCVz, - }, - }; - - } - else { // elliptic inclusion - MdoodzSetup setup = { - .SetParticles = &(SetParticles_ff){ - .SetPhase = SetPhaseEllipse, - .SetDensity = SetDensity, - }, - .SetBCs = &(SetBCs_ff){ - .SetBCVx = SetPureOrSimpleShearBCVx, - .SetBCVz = SetPureOrSimpleShearBCVz, - }, - }; - } - RunMDOODZ("Shrinking.txt", &setup); -} diff --git a/SETS/ShrinkingMarcel_test.c b/SETS/ShrinkingMarcel_test.c deleted file mode 100644 index ed6cc38e..00000000 --- a/SETS/ShrinkingMarcel_test.c +++ /dev/null @@ -1,87 +0,0 @@ -#include "mdoodz.h" -#include "math.h" -#include "stdio.h" -#include "stdlib.h" - - - -// for the ellipse, we have several arguments: effective radius, aspect ratio, orientation, X0,Z0 -int SetPhase(MdoodzInput *input, Coordinates coordinates) { - double radius = 0.1; - double AR = 2; - double a,b, Xeff,Zeff; - double cos_theta = cos(45*M_PI/180.0); - double sin_theta=sin(45*M_PI/180.0); - double X0=0; - double Z0=0; - - if (AR>1){ - // compute half axis lengths so that we have the same "volume" as a circle with radius - b = radius / sqrt(AR); - a = radius * sqrt(AR); - - Xeff = (coordinates.x-X0)*cos_theta + (coordinates.z-Z0)*sin_theta; - Zeff = (coordinates.x-X0)*sin_theta - (coordinates.z-Z0)*cos_theta; - } - else { - b = radius; - a = radius; - Xeff = coordinates.x-X0; - Zeff = coordinates.z-Z0; - } - - if ( Xeff*Xeff/(a*a) +Zeff*Zeff/(b*b) <1) { - return 1; - } else { - return 0; - } -} - -int SetDualPhase(MdoodzInput *input, Coordinates coordinate, int phase) { - - int dual_phase = phase; - double Lx = input->model.xmax - input->model.xmin; - double Lz = input->model.zmax - input->model.zmin; - double Ax, Az; - - // Set checkerboard for phase 0 - Ax = cos( 6.0*2.0*M_PI*coordinate.x / Lx ); - Az = sin( 6.0*2.0*M_PI*coordinate.z / Lz ); - if ( ( (Az<0.0 && Ax<0.0) || (Az>0.0 && Ax>0.0) ) && dual_phase==0 ) { - dual_phase += input->model.Nb_phases; - } - - // Set checkerboard for phase 1 - Ax = cos( 24.0*2.0*M_PI*coordinate.x / Lx ); - Az = sin( 24.0*2.0*M_PI*coordinate.z / Lz ); - if ( ( (Az<0.0 && Ax<0.0) || (Az>0.0 && Ax>0.0) ) && dual_phase==1 ) { - dual_phase += input->model.Nb_phases; - } - - return dual_phase; -} - -double SetDensity(MdoodzInput *input, Coordinates coordinates, int phase) { - const double T_init = (input->model.user0 + zeroC) / input->scaling.T; - const double P_init = (input->model.bkg_pressure ) / input->scaling.S; - if (1 == 0) { - return input->materials.rho[phase] * exp(input->materials.bet[phase]*P_init - input->materials.alp[phase] * T_init); - } else { - return input->materials.rho[phase]; - } -} - -int main() { - MdoodzSetup setup = { - .SetParticles = &(SetParticles_ff){ - .SetPhase = SetPhase, - .SetDualPhase = SetDualPhase, - .SetDensity = SetDensity, - }, - .SetBCs = &(SetBCs_ff){ - .SetBCVx = SetPureOrSimpleShearBCVx, - .SetBCVz = SetPureOrSimpleShearBCVz, - }, - }; - RunMDOODZ("ShrinkingMarcel_test.txt", &setup); -} diff --git a/SETS/ShrinkingMarcel_test.txt b/SETS/ShrinkingMarcel_test.txt deleted file mode 100644 index b1ba6a7b..00000000 --- a/SETS/ShrinkingMarcel_test.txt +++ /dev/null @@ -1,254 +0,0 @@ -/**** RESTART ****/ -istep = 00000 -irestart = 0 - -/**** OUTPUT FILES ****/ -writer = 1 -writer_step = 1 -writer_markers = 0 -writer_debug = 0 -writer_energies = 0 - -/**** SCALES ****/ -eta = 1e15 -L = 2.0 -V = 1.0e-10 -T = 700 - -/**** SPACE-TIME ****/ -Nx = 201 -Nz = 201 -Nt = 10 -xmin =-1.0 -zmin =-1.0 -xmax = 1.0 -zmax = 1.0 -advection = 1 -dt = 1e7 -constant_dt = 0 -Courant = 0.2 -penalty = 1e2 -lin_solver = 2 -diag_scaling = 0 -gnuplot_log_res = 0 -preconditioner = 1 -eta_average = 0 -num_deriv = 0 -stress_rotation = 1 -safe_mode = 1 -safe_dt_div = 2.0 -max_num_stag = 10 -IncrementalUpdateGrid = 1 - - -lin_abs_div = 1e-10 -lin_rel_div = 1e-10 -lin_abs_mom = 1e-10 / momentum tolerance (new in MD7.0) -lin_rel_mom = 1e-10 - -/**** SWITCHES ****/ -compressible = 1 -elastic = 1 -mechanical = 1 -RK = 4 -periodic_x = 0 -pure_shear_ALE = 0 -thermal = 0 -line_search = 1 -free_surface = 0 -free_surface_stab = 0 - -initial_cooling = 0 -subgrid_diffusion = 2 -shear_heating = 0 -adiab_heating = 0 -finite_strain = 0 - -/*** CHEMICAL ***/ -chemical_diffusion = 0 / -no_return = 0 -density_variations = 1 / renamed in MD7.0 (VolChangeReac) -unsplit_diff_reac = 0 - - -/**** STRESS PRELOADING ****/ -preload = 1; -preload_sxxd = 5e8; -preload_szzd = 5e8; -preload_sxz = 0 - -/**** SETUP DEPENDANT ****/ -shear_style = 0 -bkg_strain_rate = 1.0e-15 -bkg_pressure = 2.0e9 -user0 = 680.0 / temperature [°C] -user1 = 3.1558e9 -user2 = 10.0 -user3 = 0 - -/**** GRAVITY ****/ -gx = 0.0000 -gz = 0.0000 - -/**** MAT PROPERTIES ****/ -Nb_phases = 4 - -/**** PHASE 0 ****/ -ID = 0 -rho = 2850.00 / matrix Granulite -G = 4.0e10 -Cv = 1050.0 -k = 2.3 -Qr = 0.0 -C = 1.0e70 -phi = 10.0 -eta_vp = 5.0e19 -n_vp = 1.0 -Slim = 500e9 -alp = 0.0e-6 -bet = 1.25e-11 / (K=80e9) -drho = 0 -cstv = 0 / constant visc law -pwlv = 1 / disloc. creep -linv = 0 / diff. creep -gbsv = 0 / grain boundary sliding -expv = 0 / peierls creep -gsel = 0 / grain size evo. -eta0 = 1.0e22 -npwl = 1.0 -Qpwl = 0 -reac_soft = 1 -reac_phase = 0 -Pr = 1.0e80 -dPr = 700.0e6 -tau_kin = 3.1558e9 -k_chem = 5.0e-26 -density_model = 3 - -/**** PHASE 1 ****/ -ID = 1 -rho = 2850.00 / Dry CPX inclusion -G = 4.0e10 -Cv = 1050.0 -k = 2.3 -Qr = 0.0 -C = 1.0e70 -phi = 10.0 -eta_vp = 5.0e19 -n_vp = 1.0 -Slim = 500e9 -alp = 0.0e-6 -bet = 1.25e-11 / (K=80e9) -drho = 0 -cstv = 0 / constant visc law -pwlv = 1 / disloc. creep -linv = 0 / diff. creep -gbsv = 0 / grain boundary sliding -expv = 0 / peierls creep -gsel = 0 / grain size evo. -eta0 = 1.0e22 -npwl = 1.0 -Qpwl = 0 -reac_soft = 1 -reac_phase = 3 -Pr = 1.5e9 -dPr = 700.0e6 -tau_kin = 3.1558e9 -k_chem = 5.0e-26 -density_model = 3 - -/**** PHASE 2 ****/ -ID = 2 -rho = 2850.00 / matrix Granulite -G = 4.0e10 -Cv = 1050.0 -k = 2.3 -Qr = 0.0 -C = 1.0e70 -phi = 10.0 -eta_vp = 5.0e19 -n_vp = 1.0 -Slim = 500e9 -alp = 0.0e-6 -bet = 1.25e-11 / (K=80e9) -drho = 0 -cstv = 0 / constant visc law -pwlv = 1 / disloc. creep -linv = 0 / diff. creep -gbsv = 0 / grain boundary sliding -expv = 0 / peierls creep -gsel = 0 / grain size evo. -eta0 = 1.0e22 -npwl = 1.0 -Qpwl = 0 -reac_soft = 1 -reac_phase = 2 -Pr = 1.0e80 -dPr = 700.0e6 -tau_kin = 3.1558e9 -k_chem = 5.0e-26 -density_model = 3 - -/**** PHASE 3 ****/ -ID = 3 -rho = 3250.00 / keep granulite, only change in rho -G = 4.0e10 -Cv = 1050.0 -k = 2.3 -Qr = 0.0 -C = 1.0e70 -phi = 10.0 -eta_vp = 5.0e19 -n_vp = 1.0 -Slim = 500e9 -alp = 0.0e-6 -bet = 1.25e-11 / (K=80e9) -drho = 0 -cstv = 0 / constant visc law -pwlv = 1 / disloc. creep -linv = 0 / diff. creep -gbsv = 0 / grain boundary sliding -expv = 0 / peierls creep -gsel = 0 / grain size evo. -eta0 = 1.0e22 -npwl = 1.0 -Qpwl = 0 -reac_soft = 0 -reac_phase = 3 -Pr = 1.0e80 -dPr = 700.0e6 -tau_kin = 3.1558e9 -k_chem = 5.0e-26 -density_model = 3 - -/**** DEFMAPS ****/ -nT = 51 / Temperature resolutin [] -nE = 51 / Strain rate resolution [] -nd = 2 / Grain size resolution [] -Tmin = 240 / Temperature minimum [°C] -Tmax = 2000 / Temperature maximum [°C] -Emin = -50 / Strain rate minimum log_10 [1/s] -Emax = 5 / Strain rate maximum log_10 [1/s] -dmin = -7 / Grain size minimum log_10 [m] -dmax = -2 / Grain size maximum log_10 [m] -Pn = 1e9 / Pressure [Pa] - -/**** PARTICLES ****/ -Nx_part = 4 -Nz_part = 4 -min_part_cell = 16 - -/**** NON-LINEAR ITERATIONS ****/ -Newton = 1 -let_res_grow = 0 -line_search_min = 0.0 -Picard2Newton = 1 -Picard2Newton_tol = 2e-1 -nit_max = 30 -rel_tol_KSP = 5e-4 -nonlin_abs_mom = 1e-9 -nonlin_abs_div = 1e-9 -nonlin_rel_mom = 1e-9 -nonlin_rel_div = 1e-9 -min_eta = 1e10 -max_eta = 1e30 From d03697baa91f27c54bf7e4cf63a608bd8c607563 Mon Sep 17 00:00:00 2001 From: mthielma Date: Mon, 26 Feb 2024 18:41:44 +0100 Subject: [PATCH 05/21] removed output files from tests --- TestRun.txt | 704 ---------------------------- TestShrinking.txt | 1114 --------------------------------------------- 2 files changed, 1818 deletions(-) delete mode 100644 TestRun.txt delete mode 100644 TestShrinking.txt diff --git a/TestRun.txt b/TestRun.txt deleted file mode 100644 index 3df10d3f..00000000 --- a/TestRun.txt +++ /dev/null @@ -1,704 +0,0 @@ -cd cmake-exec/ShrinkingMarcel_test && ./ShrinkingMarcel_test - -******************************************************** -************ Starting MDOODZ 7.0 simulation ************ -******************************************************** -Warning : Parameter 'writer_subfolder' not found in the setup file, running with default value ./ -Warning : Parameter 'noisy' not found in the setup file, running with default value 1 -Warning : Parameter 'track_T_P_x_z' not found in the setup file, running with default value 0 -Warning : Parameter 'delete_breakpoints' not found in the setup file, running with default value 1 -Warning : Parameter 'import_files_dir' not found in the setup file, running with default value ../../IMPORT -Warning : Parameter 'import_file' not found in the setup file, running with default value blah.bin -Warning : Parameter 'save_initial_markers' not found in the setup file, running with default value 0 -Warning : Parameter 'load_initial_markers' not found in the setup file, running with default value 0 -Warning : Parameter 'initial_markers_file' not found in the setup file, running with default value markers.bin -Warning : Parameter 'balance_boundaries' not found in the setup file, running with default value 0 -Warning : Parameter 'anisotropy' not found in the setup file, running with default value 0 -Warning : Parameter 'polar' not found in the setup file, running with default value 0 -Warning : Parameter 'kinetics' not found in the setup file, running with default value 0 -Warning : Parameter 'out_of_plane' not found in the setup file, running with default value 0 -Warning : Parameter 'max_Pic_its' not found in the setup file, running with default value 10 -Warning : Parameter 'residual_form' not found in the setup file, running with default value 1 -Warning : Parameter 'ani_average' not found in the setup file, running with default value 1 -Warning : Parameter 'interp_stencil' not found in the setup file, running with default value 1 -Warning : Parameter 'conserv_interp' not found in the setup file, running with default value 0 -Warning : Parameter 'direct_neighbour' not found in the setup file, running with default value 0 -Warning : Parameter 'initial_noise' not found in the setup file, running with default value 0 -Warning : Parameter 'marker_noise' not found in the setup file, running with default value 0 -Warning : Parameter 'reseed_markers' not found in the setup file, running with default value 1 -Warning : Parameter 'topo_update' not found in the setup file, running with default value 1 -Warning : Parameter 'surface_processes' not found in the setup file, running with default value 0 -Warning : Parameter 'marker_aniso_angle' not found in the setup file, running with default value 0 -Warning : Parameter 'smooth_softening' not found in the setup file, running with default value 1 -Warning : Parameter 'fix_temperature' not found in the setup file, running with default value 0 -Warning : Parameter 'surf_ised1' not found in the setup file, running with default value 0 -Warning : Parameter 'surf_ised2' not found in the setup file, running with default value 0 -Warning : Parameter 'therm_perturb' not found in the setup file, running with default value 0 -Warning : Parameter 'force_act_vol_ast' not found in the setup file, running with default value 0 -Warning : Parameter 'diffuse_X' not found in the setup file, running with default value 0 -Warning : Parameter 'diffuse_avg' not found in the setup file, running with default value 0 -WARNING!! Changing from solver type 0 to solver type 2!!! That's the new standard in MDOODZ 6.0. -Warning : Parameter 'deformation_maps' not found in the setup file, running with default value 0 -Warning : Parameter 'plast' not found in the setup file, running with default value 1.00 -Warning : Parameter 'yield' not found in the setup file, running with default value 1.00 -Warning : Parameter 'sig_tens' not found in the setup file, running with default value 1.00e+07 -Warning : Parameter 'sig1' not found in the setup file, running with default value 1.00e+07 -Warning : Parameter 'dsig1' not found in the setup file, running with default value 1.00e+07 -Warning : Parameter 'psi' not found in the setup file, running with default value 0.00 -Warning : Parameter 'coh_soft' not found in the setup file, running with default value 0.00 -Warning : Parameter 'phi_soft' not found in the setup file, running with default value 0.00 -Warning : Parameter 'psi_soft' not found in the setup file, running with default value 0.00 -Warning : Parameter 'Ce' not found in the setup file, running with default value 1.00e+70 -Warning : Parameter 'phie' not found in the setup file, running with default value 10.00 -Warning : Parameter 'psie' not found in the setup file, running with default value 0.00 -0 materials.coh_soft[k]=0 materials.C[k] = 1.00e+70 materials.C_end[k] = 1.00e+70 -Warning : Parameter 'plss' not found in the setup file, running with default value 1.00 -Warning : Parameter 'plse' not found in the setup file, running with default value 2.00 -Warning : Parameter 'eps0' not found in the setup file, running with default value 0.00 -Warning : Parameter 'tau0' not found in the setup file, running with default value 2.00e+06 -Warning : Parameter 'pref_pwl' not found in the setup file, running with default value 1.00 -Warning : Parameter 'gs' not found in the setup file, running with default value 0.00 -Warning : Parameter 'gs_ref' not found in the setup file, running with default value 0.00 -Warning : Parameter 'kin' not found in the setup file, running with default value 0.00 -Warning : Parameter 'phase_diagram' not found in the setup file, running with default value -1.00 -Warning : Parameter 'phase_mix' not found in the setup file, running with default value 0.00 -Warning : Parameter 'phase_mix' not found in the setup file, running with default value 0.00 -Warning : Parameter 'aniso_angle' not found in the setup file, running with default value 90.00 -Warning : Parameter 'aniso_factor' not found in the setup file, running with default value 1.00 -Warning : Parameter 'ani_fac_max' not found in the setup file, running with default value 1.00e+03 -Warning : Parameter 'ani_fstrain' not found in the setup file, running with default value 0.00 -Warning : Parameter 'axx' not found in the setup file, running with default value 1.00 -Warning : Parameter 'azz' not found in the setup file, running with default value 1.00 -Warning : Parameter 'ayy' not found in the setup file, running with default value 1.00 -Warning : Parameter 'transmutation' not found in the setup file, running with default value 0.00 -Warning : Parameter 'transmutation_phase' not found in the setup file, running with default value 1.00 -Warning : Parameter 'transmutation_temperature' not found in the setup file, running with default value 1.40e+03 ------------------------------------------ MODEL DOMAIN ------------------------------------------ -Xmin = -0.0 km Xmax = 0.0 km Nx = 201 dx = 0.01 m -Zmin = -0.0 km Zmax = 0.0 km Nz = 201 dz = 0.01 m --------------------------------------------- PHASE: 0 ------------------------------------------- -rho = 2.85e+03 kg/m^3 G = 4.00e+10 Pa -Cv = 1.05e+03 J/kg/K k = 2.30e+00 W/m/K Qr = 0.00e+00 W/m3 -C = 1.00e+70 Pa phi = 1.00e+01 deg Slim = 5.00e+11 Pa -alp = 0.00e+00 1/T T0 = 2.73e+02 K bet = 1.25e-11 1/Pa P0 = 1.00e+05 Pa drho = 0.00e+00 kg/m^3 -prefactor for power-law: 1.00e+00 -C_end = 1.00e+70 Pa Phi_end = 1.00e+01 deg pls_start = 1.00e+00 pls_end = 2.00e+00 -eta0_vp = 5.00e+19 Pa.s^(1/n) n_vp = 1.00e+00 -aniso_factor = 1.00e+00 [] aniso_angle = 9.00e+01 deg ani_fac_max = 1.00e+03 [] ani_fstrain = 0 -Flow law settings: ----> Power law viscosity activated -'Homemade' power law flow of the form: eta = eta0 * exp(-Q/n/R/T) * Eii^(1/n - 1): -t = 0 n = 1.0 m = 0.0 r = 0.0 Q = 0.00e+00 J V = 0.00e+00 m^3 A = 1.00e-07 Pa^-n/s f = 0.00e+00 Pa a = 0.0 F = 1.00 -Warning : Parameter 'plast' not found in the setup file, running with default value 1.00 -Warning : Parameter 'yield' not found in the setup file, running with default value 1.00 -Warning : Parameter 'sig_tens' not found in the setup file, running with default value 1.00e+07 -Warning : Parameter 'sig1' not found in the setup file, running with default value 1.00e+07 -Warning : Parameter 'dsig1' not found in the setup file, running with default value 1.00e+07 -Warning : Parameter 'psi' not found in the setup file, running with default value 0.00 -Warning : Parameter 'coh_soft' not found in the setup file, running with default value 0.00 -Warning : Parameter 'phi_soft' not found in the setup file, running with default value 0.00 -Warning : Parameter 'psi_soft' not found in the setup file, running with default value 0.00 -Warning : Parameter 'Ce' not found in the setup file, running with default value 1.00e+70 -Warning : Parameter 'phie' not found in the setup file, running with default value 10.00 -Warning : Parameter 'psie' not found in the setup file, running with default value 0.00 -1 materials.coh_soft[k]=0 materials.C[k] = 1.00e+70 materials.C_end[k] = 1.00e+70 -Warning : Parameter 'plss' not found in the setup file, running with default value 1.00 -Warning : Parameter 'plse' not found in the setup file, running with default value 2.00 -Warning : Parameter 'eps0' not found in the setup file, running with default value 0.00 -Warning : Parameter 'tau0' not found in the setup file, running with default value 2.00e+06 -Warning : Parameter 'pref_pwl' not found in the setup file, running with default value 1.00 -Warning : Parameter 'gs' not found in the setup file, running with default value 0.00 -Warning : Parameter 'gs_ref' not found in the setup file, running with default value 0.00 -Warning : Parameter 'kin' not found in the setup file, running with default value 0.00 -Warning : Parameter 'phase_diagram' not found in the setup file, running with default value -1.00 -Warning : Parameter 'phase_mix' not found in the setup file, running with default value 0.00 -Warning : Parameter 'phase_mix' not found in the setup file, running with default value 1.00 -Warning : Parameter 'aniso_angle' not found in the setup file, running with default value 90.00 -Warning : Parameter 'aniso_factor' not found in the setup file, running with default value 1.00 -Warning : Parameter 'ani_fac_max' not found in the setup file, running with default value 1.00e+03 -Warning : Parameter 'ani_fstrain' not found in the setup file, running with default value 0.00 -Warning : Parameter 'axx' not found in the setup file, running with default value 1.00 -Warning : Parameter 'azz' not found in the setup file, running with default value 1.00 -Warning : Parameter 'ayy' not found in the setup file, running with default value 1.00 -Warning : Parameter 'transmutation' not found in the setup file, running with default value 0.00 -Warning : Parameter 'transmutation_phase' not found in the setup file, running with default value 1.00 -Warning : Parameter 'transmutation_temperature' not found in the setup file, running with default value 1.40e+03 ------------------------------------------ MODEL DOMAIN ------------------------------------------ -Xmin = -0.0 km Xmax = 0.0 km Nx = 201 dx = 0.01 m -Zmin = -0.0 km Zmax = 0.0 km Nz = 201 dz = 0.01 m --------------------------------------------- PHASE: 1 ------------------------------------------- -rho = 2.85e+03 kg/m^3 G = 4.00e+10 Pa -Cv = 1.05e+03 J/kg/K k = 2.30e+00 W/m/K Qr = 0.00e+00 W/m3 -C = 1.00e+70 Pa phi = 1.00e+01 deg Slim = 5.00e+11 Pa -alp = 0.00e+00 1/T T0 = 2.73e+02 K bet = 1.25e-11 1/Pa P0 = 1.00e+05 Pa drho = 0.00e+00 kg/m^3 -prefactor for power-law: 1.00e+00 -C_end = 1.00e+70 Pa Phi_end = 1.00e+01 deg pls_start = 1.00e+00 pls_end = 2.00e+00 -eta0_vp = 5.00e+19 Pa.s^(1/n) n_vp = 1.00e+00 -aniso_factor = 1.00e+00 [] aniso_angle = 9.00e+01 deg ani_fac_max = 1.00e+03 [] ani_fstrain = 0 -Flow law settings: ----> Power law viscosity activated -'Homemade' power law flow of the form: eta = eta0 * exp(-Q/n/R/T) * Eii^(1/n - 1): -t = 0 n = 1.0 m = 0.0 r = 0.0 Q = 0.00e+00 J V = 0.00e+00 m^3 A = 1.00e-07 Pa^-n/s f = 0.00e+00 Pa a = 0.0 F = 1.00 -Warning : Parameter 'plast' not found in the setup file, running with default value 1.00 -Warning : Parameter 'yield' not found in the setup file, running with default value 1.00 -Warning : Parameter 'sig_tens' not found in the setup file, running with default value 1.00e+07 -Warning : Parameter 'sig1' not found in the setup file, running with default value 1.00e+07 -Warning : Parameter 'dsig1' not found in the setup file, running with default value 1.00e+07 -Warning : Parameter 'psi' not found in the setup file, running with default value 0.00 -Warning : Parameter 'coh_soft' not found in the setup file, running with default value 0.00 -Warning : Parameter 'phi_soft' not found in the setup file, running with default value 0.00 -Warning : Parameter 'psi_soft' not found in the setup file, running with default value 0.00 -Warning : Parameter 'Ce' not found in the setup file, running with default value 1.00e+70 -Warning : Parameter 'phie' not found in the setup file, running with default value 10.00 -Warning : Parameter 'psie' not found in the setup file, running with default value 0.00 -2 materials.coh_soft[k]=0 materials.C[k] = 1.00e+70 materials.C_end[k] = 1.00e+70 -Warning : Parameter 'plss' not found in the setup file, running with default value 1.00 -Warning : Parameter 'plse' not found in the setup file, running with default value 2.00 -Warning : Parameter 'eps0' not found in the setup file, running with default value 0.00 -Warning : Parameter 'tau0' not found in the setup file, running with default value 2.00e+06 -Warning : Parameter 'pref_pwl' not found in the setup file, running with default value 1.00 -Warning : Parameter 'gs' not found in the setup file, running with default value 0.00 -Warning : Parameter 'gs_ref' not found in the setup file, running with default value 0.00 -Warning : Parameter 'kin' not found in the setup file, running with default value 0.00 -Warning : Parameter 'phase_diagram' not found in the setup file, running with default value -1.00 -Warning : Parameter 'phase_mix' not found in the setup file, running with default value 0.00 -Warning : Parameter 'phase_mix' not found in the setup file, running with default value 2.00 -Warning : Parameter 'aniso_angle' not found in the setup file, running with default value 90.00 -Warning : Parameter 'aniso_factor' not found in the setup file, running with default value 1.00 -Warning : Parameter 'ani_fac_max' not found in the setup file, running with default value 1.00e+03 -Warning : Parameter 'ani_fstrain' not found in the setup file, running with default value 0.00 -Warning : Parameter 'axx' not found in the setup file, running with default value 1.00 -Warning : Parameter 'azz' not found in the setup file, running with default value 1.00 -Warning : Parameter 'ayy' not found in the setup file, running with default value 1.00 -Warning : Parameter 'transmutation' not found in the setup file, running with default value 0.00 -Warning : Parameter 'transmutation_phase' not found in the setup file, running with default value 1.00 -Warning : Parameter 'transmutation_temperature' not found in the setup file, running with default value 1.40e+03 ------------------------------------------ MODEL DOMAIN ------------------------------------------ -Xmin = -0.0 km Xmax = 0.0 km Nx = 201 dx = 0.01 m -Zmin = -0.0 km Zmax = 0.0 km Nz = 201 dz = 0.01 m --------------------------------------------- PHASE: 2 ------------------------------------------- -rho = 2.85e+03 kg/m^3 G = 4.00e+10 Pa -Cv = 1.05e+03 J/kg/K k = 2.30e+00 W/m/K Qr = 0.00e+00 W/m3 -C = 1.00e+70 Pa phi = 1.00e+01 deg Slim = 5.00e+11 Pa -alp = 0.00e+00 1/T T0 = 2.73e+02 K bet = 1.25e-11 1/Pa P0 = 1.00e+05 Pa drho = 0.00e+00 kg/m^3 -prefactor for power-law: 1.00e+00 -C_end = 1.00e+70 Pa Phi_end = 1.00e+01 deg pls_start = 1.00e+00 pls_end = 2.00e+00 -eta0_vp = 5.00e+19 Pa.s^(1/n) n_vp = 1.00e+00 -aniso_factor = 1.00e+00 [] aniso_angle = 9.00e+01 deg ani_fac_max = 1.00e+03 [] ani_fstrain = 0 -Flow law settings: ----> Power law viscosity activated -'Homemade' power law flow of the form: eta = eta0 * exp(-Q/n/R/T) * Eii^(1/n - 1): -t = 0 n = 1.0 m = 0.0 r = 0.0 Q = 0.00e+00 J V = 0.00e+00 m^3 A = 1.00e-07 Pa^-n/s f = 0.00e+00 Pa a = 0.0 F = 1.00 -Warning : Parameter 'plast' not found in the setup file, running with default value 1.00 -Warning : Parameter 'yield' not found in the setup file, running with default value 1.00 -Warning : Parameter 'sig_tens' not found in the setup file, running with default value 1.00e+07 -Warning : Parameter 'sig1' not found in the setup file, running with default value 1.00e+07 -Warning : Parameter 'dsig1' not found in the setup file, running with default value 1.00e+07 -Warning : Parameter 'psi' not found in the setup file, running with default value 0.00 -Warning : Parameter 'coh_soft' not found in the setup file, running with default value 0.00 -Warning : Parameter 'phi_soft' not found in the setup file, running with default value 0.00 -Warning : Parameter 'psi_soft' not found in the setup file, running with default value 0.00 -Warning : Parameter 'Ce' not found in the setup file, running with default value 1.00e+70 -Warning : Parameter 'phie' not found in the setup file, running with default value 10.00 -Warning : Parameter 'psie' not found in the setup file, running with default value 0.00 -3 materials.coh_soft[k]=0 materials.C[k] = 1.00e+70 materials.C_end[k] = 1.00e+70 -Warning : Parameter 'plss' not found in the setup file, running with default value 1.00 -Warning : Parameter 'plse' not found in the setup file, running with default value 2.00 -Warning : Parameter 'eps0' not found in the setup file, running with default value 0.00 -Warning : Parameter 'tau0' not found in the setup file, running with default value 2.00e+06 -Warning : Parameter 'pref_pwl' not found in the setup file, running with default value 1.00 -Warning : Parameter 'gs' not found in the setup file, running with default value 0.00 -Warning : Parameter 'gs_ref' not found in the setup file, running with default value 0.00 -Warning : Parameter 'kin' not found in the setup file, running with default value 0.00 -Warning : Parameter 'phase_diagram' not found in the setup file, running with default value -1.00 -Warning : Parameter 'phase_mix' not found in the setup file, running with default value 0.00 -Warning : Parameter 'phase_mix' not found in the setup file, running with default value 3.00 -Warning : Parameter 'aniso_angle' not found in the setup file, running with default value 90.00 -Warning : Parameter 'aniso_factor' not found in the setup file, running with default value 1.00 -Warning : Parameter 'ani_fac_max' not found in the setup file, running with default value 1.00e+03 -Warning : Parameter 'ani_fstrain' not found in the setup file, running with default value 0.00 -Warning : Parameter 'axx' not found in the setup file, running with default value 1.00 -Warning : Parameter 'azz' not found in the setup file, running with default value 1.00 -Warning : Parameter 'ayy' not found in the setup file, running with default value 1.00 -Warning : Parameter 'transmutation' not found in the setup file, running with default value 0.00 -Warning : Parameter 'transmutation_phase' not found in the setup file, running with default value 1.00 -Warning : Parameter 'transmutation_temperature' not found in the setup file, running with default value 1.40e+03 ------------------------------------------ MODEL DOMAIN ------------------------------------------ -Xmin = -0.0 km Xmax = 0.0 km Nx = 201 dx = 0.01 m -Zmin = -0.0 km Zmax = 0.0 km Nz = 201 dz = 0.01 m --------------------------------------------- PHASE: 3 ------------------------------------------- -rho = 3.25e+03 kg/m^3 G = 4.00e+10 Pa -Cv = 1.05e+03 J/kg/K k = 2.30e+00 W/m/K Qr = 0.00e+00 W/m3 -C = 1.00e+70 Pa phi = 1.00e+01 deg Slim = 5.00e+11 Pa -alp = 0.00e+00 1/T T0 = 2.73e+02 K bet = 1.25e-11 1/Pa P0 = 1.00e+05 Pa drho = 0.00e+00 kg/m^3 -prefactor for power-law: 1.00e+00 -C_end = 1.00e+70 Pa Phi_end = 1.00e+01 deg pls_start = 1.00e+00 pls_end = 2.00e+00 -eta0_vp = 5.00e+19 Pa.s^(1/n) n_vp = 1.00e+00 -aniso_factor = 1.00e+00 [] aniso_angle = 9.00e+01 deg ani_fac_max = 1.00e+03 [] ani_fstrain = 0 -Flow law settings: ----> Power law viscosity activated -'Homemade' power law flow of the form: eta = eta0 * exp(-Q/n/R/T) * Eii^(1/n - 1): -t = 0 n = 1.0 m = 0.0 r = 0.0 Q = 0.00e+00 J V = 0.00e+00 m^3 A = 1.00e-07 Pa^-n/s f = 0.00e+00 Pa a = 0.0 F = 1.00 -Phase 0 --- density model 3 -Phase 1 --- density model 3 -Phase 2 --- density model 3 -Phase 3 --- density model 3 -************************************* -****** Allocate and initialise ****** -************************************* -Allocation of grid arrays ! -Memory succesfully allocated : -Diantre, que c'est bon! -Num threads = 001 -************************************* -******* Initialize particles ******** -************************************* -VxWestSum: 0.002000, VxEastSum: -0.002000 -VzWestSum: 0.000000, VzEastSum: 0.000000: -total West+East+South sum: 0.002000 -SetBCs: Boundary conditions were set up -Initial particle spacing : dxm = 0.002500 dzm = 0.002500 m -Initial number of particles = 640000 -min(Vxp init) = -9.9875000000e-16 max(Vxp init) = 9.9875000000e-16 -min(Vzp init) = -9.9875000000e-16 max(Vzp init) = 9.9875000000e-16 -min(Tp init) = 2.7315000000e+02 max(Tp init) = 2.7315000000e+02 -USING NEW PART IN CELL -min(Vx. grid) = 0.0000000000e+00 max(Vx. grid) = 0.0000000000e+00 -min(Vz. grid) = 0.0000000000e+00 max(Vz. grid) = 0.0000000000e+00 -min( P) = 0.0000000000e+00 max( P) = 0.0000000000e+00 -VxWestSum: 0.002000, VxEastSum: -0.002000 -VzWestSum: 0.000000, VzEastSum: 0.000000: -total West+East+South sum: 0.002000 -SetBCs: Boundary conditions were set up -Velocity field was set to background pure shear -min(Vx. grid) = -1.0000000000e-15 max(Vx. grid) = 1.0000000000e-15 -min(Vz. grid) = -1.0000000000e-15 max(Vz. grid) = 1.0000000000e-15 -min( P) = 2.0000000000e+09 max( P) = 2.0000000000e+09 -************************************* -****** Initialize temperature ******* -************************************* -VxWestSum: 0.002000, VxEastSum: -0.002000 -VzWestSum: 0.000000, VzEastSum: 0.000000: -total West+East+South sum: 0.002000 -SetBCs: Boundary conditions were set up -************************************* -******** Initialize stresses ******** -************************************* - ****** set preloaded values ****** -************************************* -******** Initialize pressure ******** -************************************* -min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 -min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 -min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 -min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 -min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 -min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 -min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 -min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 -min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 -min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 -************************************* -******* Initialize grain size ******* -************************************* -************************************* -******** Initialize density ********* -************************************* -************************************* -****** Initialize composition ******* -************************************* -************************************* -******* Initialize viscosity ******** -************************************* -Number of phases : 4 -min(d0 ) = 2.0000000000e-03 max(d0 ) = 2.0000000000e-03 -min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 -min(P litho ) = 2.0000000000e+09 max(P litho ) = 2.0000000000e+09 -min(P old ) = 2.0000000000e+09 max(P old ) = 2.0000000000e+09 -min(P ) = 2.0000000000e+09 max(P ) = 2.0000000000e+09 -min(T ) = 2.7315000000e+02 max(T ) = 2.7315000000e+02 -min(mu_s ) = 4.0000000000e+10 max(mu_s ) = 4.0000000000e+10 -min(mu_n ) = 4.0000000000e+10 max(mu_n ) = 4.0000000000e+10 -min(eta_s ) = 1.0000000000e+10 max(eta_s ) = 1.0000000000e+10 -min(eta_n ) = 1.0000000000e+10 max(eta_n ) = 1.0000000000e+10 -min(eta_phys_s) = 1.0000000000e+10 max(eta_phys_s) = 1.0000000000e+10 -min(eta_phys_n) = 1.0000000000e+10 max(eta_phys_n) = 1.0000000000e+10 -min(rho_s ) = 2.9221480935e+03 max(rho_s ) = 2.9221480935e+03 -min(rho_n ) = 2.9221480935e+03 max(rho_n ) = 3.2682078983e+03 -min(X_n ) = 0.0000000000e+00 max(X_n ) = 8.4378889438e-01 -min(X0_n ) = 0.0000000000e+00 max(X0_n ) = 0.0000000000e+00 -min(X0_s ) = 0.0000000000e+00 max(X0_s ) = 0.0000000000e+00 -min(X part) = 0.0000000000e+00 max(X part) = 0.0000000000e+00 -Phase number 0: -min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 1.0000000000e+00 -min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 1.0000000000e+00 -Phase number 1: -min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 1.0000000000e+00 -min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 1.0000000000e+00 -Phase number 2: -min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 0.0000000000e+00 -min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 0.0000000000e+00 -Phase number 3: -min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 0.0000000000e+00 -min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 0.0000000000e+00 -************************************* -******** Initialize timestep ******** -************************************* -Setting initial dt to minimum Maxwell time: 2.50e-01 -min. Maxwell = 2.50e-01 s, max. Maxwell = 2.50e-01 s -Suggested dt = 2.50e-01 s, VE dt = 2.50e-01 s -Initial timestep = 2.50e-01 s -************************************* -*** Write initial file or restart *** -************************************* -***************************************************** -****************** Time step 00001 ****************** -***************************************************** -Transmutated particles = 000 -Number of particles = 640000 -Min Vxm = -1.00e-15 m/s / Max Vxm = 1.00e-15 m/s -Min Vzm = -1.00e-15 m/s / Max Vzm = 1.00e-15 m/s -Courant number = 2.00e-01 --- dtc = 2.00e+12 -Do not allow for large time step increase: dt0 = 2.50e-01 -Timestep limited by advection -Current dt = 3.12e-01 s / Courant dt = 3.12e-01 s -Selected dt = 3.12e-01 ----> Detecting compressible cells ----> 40000 compressibles cells detected -min(d0 ) = 2.0000000000e-03 max(d0 ) = 2.0000000000e-03 -min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 -min(sxxd part ) = 5.0000000000e+08 max(sxxd part ) = 5.0000000000e+08 -min(T part ) = 2.7315000000e+02 max(T part ) = 2.7315000000e+02 -min(p0_n) = 2.0000000000e+09 max(p0_n) = 2.0000000000e+09 -min(sxz0 ) = 0.0000000000e+00 max(sxz0 ) = 0.0000000000e+00 -min(sxx0 ) = 5.0000000000e+08 max(sxx0 ) = 5.0000000000e+08 -min(szz0 ) = 5.0000000000e+08 max(szz0 ) = 5.0000000000e+08 -min(mu_s ) = 4.0000000000e+10 max(mu_s ) = 4.0000000000e+10 -min(mu_n ) = 4.0000000000e+10 max(mu_n ) = 4.0000000000e+10 -min(C_s ) = 1.0000000000e+70 max(C_s ) = 1.0000000000e+70 -min(C_n ) = 1.0000000000e+70 max(C_n ) = 1.0000000000e+70 -min(fric_s ) = 1.0000000000e+01 max(fric_s ) = 1.0000000000e+01 -min(fric_n ) = 1.0000000000e+01 max(fric_n ) = 1.0000000000e+01 -min(dil_s ) = 0.0000000000e+00 max(dil_s ) = 0.0000000000e+00 -min(dil_n ) = 0.0000000000e+00 max(dil_n ) = 0.0000000000e+00 -min(strain_s) = 0.0000000000e+00 max(strain_s) = 0.0000000000e+00 -min(strain_n) = 0.0000000000e+00 max(strain_n) = 0.0000000000e+00 -min(beta_s ) = 1.2500000000e-11 max(beta_s ) = 1.2500000000e-11 -min(beta_n ) = 1.2500000000e-11 max(beta_n ) = 1.2500000000e-11 -min(T0 ) = 2.7315000000e+02 max(T0 ) = 2.7315000000e+02 -min(T ) = 2.7315000000e+02 max(T ) = 2.7315000000e+02 -min(P ) = 2.0000000000e+09 max(P ) = 2.0000000000e+09 -min(comp_cells) = 1 max(comp_cells) = 1 -min(rho_s ) = 2.9221480935e+03 max(rho_s ) = 3.2682078983e+03 -min(rho_n ) = 2.9221480935e+03 max(rho_n ) = 3.2682078983e+03 -min(rho0_n ) = 2.9221480935e+03 max(rho0_n ) = 2.9221480935e+03 -min(X0_s ) = 0.0000000000e+00 max(X0_s ) = 0.0000000000e+00 -min(X0_n ) = 0.0000000000e+00 max(X0_n ) = 0.0000000000e+00 -Phase number 0: -min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 1.0000000000e+00 -min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 1.0000000000e+00 -Phase number 1: -min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 1.0000000000e+00 -min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 1.0000000000e+00 -Phase number 2: -min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 0.0000000000e+00 -min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 0.0000000000e+00 -Phase number 3: -min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 0.0000000000e+00 -min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 0.0000000000e+00 -** Time for particles interpolations I = 0.197227 sec -VxWestSum: 0.002000, VxEastSum: -0.002000 -VzWestSum: 0.000000, VzEastSum: 0.000000: -total West+East+South sum: 0.002000 -SetBCs: Boundary conditions were set up -Velocity field was set to background pure shear -Linear systems allocated -neq_tot = 119600, neq_mom = 79600, neq_cont = 40000 -Run CHOLMOD analysis yes/no: 1 -********************************************** -*** Picard it. 00 of 30 (step = 00001) on 016 threads *** -********************************************** -min(T ) = 2.7315000000e+02 max(T ) = 2.7315000000e+02 -min(P old ) = 2.0000000000e+09 max(P old ) = 2.0000000000e+09 -min(P ) = 2.0000000000e+09 max(P ) = 2.0000000000e+09 -min(div ) = -1.6940658945e-29 max(div ) = 1.6940658945e-29 -min(exxd ) = -1.0000000000e-15 max(exxd ) = -1.0000000000e-15 -min(ezzd ) = 1.0000000000e-15 max(ezzd ) = 1.0000000000e-15 -min(exz ) = 0.0000000000e+00 max(exz ) = 0.0000000000e+00 -min(sxxd ) = 4.0000000000e+08 max(sxxd ) = 4.0000000000e+08 -min(szzd ) = 4.0000000000e+08 max(szzd ) = 4.0000000000e+08 -min(sxz ) = 0.0000000000e+00 max(sxz ) = 0.0000000000e+00 -min(eta_s ) = 1.0000000000e+10 max(eta_s ) = 1.0000000000e+10 -min(eta_n ) = 1.0000000000e+10 max(eta_n ) = 1.0000000000e+10 -min(eta_phys_s) = 1.0000000000e+10 max(eta_phys_s) = 1.0000000000e+10 -min(eta_phys_n) = 1.0000000000e+10 max(eta_phys_n) = 1.0000000000e+10 -min(rho_s ) = 2.9221480935e+03 max(rho_s ) = 3.2682078983e+03 -min(rho_n ) = 2.9221480935e+03 max(rho_n ) = 2.9221480935e+03 -min(rho0_n ) = 2.9221480935e+03 max(rho0_n ) = 2.9221480935e+03 -min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 -min(X_s ) = 0.0000000000e+00 max(X_s ) = 8.3555367725e-11 -min(X_n ) = 0.0000000000e+00 max(X_n ) = 8.3555367725e-11 -Number of momentum equations: 79600 ----- Non-linear residual ---- -Fu abs. = 4.412238e-15 --- Fu rel. = 1.000000e+00 -Fv abs. = 4.755138e-15 --- Fv rel. = 1.000000e+00 -Fp abs. = 3.298896e-06 --- Fp rel. = 1.000000e+00 ----- Non-linear residual ---- ----- Solve Stokes in a decoupled/segregated fashion and defect correction mode, lin_solver = 2 ---- -Killer solver... -Preparing Matrices... -Penalty factor = 4.00e+06 -Construct preconditioner: PC = 1/2 * (J'+ J) -Compute Schur complement 1: Jt = J - grad*(PPI*div) -Compute Schur complement 2: Jts = PC - grad*(PPI*div) -Cholesky factors of Jts... -** Time for Cholesky analysis = 0.433468 sec -Powell-Hestenes iterations, noisy = 1... -Initial residual: -Fu = 4.586893e-15 -Fp = 3.298896e-06 -PH comp it. 0. its_KSP = 01: max. cont. = 5.29e-23 - rel. max. div. = 1.00e+00 / max. mom. = 1.24e-21 - rel. max. mom. = 1.00e+00 -PH comp it. 1. its_KSP = 01: max. cont. = 0.00e+00 - rel. max. div. = 0.00e+00 / max. mom. = 6.53e-22 - rel. max. mom. = 5.28e-01 -PH comp it. 2. its_KSP = 01: max. cont. = 0.00e+00 - rel. max. div. = 0.00e+00 / max. mom. = 7.21e-22 - rel. max. mom. = 5.83e-01 -** PH - iterations = 0.857229 sec - its_KSP_tot = 03 -Fu = 5.904833e-23 -Fv = 5.956773e-23 -Fp = 0.000000e+00 -** Time for direct Stokes solver = 0.874838 sec ----- Line search for decoupled Stokes equations ---- -Alpha = -0.000000 --> rx = 4.4122e-15 rz = 4.7551e-15 rp = 3.2989e-06 -Alpha = -0.500000 --> rx = 7.5586e-15 rz = 7.6601e-15 rp = 1.6494e-06 -Alpha = -1.000000 --> rx = 4.9634e-15 rz = 4.8336e-15 rp = 7.7629e-09 -Alpha = -1.500000 --> rx = 9.1114e-15 rz = 9.0753e-15 rp = 1.6496e-06 -Alpha = -2.000000 --> rx = 5.8116e-15 rz = 7.8548e-15 rp = 3.2991e-06 -Alpha = -2.500000 --> rx = 1.0388e-14 rz = 1.0428e-14 rp = 4.9486e-06 -Predicted Residuals : alpha = -1.000000 --> rx = 4.9634e-15 rz = 4.8336e-15 rp = 7.7629e-09 -** Line search took = 0.955470 sec -input.model.Newton = 0 --- 0 -********************************************** -*** Picard it. 01 of 30 (step = 00001) on 016 threads *** -********************************************** -min(T ) = 2.7315000000e+02 max(T ) = 2.7315000000e+02 -min(P old ) = 2.0000000000e+09 max(P old ) = 2.0000000000e+09 -min(P ) = 1.9999999997e+09 max(P ) = 2.0000000000e+09 -min(div ) = -2.3716103447e-11 max(div ) = 7.6611923318e-13 -min(exxd ) = -1.0868142076e-11 max(exxd ) = 1.1121512825e-11 -min(ezzd ) = -1.0866140644e-11 max(ezzd ) = 1.1123513917e-11 -min(exz ) = -8.0480814522e-12 max(exz ) = 1.3949259419e-11 -min(sxxd ) = 3.9999999978e+08 max(sxxd ) = 4.0000000022e+08 -min(szzd ) = 3.9999999978e+08 max(szzd ) = 4.0000000022e+08 -min(sxz ) = -1.6096162904e-01 max(sxz ) = 2.7898518837e-01 -min(eta_s ) = 1.0000000000e+10 max(eta_s ) = 1.0000000000e+10 -min(eta_n ) = 1.0000000000e+10 max(eta_n ) = 1.0000000000e+10 -min(eta_phys_s) = 1.0000000000e+10 max(eta_phys_s) = 1.0000000000e+10 -min(eta_phys_n) = 1.0000000000e+10 max(eta_phys_n) = 1.0000000000e+10 -min(rho_s ) = 2.9221480935e+03 max(rho_s ) = 3.2682078983e+03 -min(rho_n ) = 2.9221480935e+03 max(rho_n ) = 2.9221480935e+03 -min(rho0_n ) = 2.9221480935e+03 max(rho0_n ) = 2.9221480935e+03 -min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 -min(X_s ) = 0.0000000000e+00 max(X_s ) = 8.3555367713e-11 -min(X_n ) = 0.0000000000e+00 max(X_n ) = 8.3555367709e-11 -Number of momentum equations: 79600 ----- Non-linear residual ---- -Fu abs. = 4.963389e-15 --- Fu rel. = 1.124914e+00 -Fv abs. = 4.833638e-15 --- Fv rel. = 1.016509e+00 -Fp abs. = 7.762895e-09 --- Fp rel. = 2.353180e-03 ----- Non-linear residual ---- ----- Solve Stokes in a decoupled/segregated fashion and defect correction mode, lin_solver = 2 ---- -Killer solver... -Preparing Matrices... -Penalty factor = 4.00e+06 -Construct preconditioner: PC = 1/2 * (J'+ J) -Compute Schur complement 1: Jt = J - grad*(PPI*div) -Compute Schur complement 2: Jts = PC - grad*(PPI*div) -Cholesky factors of Jts... -Powell-Hestenes iterations, noisy = 1... -Initial residual: -Fu = 4.898943e-15 -Fp = 7.762895e-09 -PH comp it. 0. its_KSP = 01: max. cont. = 1.65e-24 - rel. max. div. = 1.00e+00 / max. mom. = 5.36e-25 - rel. max. mom. = 1.00e+00 -PH comp it. 1. its_KSP = 01: max. cont. = 0.00e+00 - rel. max. div. = 0.00e+00 / max. mom. = 2.78e-25 - rel. max. mom. = 5.18e-01 -PH comp it. 2. its_KSP = 01: max. cont. = 0.00e+00 - rel. max. div. = 0.00e+00 / max. mom. = 3.30e-25 - rel. max. mom. = 6.14e-01 -** PH - iterations = 0.495379 sec - its_KSP_tot = 03 -Fu = 2.902468e-26 -Fv = 3.006329e-26 -Fp = 0.000000e+00 -** Time for direct Stokes solver = 0.513833 sec ----- Line search for decoupled Stokes equations ---- -Alpha = -0.000000 --> rx = 4.9634e-15 rz = 4.8336e-15 rp = 7.7629e-09 -Alpha = -0.500000 --> rx = 1.2496e-14 rz = 1.2544e-14 rp = 3.5393e-09 -Alpha = -1.000000 --> rx = 7.0466e-15 rz = 7.4386e-15 rp = 3.7853e-09 -Alpha = -1.500000 --> rx = 1.3311e-14 rz = 1.3390e-14 rp = 3.7664e-09 -Alpha = -2.000000 --> rx = 9.5495e-15 rz = 9.5963e-15 rp = 1.4968e-08 -Alpha = -2.500000 --> rx = 1.6496e-14 rz = 1.6228e-14 rp = 1.5064e-08 -Predicted Residuals : alpha = -0.500000 --> rx = 1.2496e-14 rz = 1.2544e-14 rp = 3.5393e-09 -** Line search took = 0.588482 sec -input.model.Newton = 0 --- 1 -********************************************** -*** Newton it. 02 of 30 (step = 00001) on 016 threads *** -********************************************** -min(T ) = 2.7315000000e+02 max(T ) = 2.7315000000e+02 -min(P old ) = 2.0000000000e+09 max(P old ) = 2.0000000000e+09 -min(P ) = 1.9999999997e+09 max(P ) = 2.0000000000e+09 -min(div ) = -2.3710804509e-11 max(div ) = 7.6593599452e-13 -min(exxd ) = -1.0867554888e-11 max(exxd ) = 1.1120861002e-11 -min(ezzd ) = -1.0865549785e-11 max(ezzd ) = 1.1122865509e-11 -min(exz ) = -8.0458996198e-12 max(exz ) = 1.3945369588e-11 -min(sxxd ) = 3.9999999978e+08 max(sxxd ) = 4.0000000022e+08 -min(szzd ) = 3.9999999978e+08 max(szzd ) = 4.0000000022e+08 -min(sxz ) = -1.6091799240e-01 max(sxz ) = 2.7890739176e-01 -min(eta_s ) = 1.0000000000e+10 max(eta_s ) = 1.0000000000e+10 -min(eta_n ) = 1.0000000000e+10 max(eta_n ) = 1.0000000000e+10 -min(eta_phys_s) = 1.0000000000e+10 max(eta_phys_s) = 1.0000000000e+10 -min(eta_phys_n) = 1.0000000000e+10 max(eta_phys_n) = 1.0000000000e+10 -min(rho_s ) = 2.9221480935e+03 max(rho_s ) = 3.2682078983e+03 -min(rho_n ) = 2.9221480935e+03 max(rho_n ) = 2.9221480935e+03 -min(rho0_n ) = 2.9221480935e+03 max(rho0_n ) = 2.9221480935e+03 -min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 -min(X_s ) = 0.0000000000e+00 max(X_s ) = 8.3555367713e-11 -min(X_n ) = 0.0000000000e+00 max(X_n ) = 8.3555367709e-11 -Number of momentum equations: 79600 ----- Non-linear residual ---- -Fu abs. = 1.249632e-14 --- Fu rel. = 2.832195e+00 -Fv abs. = 1.254389e-14 --- Fv rel. = 2.637965e+00 -Fp abs. = 3.539259e-09 --- Fp rel. = 1.072862e-03 ----- Non-linear residual ---- ----- Solve Stokes in a decoupled/segregated fashion and defect correction mode, lin_solver = 2 ---- -Killer solver... -Preparing Matrices... -Penalty factor = 4.00e+06 -Construct preconditioner: PC = 1/2 * (J'+ J) -Compute Schur complement 1: Jt = J - grad*(PPI*div) -Compute Schur complement 2: Jts = PC - grad*(PPI*div) -Cholesky factors of Jts... -** Time for Cholesky analysis = 0.909565 sec -Powell-Hestenes iterations, noisy = 1... -Initial residual: -Fu = 1.252013e-14 -Fp = 3.539259e-09 -PH comp it. 0. its_KSP = 02: max. cont. = 8.27e-25 - rel. max. div. = 1.00e+00 / max. mom. = 8.04e-15 - rel. max. mom. = 1.00e+00 -PH comp it. 1. its_KSP = 02: max. cont. = 8.27e-25 - rel. max. div. = 1.00e+00 / max. mom. = 2.28e-19 - rel. max. mom. = 2.84e-05 -PH comp it. 2. its_KSP = 02: max. cont. = 4.14e-25 - rel. max. div. = 5.00e-01 / max. mom. = 2.14e-23 - rel. max. mom. = 2.66e-09 -** PH - iterations = 0.799232 sec - its_KSP_tot = 06 -Fu = 2.434197e-25 -Fv = 2.495852e-25 -Fp = 6.858619e-27 -** Time for direct Stokes solver = 1.829930 sec ----- Line search for decoupled Stokes equations ---- -Alpha = -0.000000 --> rx = 1.2496e-14 rz = 1.2544e-14 rp = 3.5393e-09 -Alpha = -0.200000 --> rx = 1.1710e-14 rz = 1.1743e-14 rp = 3.5012e-09 -Alpha = -0.400000 --> rx = 1.1016e-14 rz = 1.1031e-14 rp = 3.4719e-09 -Alpha = -0.600000 --> rx = 1.0451e-14 rz = 1.0474e-14 rp = 7.7397e-09 -Alpha = -0.800000 --> rx = 7.8611e-15 rz = 7.9228e-15 rp = 7.7644e-09 -Alpha = -1.000000 --> rx = 8.5879e-15 rz = 8.9604e-15 rp = 7.7908e-09 -Predicted Residuals : alpha = -0.400000 --> rx = 1.1016e-14 rz = 1.1031e-14 rp = 3.4719e-09 -** Line search took = 0.934472 sec -input.model.Newton = 1 --- 1 -********************************************** -*** Newton it. 03 of 30 (step = 00001) on 016 threads *** -********************************************** -min(T ) = 2.7315000000e+02 max(T ) = 2.7315000000e+02 -min(P old ) = 2.0000000000e+09 max(P old ) = 2.0000000000e+09 -min(P ) = 1.9999999997e+09 max(P ) = 2.0000000000e+09 -min(div ) = -2.3713688324e-11 max(div ) = 7.6602832090e-13 -min(exxd ) = -1.0867716270e-11 max(exxd ) = 1.1121056094e-11 -min(ezzd ) = -1.0865714466e-11 max(ezzd ) = 1.1123057758e-11 -min(exz ) = -8.0467676444e-12 max(exz ) = 1.3947197242e-11 -min(sxxd ) = 3.9999999978e+08 max(sxxd ) = 4.0000000022e+08 -min(szzd ) = 3.9999999978e+08 max(szzd ) = 4.0000000022e+08 -min(sxz ) = -1.6093535289e-01 max(sxz ) = 2.7894394484e-01 -min(eta_s ) = 1.0000000000e+10 max(eta_s ) = 1.0000000000e+10 -min(eta_n ) = 1.0000000000e+10 max(eta_n ) = 1.0000000000e+10 -min(eta_phys_s) = 1.0000000000e+10 max(eta_phys_s) = 1.0000000000e+10 -min(eta_phys_n) = 1.0000000000e+10 max(eta_phys_n) = 1.0000000000e+10 -min(rho_s ) = 2.9221480935e+03 max(rho_s ) = 3.2682078983e+03 -min(rho_n ) = 2.9221480935e+03 max(rho_n ) = 2.9221480935e+03 -min(rho0_n ) = 2.9221480935e+03 max(rho0_n ) = 2.9221480935e+03 -min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 -min(X_s ) = 0.0000000000e+00 max(X_s ) = 8.3555367713e-11 -min(X_n ) = 0.0000000000e+00 max(X_n ) = 8.3555367709e-11 -Number of momentum equations: 79600 ----- Non-linear residual ---- -Fu abs. = 1.101573e-14 --- Fu rel. = 2.496632e+00 -Fv abs. = 1.103127e-14 --- Fv rel. = 2.319863e+00 -Fp abs. = 3.471947e-09 --- Fp rel. = 1.052457e-03 ----- Non-linear residual ---- ----- Solve Stokes in a decoupled/segregated fashion and defect correction mode, lin_solver = 2 ---- -Killer solver... -Preparing Matrices... -Penalty factor = 4.00e+06 -Construct preconditioner: PC = 1/2 * (J'+ J) -Compute Schur complement 1: Jt = J - grad*(PPI*div) -Compute Schur complement 2: Jts = PC - grad*(PPI*div) -Cholesky factors of Jts... -Powell-Hestenes iterations, noisy = 1... -Initial residual: -Fu = 1.102350e-14 -Fp = 3.471947e-09 -PH comp it. 0. its_KSP = 02: max. cont. = 4.14e-25 - rel. max. div. = 1.00e+00 / max. mom. = 1.97e-14 - rel. max. mom. = 1.00e+00 -PH comp it. 1. its_KSP = 02: max. cont. = 8.27e-25 - rel. max. div. = 2.00e+00 / max. mom. = 3.67e-18 - rel. max. mom. = 1.87e-04 -PH comp it. 2. its_KSP = 02: max. cont. = 4.14e-25 - rel. max. div. = 1.00e+00 / max. mom. = 1.21e-21 - rel. max. mom. = 6.12e-08 -** PH - iterations = 0.502711 sec - its_KSP_tot = 06 -Fu = 1.278049e-23 -Fv = 1.256878e-23 -Fp = 1.194119e-26 -** Time for direct Stokes solver = 1.532827 sec ----- Line search for decoupled Stokes equations ---- -Alpha = -0.000000 --> rx = 1.1016e-14 rz = 1.1031e-14 rp = 3.4719e-09 -Alpha = -0.200000 --> rx = 1.0593e-14 rz = 1.0602e-14 rp = 7.7340e-09 -Alpha = -0.400000 --> rx = 1.0399e-14 rz = 1.0401e-14 rp = 7.7522e-09 -Alpha = -0.600000 --> rx = 1.0141e-14 rz = 1.0255e-14 rp = 7.7711e-09 -Alpha = -0.800000 --> rx = 9.0580e-15 rz = 9.3831e-15 rp = 7.7924e-09 -Alpha = -1.000000 --> rx = 1.0528e-14 rz = 1.0585e-14 rp = 7.8141e-09 -Predicted Residuals : alpha = -0.000000 --> rx = 1.1016e-14 rz = 1.1031e-14 rp = 3.4719e-09 -Found minimum of the function -- cannot iterate further down -Stagnating... -!** Line search took = 0.639096 sec -WARNING : Non-linear solver stagnated (nonlin_abs_mom = 1.00e-09 nonlin_abs_div = 1.00e-09) -WARNING : Non-linear solver stagnated (nonlin_rel_mom = 1.00e-09 nonlin_rel_div = 1.00e-09) -Reducing the timestep, and restart the iterations cycle... -Before reduction: input.model.dt =, 3.12e-01 -Timestep divided by 2.00 => NEW CURRENT input.model.dt =, 1.56e-01 -Restart solutions -nstag value = 01 - max_num_stag = 10 -********************************************** -*** Newton it. 00 of 30 (step = 00001) on 016 threads *** -********************************************** -min(T ) = 2.7315000000e+02 max(T ) = 2.7315000000e+02 -min(P old ) = 2.0000000000e+09 max(P old ) = 2.0000000000e+09 -min(P ) = 2.0000000000e+09 max(P ) = 2.0000000000e+09 -min(div ) = -1.6940658945e-29 max(div ) = 1.6940658945e-29 -min(exxd ) = -1.0000000000e-15 max(exxd ) = -1.0000000000e-15 -min(ezzd ) = 1.0000000000e-15 max(ezzd ) = 1.0000000000e-15 -min(exz ) = 0.0000000000e+00 max(exz ) = 0.0000000000e+00 -min(sxxd ) = 8.0000000000e+08 max(sxxd ) = 8.0000000000e+08 -min(szzd ) = 8.0000000000e+08 max(szzd ) = 8.0000000000e+08 -min(sxz ) = 0.0000000000e+00 max(sxz ) = 0.0000000000e+00 -min(eta_s ) = 1.0000000000e+10 max(eta_s ) = 1.0000000000e+10 -min(eta_n ) = 1.0000000000e+10 max(eta_n ) = 1.0000000000e+10 -min(eta_phys_s) = 1.0000000000e+10 max(eta_phys_s) = 1.0000000000e+10 -min(eta_phys_n) = 1.0000000000e+10 max(eta_phys_n) = 1.0000000000e+10 -min(rho_s ) = 2.9221480935e+03 max(rho_s ) = 3.2682078983e+03 -min(rho_n ) = 2.9221480935e+03 max(rho_n ) = 2.9221480935e+03 -min(rho0_n ) = 2.9221480935e+03 max(rho0_n ) = 2.9221480935e+03 -min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 -min(X_s ) = 0.0000000000e+00 max(X_s ) = 4.1777683865e-11 -min(X_n ) = 0.0000000000e+00 max(X_n ) = 4.1777683865e-11 -Number of momentum equations: 79600 ----- Non-linear residual ---- -Fu abs. = 8.508155e-15 --- Fu rel. = 1.000000e+00 -Fv abs. = 7.623295e-15 --- Fv rel. = 1.000000e+00 -Fp abs. = 3.300879e-06 --- Fp rel. = 1.000000e+00 ----- Non-linear residual ---- ----- Solve Stokes in a decoupled/segregated fashion and defect correction mode, lin_solver = 2 ---- -Killer solver... -Preparing Matrices... -Penalty factor = 4.00e+06 -Construct preconditioner: PC = 1/2 * (J'+ J) -Compute Schur complement 1: Jt = J - grad*(PPI*div) -Compute Schur complement 2: Jts = PC - grad*(PPI*div) -Cholesky factors of Jts... -CHOLMOD warning: matrix not positive definite. file: /tmp/suite-sparse-20240125-4352-4573qi/SuiteSparse-7.6.0/CHOLMOD/Supernodal/t_cholmod_super_numeric_worker.c line: 1090 -CHOLDMOD failed because the matrix is not positive definite... -MDoodz7.0 has to stop... -Viscosity or diagonal elements of the tangent matrix are probably negative! diff --git a/TestShrinking.txt b/TestShrinking.txt deleted file mode 100644 index 56221886..00000000 --- a/TestShrinking.txt +++ /dev/null @@ -1,1114 +0,0 @@ -rm -rf *build*/ && rm -rf *exec*/ -cmake -DOPT=ON -DOMP=ON -B ./cmake-build -DSET=Shrinking -DTXT= && cmake --build ./cmake-build --- The C compiler identification is GNU 13.2.0 --- The CXX compiler identification is AppleClang 14.0.3.14030022 --- Checking whether C compiler has -isysroot --- Checking whether C compiler has -isysroot - yes --- Checking whether C compiler supports OSX deployment target flag --- Checking whether C compiler supports OSX deployment target flag - yes --- Detecting C compiler ABI info --- Detecting C compiler ABI info - done --- Check for working C compiler: /usr/local/bin/gcc-13 - skipped --- Detecting C compile features --- Detecting C compile features - done --- Detecting CXX compiler ABI info --- Detecting CXX compiler ABI info - done --- Check for working CXX compiler: /Library/Developer/CommandLineTools/usr/bin/c++ - skipped --- Detecting CXX compile features --- Detecting CXX compile features - done --- Found HDF5: /usr/local/Cellar/hdf5/1.14.3/lib/libhdf5.dylib;/usr/local/opt/libaec/lib/libsz.dylib;/Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/usr/lib/libz.tbd;/Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/usr/lib/libdl.tbd;/Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/usr/lib/libm.tbd (found version "1.14.3") --- Found HDF5: /usr/local/Cellar/hdf5/1.14.3/lib/libhdf5.dylib;/usr/local/opt/libaec/lib/libsz.dylib;/Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/usr/lib/libz.tbd;/Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/usr/lib/libdl.tbd;/Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/usr/lib/libm.tbd (found version "1.14.3") found components: C --- Found OpenMP_C: -fopenmp (found version "4.5") --- Could NOT find OpenMP_CXX (missing: OpenMP_CXX_FLAGS OpenMP_CXX_LIB_NAMES) --- Could NOT find OpenMP (missing: OpenMP_CXX_FOUND) (found version "4.5") --- Configuring done (11.7s) --- Generating done (0.0s) --- Build files have been written to: /Users/mthiel/CODES/MDOODZ7.0_MT/cmake-build -[ 3%] Building C object MDLIB/CMakeFiles/mdoodz.dir/AdvectionRoutines.c.o -[ 7%] Building C object MDLIB/CMakeFiles/mdoodz.dir/AnisotropyRoutines.c.o -[ 11%] Building C object MDLIB/CMakeFiles/mdoodz.dir/ChemicalRoutines.c.o -[ 15%] Building C object MDLIB/CMakeFiles/mdoodz.dir/FD_Jacobian.c.o -[ 19%] Building C object MDLIB/CMakeFiles/mdoodz.dir/FlowLaws.c.o -[ 23%] Building C object MDLIB/CMakeFiles/mdoodz.dir/FreeSurface.c.o -[ 26%] Building C object MDLIB/CMakeFiles/mdoodz.dir/GridRoutines.c.o -[ 30%] Building C object MDLIB/CMakeFiles/mdoodz.dir/HDF5Output.c.o -[ 34%] Building C object MDLIB/CMakeFiles/mdoodz.dir/InputOutput.c.o -[ 38%] Building C object MDLIB/CMakeFiles/mdoodz.dir/Main_DOODZ.c.o -[ 42%] Building C object MDLIB/CMakeFiles/mdoodz.dir/MemoryAllocFree.c.o -[ 46%] Building C object MDLIB/CMakeFiles/mdoodz.dir/MiscFunctions.c.o -[ 50%] Building C object MDLIB/CMakeFiles/mdoodz.dir/ParticleReseeding.c.o -[ 53%] Building C object MDLIB/CMakeFiles/mdoodz.dir/ParticleRoutines.c.o -[ 57%] Building C object MDLIB/CMakeFiles/mdoodz.dir/RheologyDensity.c.o -[ 61%] Building C object MDLIB/CMakeFiles/mdoodz.dir/RheologyParticles.c.o -[ 65%] Building C object MDLIB/CMakeFiles/mdoodz.dir/Solvers.c.o -[ 69%] Building C object MDLIB/CMakeFiles/mdoodz.dir/SparseTools.c.o -[ 73%] Building C object MDLIB/CMakeFiles/mdoodz.dir/StokesAssemblyDecoupled.c.o -[ 76%] Building C object MDLIB/CMakeFiles/mdoodz.dir/StokesRoutines.c.o -[ 80%] Building C object MDLIB/CMakeFiles/mdoodz.dir/ThermalRoutines.c.o -[ 84%] Building C object MDLIB/CMakeFiles/mdoodz.dir/ThermalSolver.c.o -[ 88%] Building C object MDLIB/CMakeFiles/mdoodz.dir/Setup.c.o -[ 92%] Linking C shared library libmdoodz.dylib -[ 92%] Built target mdoodz -[ 96%] Building C object SETS/CMakeFiles/Shrinking.dir/Shrinking.c.o -[100%] Linking C executable /Users/mthiel/CODES/MDOODZ7.0_MT/cmake-exec/Shrinking/Shrinking -[100%] Built target Shrinking -cd cmake-exec/Shrinking && ./Shrinking - -******************************************************** -************ Starting MDOODZ 7.0 simulation ************ -******************************************************** -Warning : Parameter 'writer_subfolder' not found in the setup file, running with default value ./ -Warning : Parameter 'track_T_P_x_z' not found in the setup file, running with default value 0 -Warning : Parameter 'delete_breakpoints' not found in the setup file, running with default value 1 -Warning : Parameter 'import_files_dir' not found in the setup file, running with default value ../../IMPORT -Warning : Parameter 'import_file' not found in the setup file, running with default value blah.bin -Warning : Parameter 'save_initial_markers' not found in the setup file, running with default value 0 -Warning : Parameter 'load_initial_markers' not found in the setup file, running with default value 0 -Warning : Parameter 'initial_markers_file' not found in the setup file, running with default value markers.bin -Warning : Parameter 'balance_boundaries' not found in the setup file, running with default value 0 -Warning : Parameter 'anisotropy' not found in the setup file, running with default value 0 -Warning : Parameter 'polar' not found in the setup file, running with default value 0 -Warning : Parameter 'kinetics' not found in the setup file, running with default value 0 -Warning : Parameter 'out_of_plane' not found in the setup file, running with default value 0 -Warning : Parameter 'max_Pic_its' not found in the setup file, running with default value 10 -Warning : Parameter 'residual_form' not found in the setup file, running with default value 1 -Warning : Parameter 'ani_average' not found in the setup file, running with default value 1 -Warning : Parameter 'interp_stencil' not found in the setup file, running with default value 1 -Warning : Parameter 'conserv_interp' not found in the setup file, running with default value 0 -Warning : Parameter 'direct_neighbour' not found in the setup file, running with default value 0 -Warning : Parameter 'initial_noise' not found in the setup file, running with default value 0 -Warning : Parameter 'marker_noise' not found in the setup file, running with default value 0 -Warning : Parameter 'reseed_markers' not found in the setup file, running with default value 1 -Warning : Parameter 'topo_update' not found in the setup file, running with default value 1 -Warning : Parameter 'surface_processes' not found in the setup file, running with default value 0 -Warning : Parameter 'marker_aniso_angle' not found in the setup file, running with default value 0 -Warning : Parameter 'smooth_softening' not found in the setup file, running with default value 1 -Warning : Parameter 'fix_temperature' not found in the setup file, running with default value 0 -Warning : Parameter 'surf_ised1' not found in the setup file, running with default value 0 -Warning : Parameter 'surf_ised2' not found in the setup file, running with default value 0 -Warning : Parameter 'preload' not found in the setup file, running with default value 0 -Warning : Parameter 'therm_perturb' not found in the setup file, running with default value 0 -Warning : Parameter 'force_act_vol_ast' not found in the setup file, running with default value 0 -Warning : Parameter 'diffuse_X' not found in the setup file, running with default value 0 -Warning : Parameter 'diffuse_avg' not found in the setup file, running with default value 0 -WARNING!! Changing from solver type 0 to solver type 2!!! That's the new standard in MDOODZ 6.0. -Warning : Parameter 'deformation_maps' not found in the setup file, running with default value 0 -Warning : Parameter 'plast' not found in the setup file, running with default value 1.00 -Warning : Parameter 'yield' not found in the setup file, running with default value 1.00 -Warning : Parameter 'sig_tens' not found in the setup file, running with default value 1.00e+07 -Warning : Parameter 'sig1' not found in the setup file, running with default value 1.00e+07 -Warning : Parameter 'dsig1' not found in the setup file, running with default value 1.00e+07 -Warning : Parameter 'psi' not found in the setup file, running with default value 0.00 -Warning : Parameter 'coh_soft' not found in the setup file, running with default value 0.00 -Warning : Parameter 'phi_soft' not found in the setup file, running with default value 0.00 -Warning : Parameter 'psi_soft' not found in the setup file, running with default value 0.00 -Warning : Parameter 'Ce' not found in the setup file, running with default value 1.00e+70 -Warning : Parameter 'phie' not found in the setup file, running with default value 10.00 -Warning : Parameter 'psie' not found in the setup file, running with default value 0.00 -0 materials.coh_soft[k]=0 materials.C[k] = 1.00e+70 materials.C_end[k] = 1.00e+70 -Warning : Parameter 'plss' not found in the setup file, running with default value 1.00 -Warning : Parameter 'plse' not found in the setup file, running with default value 2.00 -Warning : Parameter 'eps0' not found in the setup file, running with default value 0.00 -Warning : Parameter 'tau0' not found in the setup file, running with default value 2.00e+06 -Warning : Parameter 'pref_pwl' not found in the setup file, running with default value 1.00 -Warning : Parameter 'gs' not found in the setup file, running with default value 0.00 -Warning : Parameter 'gs_ref' not found in the setup file, running with default value 0.00 -Warning : Parameter 'kin' not found in the setup file, running with default value 0.00 -Warning : Parameter 'phase_diagram' not found in the setup file, running with default value -1.00 -Warning : Parameter 'phase_mix' not found in the setup file, running with default value 0.00 -Warning : Parameter 'phase_mix' not found in the setup file, running with default value 0.00 -Warning : Parameter 'aniso_angle' not found in the setup file, running with default value 90.00 -Warning : Parameter 'aniso_factor' not found in the setup file, running with default value 1.00 -Warning : Parameter 'ani_fac_max' not found in the setup file, running with default value 1.00e+03 -Warning : Parameter 'ani_fstrain' not found in the setup file, running with default value 0.00 -Warning : Parameter 'axx' not found in the setup file, running with default value 1.00 -Warning : Parameter 'azz' not found in the setup file, running with default value 1.00 -Warning : Parameter 'ayy' not found in the setup file, running with default value 1.00 -Warning : Parameter 'transmutation' not found in the setup file, running with default value 0.00 -Warning : Parameter 'transmutation_phase' not found in the setup file, running with default value 1.00 -Warning : Parameter 'transmutation_temperature' not found in the setup file, running with default value 1.40e+03 ------------------------------------------ MODEL DOMAIN ------------------------------------------ -Xmin = -0.0 km Xmax = 0.0 km Nx = 64 dx = 0.00 m -Zmin = -0.0 km Zmax = 0.0 km Nz = 64 dz = 0.00 m --------------------------------------------- PHASE: 0 ------------------------------------------- -rho = 2.85e+03 kg/m^3 G = 4.00e+10 Pa -Cv = 1.05e+03 J/kg/K k = 2.30e+00 W/m/K Qr = 0.00e+00 W/m3 -C = 1.00e+70 Pa phi = 1.00e+01 deg Slim = 5.00e+11 Pa -alp = 0.00e+00 1/T T0 = 2.73e+02 K bet = 1.25e-11 1/Pa P0 = 1.00e+05 Pa drho = 0.00e+00 kg/m^3 -prefactor for power-law: 1.00e+00 -C_end = 1.00e+70 Pa Phi_end = 1.00e+01 deg pls_start = 1.00e+00 pls_end = 2.00e+00 -eta0_vp = 5.00e+19 Pa.s^(1/n) n_vp = 1.00e+00 -aniso_factor = 1.00e+00 [] aniso_angle = 9.00e+01 deg ani_fac_max = 1.00e+03 [] ani_fstrain = 0 -Flow law settings: ----> Power law viscosity activated -'Homemade' power law flow of the form: eta = eta0 * exp(-Q/n/R/T) * Eii^(1/n - 1): -t = 0 n = 1.0 m = 0.0 r = 0.0 Q = 0.00e+00 J V = 0.00e+00 m^3 A = 1.00e-10 Pa^-n/s f = 0.00e+00 Pa a = 0.0 F = 1.00 -Warning : Parameter 'plast' not found in the setup file, running with default value 1.00 -Warning : Parameter 'yield' not found in the setup file, running with default value 1.00 -Warning : Parameter 'sig_tens' not found in the setup file, running with default value 1.00e+07 -Warning : Parameter 'sig1' not found in the setup file, running with default value 1.00e+07 -Warning : Parameter 'dsig1' not found in the setup file, running with default value 1.00e+07 -Warning : Parameter 'psi' not found in the setup file, running with default value 0.00 -Warning : Parameter 'coh_soft' not found in the setup file, running with default value 0.00 -Warning : Parameter 'phi_soft' not found in the setup file, running with default value 0.00 -Warning : Parameter 'psi_soft' not found in the setup file, running with default value 0.00 -Warning : Parameter 'Ce' not found in the setup file, running with default value 1.00e+70 -Warning : Parameter 'phie' not found in the setup file, running with default value 10.00 -Warning : Parameter 'psie' not found in the setup file, running with default value 0.00 -1 materials.coh_soft[k]=0 materials.C[k] = 1.00e+70 materials.C_end[k] = 1.00e+70 -Warning : Parameter 'plss' not found in the setup file, running with default value 1.00 -Warning : Parameter 'plse' not found in the setup file, running with default value 2.00 -Warning : Parameter 'eps0' not found in the setup file, running with default value 0.00 -Warning : Parameter 'tau0' not found in the setup file, running with default value 2.00e+06 -Warning : Parameter 'pref_pwl' not found in the setup file, running with default value 1.00 -Warning : Parameter 'gs' not found in the setup file, running with default value 0.00 -Warning : Parameter 'gs_ref' not found in the setup file, running with default value 0.00 -Warning : Parameter 'kin' not found in the setup file, running with default value 0.00 -Warning : Parameter 'phase_diagram' not found in the setup file, running with default value -1.00 -Warning : Parameter 'phase_mix' not found in the setup file, running with default value 0.00 -Warning : Parameter 'phase_mix' not found in the setup file, running with default value 1.00 -Warning : Parameter 'aniso_angle' not found in the setup file, running with default value 90.00 -Warning : Parameter 'aniso_factor' not found in the setup file, running with default value 1.00 -Warning : Parameter 'ani_fac_max' not found in the setup file, running with default value 1.00e+03 -Warning : Parameter 'ani_fstrain' not found in the setup file, running with default value 0.00 -Warning : Parameter 'axx' not found in the setup file, running with default value 1.00 -Warning : Parameter 'azz' not found in the setup file, running with default value 1.00 -Warning : Parameter 'ayy' not found in the setup file, running with default value 1.00 -Warning : Parameter 'transmutation' not found in the setup file, running with default value 0.00 -Warning : Parameter 'transmutation_phase' not found in the setup file, running with default value 1.00 -Warning : Parameter 'transmutation_temperature' not found in the setup file, running with default value 1.40e+03 ------------------------------------------ MODEL DOMAIN ------------------------------------------ -Xmin = -0.0 km Xmax = 0.0 km Nx = 64 dx = 0.00 m -Zmin = -0.0 km Zmax = 0.0 km Nz = 64 dz = 0.00 m --------------------------------------------- PHASE: 1 ------------------------------------------- -rho = 2.85e+03 kg/m^3 G = 4.00e+10 Pa -Cv = 1.05e+03 J/kg/K k = 2.30e+00 W/m/K Qr = 0.00e+00 W/m3 -C = 1.00e+70 Pa phi = 1.00e+01 deg Slim = 5.00e+11 Pa -alp = 0.00e+00 1/T T0 = 2.73e+02 K bet = 1.25e-11 1/Pa P0 = 1.00e+05 Pa drho = 0.00e+00 kg/m^3 -prefactor for power-law: 1.00e+00 -C_end = 1.00e+70 Pa Phi_end = 1.00e+01 deg pls_start = 1.00e+00 pls_end = 2.00e+00 -eta0_vp = 5.00e+19 Pa.s^(1/n) n_vp = 1.00e+00 -aniso_factor = 1.00e+00 [] aniso_angle = 9.00e+01 deg ani_fac_max = 1.00e+03 [] ani_fstrain = 0 -Flow law settings: ----> Power law viscosity activated -'Homemade' power law flow of the form: eta = eta0 * exp(-Q/n/R/T) * Eii^(1/n - 1): -t = 0 n = 1.0 m = 0.0 r = 0.0 Q = 0.00e+00 J V = 0.00e+00 m^3 A = 1.00e-10 Pa^-n/s f = 0.00e+00 Pa a = 0.0 F = 1.00 -Warning : Parameter 'plast' not found in the setup file, running with default value 1.00 -Warning : Parameter 'yield' not found in the setup file, running with default value 1.00 -Warning : Parameter 'sig_tens' not found in the setup file, running with default value 1.00e+07 -Warning : Parameter 'sig1' not found in the setup file, running with default value 1.00e+07 -Warning : Parameter 'dsig1' not found in the setup file, running with default value 1.00e+07 -Warning : Parameter 'psi' not found in the setup file, running with default value 0.00 -Warning : Parameter 'coh_soft' not found in the setup file, running with default value 0.00 -Warning : Parameter 'phi_soft' not found in the setup file, running with default value 0.00 -Warning : Parameter 'psi_soft' not found in the setup file, running with default value 0.00 -Warning : Parameter 'Ce' not found in the setup file, running with default value 1.00e+70 -Warning : Parameter 'phie' not found in the setup file, running with default value 10.00 -Warning : Parameter 'psie' not found in the setup file, running with default value 0.00 -2 materials.coh_soft[k]=0 materials.C[k] = 1.00e+70 materials.C_end[k] = 1.00e+70 -Warning : Parameter 'plss' not found in the setup file, running with default value 1.00 -Warning : Parameter 'plse' not found in the setup file, running with default value 2.00 -Warning : Parameter 'eps0' not found in the setup file, running with default value 0.00 -Warning : Parameter 'tau0' not found in the setup file, running with default value 2.00e+06 -Warning : Parameter 'pref_pwl' not found in the setup file, running with default value 1.00 -Warning : Parameter 'gs' not found in the setup file, running with default value 0.00 -Warning : Parameter 'gs_ref' not found in the setup file, running with default value 0.00 -Warning : Parameter 'kin' not found in the setup file, running with default value 0.00 -Warning : Parameter 'phase_diagram' not found in the setup file, running with default value -1.00 -Warning : Parameter 'phase_mix' not found in the setup file, running with default value 0.00 -Warning : Parameter 'phase_mix' not found in the setup file, running with default value 2.00 -Warning : Parameter 'aniso_angle' not found in the setup file, running with default value 90.00 -Warning : Parameter 'aniso_factor' not found in the setup file, running with default value 1.00 -Warning : Parameter 'ani_fac_max' not found in the setup file, running with default value 1.00e+03 -Warning : Parameter 'ani_fstrain' not found in the setup file, running with default value 0.00 -Warning : Parameter 'axx' not found in the setup file, running with default value 1.00 -Warning : Parameter 'azz' not found in the setup file, running with default value 1.00 -Warning : Parameter 'ayy' not found in the setup file, running with default value 1.00 -Warning : Parameter 'transmutation' not found in the setup file, running with default value 0.00 -Warning : Parameter 'transmutation_phase' not found in the setup file, running with default value 1.00 -Warning : Parameter 'transmutation_temperature' not found in the setup file, running with default value 1.40e+03 ------------------------------------------ MODEL DOMAIN ------------------------------------------ -Xmin = -0.0 km Xmax = 0.0 km Nx = 64 dx = 0.00 m -Zmin = -0.0 km Zmax = 0.0 km Nz = 64 dz = 0.00 m --------------------------------------------- PHASE: 2 ------------------------------------------- -rho = 2.85e+03 kg/m^3 G = 4.00e+10 Pa -Cv = 1.05e+03 J/kg/K k = 2.30e+00 W/m/K Qr = 0.00e+00 W/m3 -C = 1.00e+70 Pa phi = 1.00e+01 deg Slim = 5.00e+11 Pa -alp = 0.00e+00 1/T T0 = 2.73e+02 K bet = 1.25e-11 1/Pa P0 = 1.00e+05 Pa drho = 0.00e+00 kg/m^3 -prefactor for power-law: 1.00e+00 -C_end = 1.00e+70 Pa Phi_end = 1.00e+01 deg pls_start = 1.00e+00 pls_end = 2.00e+00 -eta0_vp = 5.00e+19 Pa.s^(1/n) n_vp = 1.00e+00 -aniso_factor = 1.00e+00 [] aniso_angle = 9.00e+01 deg ani_fac_max = 1.00e+03 [] ani_fstrain = 0 -Flow law settings: ----> Power law viscosity activated -'Homemade' power law flow of the form: eta = eta0 * exp(-Q/n/R/T) * Eii^(1/n - 1): -t = 0 n = 1.0 m = 0.0 r = 0.0 Q = 0.00e+00 J V = 0.00e+00 m^3 A = 1.00e-10 Pa^-n/s f = 0.00e+00 Pa a = 0.0 F = 1.00 -Warning : Parameter 'plast' not found in the setup file, running with default value 1.00 -Warning : Parameter 'yield' not found in the setup file, running with default value 1.00 -Warning : Parameter 'sig_tens' not found in the setup file, running with default value 1.00e+07 -Warning : Parameter 'sig1' not found in the setup file, running with default value 1.00e+07 -Warning : Parameter 'dsig1' not found in the setup file, running with default value 1.00e+07 -Warning : Parameter 'psi' not found in the setup file, running with default value 0.00 -Warning : Parameter 'coh_soft' not found in the setup file, running with default value 0.00 -Warning : Parameter 'phi_soft' not found in the setup file, running with default value 0.00 -Warning : Parameter 'psi_soft' not found in the setup file, running with default value 0.00 -Warning : Parameter 'Ce' not found in the setup file, running with default value 1.00e+70 -Warning : Parameter 'phie' not found in the setup file, running with default value 10.00 -Warning : Parameter 'psie' not found in the setup file, running with default value 0.00 -3 materials.coh_soft[k]=0 materials.C[k] = 1.00e+70 materials.C_end[k] = 1.00e+70 -Warning : Parameter 'plss' not found in the setup file, running with default value 1.00 -Warning : Parameter 'plse' not found in the setup file, running with default value 2.00 -Warning : Parameter 'eps0' not found in the setup file, running with default value 0.00 -Warning : Parameter 'tau0' not found in the setup file, running with default value 2.00e+06 -Warning : Parameter 'pref_pwl' not found in the setup file, running with default value 1.00 -Warning : Parameter 'gs' not found in the setup file, running with default value 0.00 -Warning : Parameter 'gs_ref' not found in the setup file, running with default value 0.00 -Warning : Parameter 'kin' not found in the setup file, running with default value 0.00 -Warning : Parameter 'phase_diagram' not found in the setup file, running with default value -1.00 -Warning : Parameter 'phase_mix' not found in the setup file, running with default value 0.00 -Warning : Parameter 'phase_mix' not found in the setup file, running with default value 3.00 -Warning : Parameter 'aniso_angle' not found in the setup file, running with default value 90.00 -Warning : Parameter 'aniso_factor' not found in the setup file, running with default value 1.00 -Warning : Parameter 'ani_fac_max' not found in the setup file, running with default value 1.00e+03 -Warning : Parameter 'ani_fstrain' not found in the setup file, running with default value 0.00 -Warning : Parameter 'axx' not found in the setup file, running with default value 1.00 -Warning : Parameter 'azz' not found in the setup file, running with default value 1.00 -Warning : Parameter 'ayy' not found in the setup file, running with default value 1.00 -Warning : Parameter 'transmutation' not found in the setup file, running with default value 0.00 -Warning : Parameter 'transmutation_phase' not found in the setup file, running with default value 1.00 -Warning : Parameter 'transmutation_temperature' not found in the setup file, running with default value 1.40e+03 ------------------------------------------ MODEL DOMAIN ------------------------------------------ -Xmin = -0.0 km Xmax = 0.0 km Nx = 64 dx = 0.00 m -Zmin = -0.0 km Zmax = 0.0 km Nz = 64 dz = 0.00 m --------------------------------------------- PHASE: 3 ------------------------------------------- -rho = 2.85e+03 kg/m^3 G = 4.00e+10 Pa -Cv = 1.05e+03 J/kg/K k = 2.30e+00 W/m/K Qr = 0.00e+00 W/m3 -C = 1.00e+70 Pa phi = 1.00e+01 deg Slim = 5.00e+11 Pa -alp = 0.00e+00 1/T T0 = 2.73e+02 K bet = 1.25e-11 1/Pa P0 = 1.00e+05 Pa drho = 0.00e+00 kg/m^3 -prefactor for power-law: 1.00e+00 -C_end = 1.00e+70 Pa Phi_end = 1.00e+01 deg pls_start = 1.00e+00 pls_end = 2.00e+00 -eta0_vp = 5.00e+19 Pa.s^(1/n) n_vp = 1.00e+00 -aniso_factor = 1.00e+00 [] aniso_angle = 9.00e+01 deg ani_fac_max = 1.00e+03 [] ani_fstrain = 0 -Flow law settings: ----> Power law viscosity activated -'Homemade' power law flow of the form: eta = eta0 * exp(-Q/n/R/T) * Eii^(1/n - 1): -t = 0 n = 1.0 m = 0.0 r = 0.0 Q = 0.00e+00 J V = 0.00e+00 m^3 A = 1.00e-10 Pa^-n/s f = 0.00e+00 Pa a = 0.0 F = 1.00 -Phase 0 --- density model 3 -Phase 1 --- density model 3 -Phase 2 --- density model 3 -Phase 3 --- density model 3 -************************************* -****** Allocate and initialise ****** -************************************* -Allocation of grid arrays ! -Memory succesfully allocated : -Diantre, que c'est bon! -Num threads = 001 -************************************* -******* Initialize particles ******** -************************************* -VxWestSum: 0.000000, VxEastSum: 0.000000 -VzWestSum: 0.000000, VzEastSum: 0.000000: -total West+East+South sum: 0.000000 -SetBCs: Boundary conditions were set up -Initial particle spacing : dxm = 0.000397 dzm = 0.000397 m -Initial number of particles = 63504 -min(Vxp init) = 0.0000000000e+00 max(Vxp init) = 0.0000000000e+00 -min(Vzp init) = -0.0000000000e+00 max(Vzp init) = -0.0000000000e+00 -min(Tp init) = 2.7315000000e+02 max(Tp init) = 2.7315000000e+02 -min(sxxd part ) = -1.0000000000e+08 max(sxxd part ) = -1.0000000000e+08 -min(szzd part ) = 1.0000000000e+08 max(szzd part ) = 1.0000000000e+08 -min(sxz part ) = -1.0000000000e+08 max(sxz part ) = -1.0000000000e+08 -USING NEW PART IN CELL -min(Vx. grid) = 0.0000000000e+00 max(Vx. grid) = 0.0000000000e+00 -min(Vz. grid) = 0.0000000000e+00 max(Vz. grid) = 0.0000000000e+00 -min( P) = 0.0000000000e+00 max( P) = 0.0000000000e+00 -VxWestSum: 0.000000, VxEastSum: 0.000000 -VzWestSum: 0.000000, VzEastSum: 0.000000: -total West+East+South sum: 0.000000 -SetBCs: Boundary conditions were set up -Velocity field was set to background pure shear -min(Vx. grid) = 0.0000000000e+00 max(Vx. grid) = 0.0000000000e+00 -min(Vz. grid) = -0.0000000000e+00 max(Vz. grid) = -0.0000000000e+00 -min( P) = 2.0000000000e+09 max( P) = 2.0000000000e+09 -************************************* -****** Initialize temperature ******* -************************************* -VxWestSum: 0.000000, VxEastSum: 0.000000 -VzWestSum: 0.000000, VzEastSum: 0.000000: -total West+East+South sum: 0.000000 -SetBCs: Boundary conditions were set up -************************************* -******** Initialize stresses ******** -************************************* -min(Sxx initial ) = -1.0000000000e+08 max(Sxx initial ) = -1.0000000000e+08 -min(Szz initial ) = 1.0000000000e+08 max(Szz initial ) = 1.0000000000e+08 -************************************* -******** Initialize pressure ******** -************************************* -min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 -min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 -min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 -min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 -min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 -min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 -min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 -min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 -min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 -min(P initial ) = 2.0000000000e+09 max(P initial ) = 2.0000000000e+09 -************************************* -******* Initialize grain size ******* -************************************* -************************************* -******** Initialize density ********* -************************************* -************************************* -****** Initialize composition ******* -************************************* -************************************* -******* Initialize viscosity ******** -************************************* -Number of phases : 4 -min(d0 ) = 2.0000000000e-03 max(d0 ) = 2.0000000000e-03 -min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 -min(P litho ) = 2.0000000000e+09 max(P litho ) = 2.0000000000e+09 -min(P old ) = 2.0000000000e+09 max(P old ) = 2.0000000000e+09 -min(P ) = 2.0000000000e+09 max(P ) = 2.0000000000e+09 -min(T ) = 2.7315000000e+02 max(T ) = 2.7315000000e+02 -min(mu_s ) = 4.0000000000e+10 max(mu_s ) = 4.0000000000e+10 -min(mu_n ) = 4.0000000000e+10 max(mu_n ) = 4.0000000000e+10 -min(eta_s ) = 1.0000000000e+10 max(eta_s ) = 1.0000000000e+10 -min(eta_n ) = 1.0000000000e+10 max(eta_n ) = 1.0000000000e+10 -min(eta_phys_s) = 1.0000000000e+10 max(eta_phys_s) = 1.0000000000e+10 -min(eta_phys_n) = 1.0000000000e+10 max(eta_phys_n) = 1.0000000000e+10 -min(rho_s ) = 2.9221480935e+03 max(rho_s ) = 2.9221480935e+03 -min(rho_n ) = 2.9221480935e+03 max(rho_n ) = 2.9221480935e+03 -min(X_n ) = 0.0000000000e+00 max(X_n ) = 8.4378889438e-01 -min(X0_n ) = 0.0000000000e+00 max(X0_n ) = 0.0000000000e+00 -min(X0_s ) = 0.0000000000e+00 max(X0_s ) = 0.0000000000e+00 -min(X part) = 0.0000000000e+00 max(X part) = 0.0000000000e+00 -Phase number 0: -min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 1.0000000000e+00 -min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 1.0000000000e+00 -Phase number 1: -min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 1.0000000000e+00 -min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 1.0000000000e+00 -Phase number 2: -min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 0.0000000000e+00 -min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 0.0000000000e+00 -Phase number 3: -min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 0.0000000000e+00 -min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 0.0000000000e+00 -************************************* -******** Initialize timestep ******** -************************************* -Setting initial dt to minimum Maxwell time: 2.50e-01 -min. Maxwell = 2.50e-01 s, max. Maxwell = 2.50e-01 s -Suggested dt = 2.50e-01 s, VE dt = 2.50e-01 s -Initial timestep = 2.50e-01 s -************************************* -*** Write initial file or restart *** -************************************* -***************************************************** -****************** Time step 00001 ****************** -***************************************************** -Transmutated particles = 000 -Number of particles = 63504 -Min Vxm = 0.00e+00 m/s / Max Vxm = 0.00e+00 m/s -Min Vzm = 0.00e+00 m/s / Max Vzm = 0.00e+00 m/s -Courant number = 2.00e-01 --- dtc = inf -Do not allow for large time step increase: dt0 = 2.50e-01 -Timestep limited by advection -Cutting off dt because of negligible motion -Current dt = 1.00e+03 s / Courant dt = 0.00e+00 s -Selected dt = 1.00e+03 ----> Detecting compressible cells ----> 3969 compressibles cells detected -min(d0 ) = 2.0000000000e-03 max(d0 ) = 2.0000000000e-03 -min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 -min(sxxd part ) = -1.0000000000e+08 max(sxxd part ) = -1.0000000000e+08 -min(T part ) = 2.7315000000e+02 max(T part ) = 2.7315000000e+02 -min(p0_n) = 2.0000000000e+09 max(p0_n) = 2.0000000000e+09 -min(sxz0 ) = 0.0000000000e+00 max(sxz0 ) = 0.0000000000e+00 -min(sxx0 ) = -1.0000000000e+08 max(sxx0 ) = -1.0000000000e+08 -min(szz0 ) = 1.0000000000e+08 max(szz0 ) = 1.0000000000e+08 -min(mu_s ) = 4.0000000000e+10 max(mu_s ) = 4.0000000000e+10 -min(mu_n ) = 4.0000000000e+10 max(mu_n ) = 4.0000000000e+10 -min(C_s ) = 1.0000000000e+70 max(C_s ) = 1.0000000000e+70 -min(C_n ) = 1.0000000000e+70 max(C_n ) = 1.0000000000e+70 -min(fric_s ) = 1.0000000000e+01 max(fric_s ) = 1.0000000000e+01 -min(fric_n ) = 1.0000000000e+01 max(fric_n ) = 1.0000000000e+01 -min(dil_s ) = 0.0000000000e+00 max(dil_s ) = 0.0000000000e+00 -min(dil_n ) = 0.0000000000e+00 max(dil_n ) = 0.0000000000e+00 -min(strain_s) = 0.0000000000e+00 max(strain_s) = 0.0000000000e+00 -min(strain_n) = 0.0000000000e+00 max(strain_n) = 0.0000000000e+00 -min(beta_s ) = 1.2500000000e-11 max(beta_s ) = 1.2500000000e-11 -min(beta_n ) = 1.2500000000e-11 max(beta_n ) = 1.2500000000e-11 -min(T0 ) = 2.7315000000e+02 max(T0 ) = 2.7315000000e+02 -min(T ) = 2.7315000000e+02 max(T ) = 2.7315000000e+02 -min(P ) = 2.0000000000e+09 max(P ) = 2.0000000000e+09 -min(comp_cells) = 1 max(comp_cells) = 1 -min(rho_s ) = 2.9221480935e+03 max(rho_s ) = 2.9221480935e+03 -min(rho_n ) = 2.9221480935e+03 max(rho_n ) = 2.9221480935e+03 -min(rho0_n ) = 2.9221480935e+03 max(rho0_n ) = 2.9221480935e+03 -min(X0_s ) = 0.0000000000e+00 max(X0_s ) = 0.0000000000e+00 -min(X0_n ) = 0.0000000000e+00 max(X0_n ) = 0.0000000000e+00 -Phase number 0: -min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 1.0000000000e+00 -min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 1.0000000000e+00 -Phase number 1: -min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 1.0000000000e+00 -min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 1.0000000000e+00 -Phase number 2: -min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 0.0000000000e+00 -min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 0.0000000000e+00 -Phase number 3: -min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 0.0000000000e+00 -min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 0.0000000000e+00 -** Time for particles interpolations I = 0.042641 sec -VxWestSum: 0.000000, VxEastSum: 0.000000 -VzWestSum: 0.000000, VzEastSum: 0.000000: -total West+East+South sum: 0.000000 -SetBCs: Boundary conditions were set up -Velocity field was set to background pure shear -Linear systems allocated -neq_tot = 11781, neq_mom = 7812, neq_cont = 3969 -Run CHOLMOD analysis yes/no: 1 -********************************************** -*** Picard it. 00 of 30 (step = 00001) on 016 threads *** -********************************************** -min(T ) = 2.7315000000e+02 max(T ) = 2.7315000000e+02 -min(P old ) = 2.0000000000e+09 max(P old ) = 2.0000000000e+09 -min(P ) = 2.0000000000e+09 max(P ) = 2.0000000000e+09 -min(div ) = 0.0000000000e+00 max(div ) = 0.0000000000e+00 -min(exxd ) = 0.0000000000e+00 max(exxd ) = 0.0000000000e+00 -min(ezzd ) = 0.0000000000e+00 max(ezzd ) = 0.0000000000e+00 -min(exz ) = 0.0000000000e+00 max(exz ) = 0.0000000000e+00 -min(sxxd ) = -2.5000000000e+04 max(sxxd ) = -2.5000000000e+04 -min(szzd ) = 2.5000000000e+04 max(szzd ) = 2.5000000000e+04 -min(sxz ) = 0.0000000000e+00 max(sxz ) = 0.0000000000e+00 -min(eta_s ) = 1.0000000000e+10 max(eta_s ) = 1.0000000000e+10 -min(eta_n ) = 1.0000000000e+10 max(eta_n ) = 1.0000000000e+10 -min(eta_phys_s) = 1.0000000000e+10 max(eta_phys_s) = 1.0000000000e+10 -min(eta_phys_n) = 1.0000000000e+10 max(eta_phys_n) = 1.0000000000e+10 -min(rho_s ) = 2.9221480935e+03 max(rho_s ) = 2.9221480935e+03 -min(rho_n ) = 2.9221480935e+03 max(rho_n ) = 2.9221480935e+03 -min(rho0_n ) = 2.9221480935e+03 max(rho0_n ) = 2.9221480935e+03 -min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 -min(X_s ) = 0.0000000000e+00 max(X_s ) = 2.6737709202e-07 -min(X_n ) = 0.0000000000e+00 max(X_n ) = 2.6737709202e-07 -Number of momentum equations: 7812 ----- Non-linear residual ---- -Fu abs. = 5.832322e-16 --- Fu rel. = 1.000000e+00 -Fv abs. = 5.774659e-16 --- Fv rel. = 1.000000e+00 -Fp abs. = 0.000000e+00 --- Fp rel. = nan ----- Non-linear residual ---- -Non-linear solver converged to nonlin_abs_mom = 1.00e-08 nonlin_abs_div = 1.00e-08 nonlin_rel_mom = 1.00e-08 nonlin_rel_div = 1.00e-08 -min(Vx grid) = 0.0000000000e+00 max(Vx grid) = 0.0000000000e+00 -min(Vz grid) = -0.0000000000e+00 max(Vz grid) = -0.0000000000e+00 -min( P) = 2.0000000000e+09 max( P) = 2.0000000000e+09 -min( div(V)) = 0.0000000000e+00 max( div(V)) = 0.0000000000e+00 --------------------------------------------------------------- -Picard 2 Newton is activated with condition: 2.00e-01 -Pic. it. 00: abs: |Fx| = 5.83e-16 - |Fz| = 5.77e-16 - |Fp| = 0.00e+00 --- rel: |Fx| = 1.00e+00 - |Fz| = 1.00e+00 - |Fp| = nan --------------------------------------------------------------- -No subgrid diffusion for stress tensor component update -min(d0) = 2.0000000000e-03 max(d0) = 2.0000000000e-03 -min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 -min(d on markers) = 2.000000000000e-03 max(d on markers) = 2.000000000000e-03 -Subgrid diffusion for temperature update -************************************* -************** Advection ************ -************************************* -Min Vxm = 0.00e+00 m/s / Max Vxm = 0.00e+00 m/s -Min Vzm = 0.00e+00 m/s / Max Vzm = 0.00e+00 m/s -Courant number = 2.00e-01 --- dtc = inf -Do not allow for large time step increase: dt0 = 1.00e+03 -Timestep limited by advection -Cutting off dt because of negligible motion -Current dt = 1.00e+03 s / Courant dt = 0.00e+00 s -************** Advection step 000 of 001: dtsub = 1.00e+03 ************** -** Time for Roger Gunther = 0.656773 sec --- using conservative interpolation: 0 -** Time for advection solver = 0.005263 sec -USING NEW PART IN CELL -OLD NUMBER OF MARKERS = 63504 -NEW NUMBER OF MARKERS = 63504 -USING NEW PART IN CELL -After re-seeding : -Initial number of particles = 63504 -Old number of particles = 63504 -New number of particles = 63504 -** Time for CountPartCell = 0.007018 sec -************************************* -********* Write output files ******** -************************************* -Loading phase proportions - Nb_phases = 4: -** Time for Breakpoint file write = 0.006309 sec -** Time for Output file write = 0.092475 sec -** Total timestep calculation time = 0.765612 sec -** Model time = 1.00e+03 sec -** Current dt = 1.00e+03 sec, Old dt = 1.00e+03 sec -***************************************************** -****************** Time step 00002 ****************** -***************************************************** -Transmutated particles = 000 -Number of particles = 63504 -Min Vxm = 0.00e+00 m/s / Max Vxm = 0.00e+00 m/s -Min Vzm = 0.00e+00 m/s / Max Vzm = 0.00e+00 m/s -Courant number = 2.00e-01 --- dtc = inf -Do not allow for large time step increase: dt0 = 1.00e+03 -Timestep limited by advection -Cutting off dt because of negligible motion -Current dt = 1.00e+03 s / Courant dt = 0.00e+00 s -Selected dt = 1.00e+03 ----> Detecting compressible cells ----> 3969 compressibles cells detected -min(d0 ) = 2.0000000000e-03 max(d0 ) = 2.0000000000e-03 -min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 -min(sxxd part ) = -2.5000000000e+04 max(sxxd part ) = -2.5000000000e+04 -min(T part ) = 2.7315000000e+02 max(T part ) = 2.7315000000e+02 -min(p0_n) = 2.0000000000e+09 max(p0_n) = 2.0000000000e+09 -min(sxz0 ) = 0.0000000000e+00 max(sxz0 ) = 0.0000000000e+00 -min(sxx0 ) = -2.5000000000e+04 max(sxx0 ) = -2.5000000000e+04 -min(szz0 ) = 2.5000000000e+04 max(szz0 ) = 2.5000000000e+04 -min(mu_s ) = 4.0000000000e+10 max(mu_s ) = 4.0000000000e+10 -min(mu_n ) = 4.0000000000e+10 max(mu_n ) = 4.0000000000e+10 -min(C_s ) = 1.0000000000e+70 max(C_s ) = 1.0000000000e+70 -min(C_n ) = 1.0000000000e+70 max(C_n ) = 1.0000000000e+70 -min(fric_s ) = 1.0000000000e+01 max(fric_s ) = 1.0000000000e+01 -min(fric_n ) = 1.0000000000e+01 max(fric_n ) = 1.0000000000e+01 -min(dil_s ) = 0.0000000000e+00 max(dil_s ) = 0.0000000000e+00 -min(dil_n ) = 0.0000000000e+00 max(dil_n ) = 0.0000000000e+00 -min(strain_s) = 0.0000000000e+00 max(strain_s) = 0.0000000000e+00 -min(strain_n) = 0.0000000000e+00 max(strain_n) = 0.0000000000e+00 -min(beta_s ) = 1.2500000000e-11 max(beta_s ) = 1.2500000000e-11 -min(beta_n ) = 1.2500000000e-11 max(beta_n ) = 1.2500000000e-11 -min(T0 ) = 2.7315000000e+02 max(T0 ) = 2.7315000000e+02 -min(T ) = 2.7315000000e+02 max(T ) = 2.7315000000e+02 -min(P ) = 2.0000000000e+09 max(P ) = 2.0000000000e+09 -min(comp_cells) = 1 max(comp_cells) = 1 -min(rho_s ) = 2.9221480935e+03 max(rho_s ) = 2.9221480935e+03 -min(rho_n ) = 2.9221480935e+03 max(rho_n ) = 2.9221480935e+03 -min(rho0_n ) = 2.9221480935e+03 max(rho0_n ) = 2.9221480935e+03 -min(X0_s ) = 0.0000000000e+00 max(X0_s ) = 2.6737709202e-07 -min(X0_n ) = 0.0000000000e+00 max(X0_n ) = 2.6737709202e-07 -Phase number 0: -min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 1.0000000000e+00 -min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 1.0000000000e+00 -Phase number 1: -min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 1.0000000000e+00 -min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 1.0000000000e+00 -Phase number 2: -min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 0.0000000000e+00 -min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 0.0000000000e+00 -Phase number 3: -min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 0.0000000000e+00 -min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 0.0000000000e+00 -** Time for particles interpolations I = 0.022543 sec -VxWestSum: 0.000000, VxEastSum: 0.000000 -VzWestSum: 0.000000, VzEastSum: 0.000000: -total West+East+South sum: 0.000000 -SetBCs: Boundary conditions were set up -Velocity field was set to background pure shear -Linear systems allocated -neq_tot = 11781, neq_mom = 7812, neq_cont = 3969 -Run CHOLMOD analysis yes/no: 1 -********************************************** -*** Picard it. 00 of 30 (step = 00002) on 016 threads *** -********************************************** -min(T ) = 2.7315000000e+02 max(T ) = 2.7315000000e+02 -min(P old ) = 2.0000000000e+09 max(P old ) = 2.0000000000e+09 -min(P ) = 2.0000000000e+09 max(P ) = 2.0000000000e+09 -min(div ) = 0.0000000000e+00 max(div ) = 0.0000000000e+00 -min(exxd ) = 0.0000000000e+00 max(exxd ) = 0.0000000000e+00 -min(ezzd ) = 0.0000000000e+00 max(ezzd ) = 0.0000000000e+00 -min(exz ) = 0.0000000000e+00 max(exz ) = 0.0000000000e+00 -min(sxxd ) = -6.2500000000e+00 max(sxxd ) = -6.2500000000e+00 -min(szzd ) = 6.2500000000e+00 max(szzd ) = 6.2500000000e+00 -min(sxz ) = 0.0000000000e+00 max(sxz ) = 0.0000000000e+00 -min(eta_s ) = 1.0000000000e+10 max(eta_s ) = 1.0000000000e+10 -min(eta_n ) = 1.0000000000e+10 max(eta_n ) = 1.0000000000e+10 -min(eta_phys_s) = 1.0000000000e+10 max(eta_phys_s) = 1.0000000000e+10 -min(eta_phys_n) = 1.0000000000e+10 max(eta_phys_n) = 1.0000000000e+10 -min(rho_s ) = 2.9221480935e+03 max(rho_s ) = 2.9221480935e+03 -min(rho_n ) = 2.9221480935e+03 max(rho_n ) = 2.9221480935e+03 -min(rho0_n ) = 2.9221480935e+03 max(rho0_n ) = 2.9221480935e+03 -min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 -min(X_s ) = 0.0000000000e+00 max(X_s ) = 5.3475409932e-07 -min(X_n ) = 0.0000000000e+00 max(X_n ) = 5.3475409932e-07 -Number of momentum equations: 7812 ----- Non-linear residual ---- -Fu abs. = 1.143343e-15 --- Fu rel. = 1.000000e+00 -Fv abs. = 1.119767e-15 --- Fv rel. = 1.000000e+00 -Fp abs. = 0.000000e+00 --- Fp rel. = nan ----- Non-linear residual ---- -Non-linear solver converged to nonlin_abs_mom = 1.00e-08 nonlin_abs_div = 1.00e-08 nonlin_rel_mom = 1.00e-08 nonlin_rel_div = 1.00e-08 -min(Vx grid) = 0.0000000000e+00 max(Vx grid) = 0.0000000000e+00 -min(Vz grid) = -0.0000000000e+00 max(Vz grid) = -0.0000000000e+00 -min( P) = 2.0000000000e+09 max( P) = 2.0000000000e+09 -min( div(V)) = 0.0000000000e+00 max( div(V)) = 0.0000000000e+00 --------------------------------------------------------------- -Picard 2 Newton is activated with condition: 2.00e-01 -Pic. it. 00: abs: |Fx| = 1.14e-15 - |Fz| = 1.12e-15 - |Fp| = 0.00e+00 --- rel: |Fx| = 1.00e+00 - |Fz| = 1.00e+00 - |Fp| = nan --------------------------------------------------------------- -No subgrid diffusion for stress tensor component update -min(d0) = 2.0000000000e-03 max(d0) = 2.0000000000e-03 -min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 -min(d on markers) = 2.000000000000e-03 max(d on markers) = 2.000000000000e-03 -Subgrid diffusion for temperature update -************************************* -************** Advection ************ -************************************* -Min Vxm = 0.00e+00 m/s / Max Vxm = 0.00e+00 m/s -Min Vzm = 0.00e+00 m/s / Max Vzm = 0.00e+00 m/s -Courant number = 2.00e-01 --- dtc = inf -Do not allow for large time step increase: dt0 = 1.00e+03 -Timestep limited by advection -Cutting off dt because of negligible motion -Current dt = 1.00e+03 s / Courant dt = 0.00e+00 s -************** Advection step 000 of 001: dtsub = 1.00e+03 ************** -** Time for Roger Gunther = 0.812762 sec --- using conservative interpolation: 0 -** Time for advection solver = 0.005175 sec -USING NEW PART IN CELL -OLD NUMBER OF MARKERS = 63504 -NEW NUMBER OF MARKERS = 63504 -USING NEW PART IN CELL -After re-seeding : -Initial number of particles = 63504 -Old number of particles = 63504 -New number of particles = 63504 -** Time for CountPartCell = 0.007237 sec -************************************* -********* Write output files ******** -************************************* -Loading phase proportions - Nb_phases = 4: -** Time for Breakpoint file write = 0.006306 sec -** Time for Output file write = 0.090162 sec -** Total timestep calculation time = 0.919409 sec -** Model time = 2.00e+03 sec -** Current dt = 1.00e+03 sec, Old dt = 1.00e+03 sec -***************************************************** -****************** Time step 00003 ****************** -***************************************************** -Transmutated particles = 000 -Number of particles = 63504 -Min Vxm = 0.00e+00 m/s / Max Vxm = 0.00e+00 m/s -Min Vzm = 0.00e+00 m/s / Max Vzm = 0.00e+00 m/s -Courant number = 2.00e-01 --- dtc = inf -Do not allow for large time step increase: dt0 = 1.00e+03 -Timestep limited by advection -Cutting off dt because of negligible motion -Current dt = 1.00e+03 s / Courant dt = 0.00e+00 s -Selected dt = 1.00e+03 ----> Detecting compressible cells ----> 3969 compressibles cells detected -min(d0 ) = 2.0000000000e-03 max(d0 ) = 2.0000000000e-03 -min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 -min(sxxd part ) = -6.2500000326e+00 max(sxxd part ) = -6.2499999668e+00 -min(T part ) = 2.7315000000e+02 max(T part ) = 2.7315000000e+02 -min(p0_n) = 2.0000000000e+09 max(p0_n) = 2.0000000000e+09 -min(sxz0 ) = 0.0000000000e+00 max(sxz0 ) = 0.0000000000e+00 -min(sxx0 ) = -6.2500000052e+00 max(sxx0 ) = -6.2499999956e+00 -min(szz0 ) = 6.2499999956e+00 max(szz0 ) = 6.2500000052e+00 -min(mu_s ) = 4.0000000000e+10 max(mu_s ) = 4.0000000000e+10 -min(mu_n ) = 4.0000000000e+10 max(mu_n ) = 4.0000000000e+10 -min(C_s ) = 1.0000000000e+70 max(C_s ) = 1.0000000000e+70 -min(C_n ) = 1.0000000000e+70 max(C_n ) = 1.0000000000e+70 -min(fric_s ) = 1.0000000000e+01 max(fric_s ) = 1.0000000000e+01 -min(fric_n ) = 1.0000000000e+01 max(fric_n ) = 1.0000000000e+01 -min(dil_s ) = 0.0000000000e+00 max(dil_s ) = 0.0000000000e+00 -min(dil_n ) = 0.0000000000e+00 max(dil_n ) = 0.0000000000e+00 -min(strain_s) = 0.0000000000e+00 max(strain_s) = 0.0000000000e+00 -min(strain_n) = 0.0000000000e+00 max(strain_n) = 0.0000000000e+00 -min(beta_s ) = 1.2500000000e-11 max(beta_s ) = 1.2500000000e-11 -min(beta_n ) = 1.2500000000e-11 max(beta_n ) = 1.2500000000e-11 -min(T0 ) = 2.7315000000e+02 max(T0 ) = 2.7315000000e+02 -min(T ) = 2.7315000000e+02 max(T ) = 2.7315000000e+02 -min(P ) = 2.0000000000e+09 max(P ) = 2.0000000000e+09 -min(comp_cells) = 1 max(comp_cells) = 1 -min(rho_s ) = 2.9221480935e+03 max(rho_s ) = 2.9221480935e+03 -min(rho_n ) = 2.9221480935e+03 max(rho_n ) = 2.9221480935e+03 -min(rho0_n ) = 2.9221480935e+03 max(rho0_n ) = 2.9221480935e+03 -min(X0_s ) = 0.0000000000e+00 max(X0_s ) = 5.3475410192e-07 -min(X0_n ) = 0.0000000000e+00 max(X0_n ) = 5.3475409949e-07 -Phase number 0: -min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 1.0000000000e+00 -min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 1.0000000000e+00 -Phase number 1: -min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 1.0000000000e+00 -min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 1.0000000000e+00 -Phase number 2: -min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 0.0000000000e+00 -min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 0.0000000000e+00 -Phase number 3: -min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 0.0000000000e+00 -min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 0.0000000000e+00 -** Time for particles interpolations I = 0.022109 sec -VxWestSum: 0.000000, VxEastSum: 0.000000 -VzWestSum: 0.000000, VzEastSum: 0.000000: -total West+East+South sum: 0.000000 -SetBCs: Boundary conditions were set up -Velocity field was set to background pure shear -Linear systems allocated -neq_tot = 11781, neq_mom = 7812, neq_cont = 3969 -Run CHOLMOD analysis yes/no: 1 -********************************************** -*** Picard it. 00 of 30 (step = 00003) on 016 threads *** -********************************************** -min(T ) = 2.7315000000e+02 max(T ) = 2.7315000000e+02 -min(P old ) = 2.0000000000e+09 max(P old ) = 2.0000000000e+09 -min(P ) = 2.0000000000e+09 max(P ) = 2.0000000000e+09 -min(div ) = 0.0000000000e+00 max(div ) = 0.0000000000e+00 -min(exxd ) = 0.0000000000e+00 max(exxd ) = 0.0000000000e+00 -min(ezzd ) = 0.0000000000e+00 max(ezzd ) = 0.0000000000e+00 -min(exz ) = 0.0000000000e+00 max(exz ) = 0.0000000000e+00 -min(sxxd ) = -1.5625000013e-03 max(sxxd ) = -1.5624999989e-03 -min(szzd ) = 1.5624999989e-03 max(szzd ) = 1.5625000013e-03 -min(sxz ) = 0.0000000000e+00 max(sxz ) = 0.0000000000e+00 -min(eta_s ) = 1.0000000000e+10 max(eta_s ) = 1.0000000000e+10 -min(eta_n ) = 1.0000000000e+10 max(eta_n ) = 1.0000000000e+10 -min(eta_phys_s) = 1.0000000000e+10 max(eta_phys_s) = 1.0000000000e+10 -min(eta_phys_n) = 1.0000000000e+10 max(eta_phys_n) = 1.0000000000e+10 -min(rho_s ) = 2.9221480935e+03 max(rho_s ) = 2.9221480935e+03 -min(rho_n ) = 2.9221480935e+03 max(rho_n ) = 2.9221480935e+03 -min(rho0_n ) = 2.9221480935e+03 max(rho0_n ) = 2.9221480935e+03 -min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 -min(X_s ) = 0.0000000000e+00 max(X_s ) = 8.0213102449e-07 -min(X_n ) = 0.0000000000e+00 max(X_n ) = 8.0213102206e-07 -Number of momentum equations: 7812 ----- Non-linear residual ---- -Fu abs. = 1.558114e-15 --- Fu rel. = 1.000000e+00 -Fv abs. = 1.440220e-15 --- Fv rel. = 1.000000e+00 -Fp abs. = 0.000000e+00 --- Fp rel. = nan ----- Non-linear residual ---- -Non-linear solver converged to nonlin_abs_mom = 1.00e-08 nonlin_abs_div = 1.00e-08 nonlin_rel_mom = 1.00e-08 nonlin_rel_div = 1.00e-08 -min(Vx grid) = 0.0000000000e+00 max(Vx grid) = 0.0000000000e+00 -min(Vz grid) = -0.0000000000e+00 max(Vz grid) = -0.0000000000e+00 -min( P) = 2.0000000000e+09 max( P) = 2.0000000000e+09 -min( div(V)) = 0.0000000000e+00 max( div(V)) = 0.0000000000e+00 --------------------------------------------------------------- -Picard 2 Newton is activated with condition: 2.00e-01 -Pic. it. 00: abs: |Fx| = 1.56e-15 - |Fz| = 1.44e-15 - |Fp| = 0.00e+00 --- rel: |Fx| = 1.00e+00 - |Fz| = 1.00e+00 - |Fp| = nan --------------------------------------------------------------- -No subgrid diffusion for stress tensor component update -min(d0) = 2.0000000000e-03 max(d0) = 2.0000000000e-03 -min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 -min(d on markers) = 2.000000000000e-03 max(d on markers) = 2.000000000000e-03 -Subgrid diffusion for temperature update -************************************* -************** Advection ************ -************************************* -Min Vxm = 0.00e+00 m/s / Max Vxm = 0.00e+00 m/s -Min Vzm = 0.00e+00 m/s / Max Vzm = 0.00e+00 m/s -Courant number = 2.00e-01 --- dtc = inf -Do not allow for large time step increase: dt0 = 1.00e+03 -Timestep limited by advection -Cutting off dt because of negligible motion -Current dt = 1.00e+03 s / Courant dt = 0.00e+00 s -************** Advection step 000 of 001: dtsub = 1.00e+03 ************** -** Time for Roger Gunther = 0.963393 sec --- using conservative interpolation: 0 -** Time for advection solver = 0.004950 sec -USING NEW PART IN CELL -OLD NUMBER OF MARKERS = 63504 -NEW NUMBER OF MARKERS = 63504 -USING NEW PART IN CELL -After re-seeding : -Initial number of particles = 63504 -Old number of particles = 63504 -New number of particles = 63504 -** Time for CountPartCell = 0.006838 sec -************************************* -********* Write output files ******** -************************************* -Loading phase proportions - Nb_phases = 4: -** Time for Breakpoint file write = 0.006634 sec -** Time for Output file write = 0.152511 sec -** Total timestep calculation time = 1.132655 sec -** Model time = 3.00e+03 sec -** Current dt = 1.00e+03 sec, Old dt = 1.00e+03 sec -***************************************************** -****************** Time step 00004 ****************** -***************************************************** -Transmutated particles = 000 -Number of particles = 63504 -Min Vxm = 0.00e+00 m/s / Max Vxm = 0.00e+00 m/s -Min Vzm = 0.00e+00 m/s / Max Vzm = 0.00e+00 m/s -Courant number = 2.00e-01 --- dtc = inf -Do not allow for large time step increase: dt0 = 1.00e+03 -Timestep limited by advection -Cutting off dt because of negligible motion -Current dt = 1.00e+03 s / Courant dt = 0.00e+00 s -Selected dt = 1.00e+03 ----> Detecting compressible cells ----> 3969 compressibles cells detected -min(d0 ) = 2.0000000000e-03 max(d0 ) = 2.0000000000e-03 -min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 -min(sxxd part ) = -1.5625289732e-03 max(sxxd part ) = -1.5624653980e-03 -min(T part ) = 2.7315000000e+02 max(T part ) = 2.7315000000e+02 -min(p0_n) = 2.0000000000e+09 max(p0_n) = 2.0000000000e+09 -min(sxz0 ) = 0.0000000000e+00 max(sxz0 ) = 0.0000000000e+00 -min(sxx0 ) = -1.5625017836e-03 max(sxx0 ) = -1.5624984237e-03 -min(szz0 ) = 1.5624984237e-03 max(szz0 ) = 1.5625017836e-03 -min(mu_s ) = 4.0000000000e+10 max(mu_s ) = 4.0000000000e+10 -min(mu_n ) = 4.0000000000e+10 max(mu_n ) = 4.0000000000e+10 -min(C_s ) = 1.0000000000e+70 max(C_s ) = 1.0000000000e+70 -min(C_n ) = 1.0000000000e+70 max(C_n ) = 1.0000000000e+70 -min(fric_s ) = 1.0000000000e+01 max(fric_s ) = 1.0000000000e+01 -min(fric_n ) = 1.0000000000e+01 max(fric_n ) = 1.0000000000e+01 -min(dil_s ) = 0.0000000000e+00 max(dil_s ) = 0.0000000000e+00 -min(dil_n ) = 0.0000000000e+00 max(dil_n ) = 0.0000000000e+00 -min(strain_s) = 0.0000000000e+00 max(strain_s) = 0.0000000000e+00 -min(strain_n) = 0.0000000000e+00 max(strain_n) = 0.0000000000e+00 -min(beta_s ) = 1.2500000000e-11 max(beta_s ) = 1.2500000000e-11 -min(beta_n ) = 1.2500000000e-11 max(beta_n ) = 1.2500000000e-11 -min(T0 ) = 2.7315000000e+02 max(T0 ) = 2.7315000000e+02 -min(T ) = 2.7315000000e+02 max(T ) = 2.7315000000e+02 -min(P ) = 2.0000000000e+09 max(P ) = 2.0000000000e+09 -min(comp_cells) = 1 max(comp_cells) = 1 -min(rho_s ) = 2.9221480935e+03 max(rho_s ) = 2.9221480935e+03 -min(rho_n ) = 2.9221480935e+03 max(rho_n ) = 2.9221480935e+03 -min(rho0_n ) = 2.9221480935e+03 max(rho0_n ) = 2.9221480935e+03 -min(X0_s ) = 0.0000000000e+00 max(X0_s ) = 8.0213102970e-07 -min(X0_n ) = 0.0000000000e+00 max(X0_n ) = 8.0213102240e-07 -Phase number 0: -min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 1.0000000000e+00 -min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 1.0000000000e+00 -Phase number 1: -min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 1.0000000000e+00 -min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 1.0000000000e+00 -Phase number 2: -min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 0.0000000000e+00 -min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 0.0000000000e+00 -Phase number 3: -min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 0.0000000000e+00 -min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 0.0000000000e+00 -** Time for particles interpolations I = 0.019508 sec -VxWestSum: 0.000000, VxEastSum: 0.000000 -VzWestSum: 0.000000, VzEastSum: 0.000000: -total West+East+South sum: 0.000000 -SetBCs: Boundary conditions were set up -Velocity field was set to background pure shear -Linear systems allocated -neq_tot = 11781, neq_mom = 7812, neq_cont = 3969 -Run CHOLMOD analysis yes/no: 1 -********************************************** -*** Picard it. 00 of 30 (step = 00004) on 016 threads *** -********************************************** -min(T ) = 2.7315000000e+02 max(T ) = 2.7315000000e+02 -min(P old ) = 2.0000000000e+09 max(P old ) = 2.0000000000e+09 -min(P ) = 2.0000000000e+09 max(P ) = 2.0000000000e+09 -min(div ) = 0.0000000000e+00 max(div ) = 0.0000000000e+00 -min(exxd ) = 0.0000000000e+00 max(exxd ) = 0.0000000000e+00 -min(ezzd ) = 0.0000000000e+00 max(ezzd ) = 0.0000000000e+00 -min(exz ) = 0.0000000000e+00 max(exz ) = 0.0000000000e+00 -min(sxxd ) = -3.9062544591e-07 max(sxxd ) = -3.9062460594e-07 -min(szzd ) = 3.9062460594e-07 max(szzd ) = 3.9062544591e-07 -min(sxz ) = 0.0000000000e+00 max(sxz ) = 0.0000000000e+00 -min(eta_s ) = 1.0000000000e+10 max(eta_s ) = 1.0000000000e+10 -min(eta_n ) = 1.0000000000e+10 max(eta_n ) = 1.0000000000e+10 -min(eta_phys_s) = 1.0000000000e+10 max(eta_phys_s) = 1.0000000000e+10 -min(eta_phys_n) = 1.0000000000e+10 max(eta_phys_n) = 1.0000000000e+10 -min(rho_s ) = 2.9221480935e+03 max(rho_s ) = 2.9221480935e+03 -min(rho_n ) = 2.9221480935e+03 max(rho_n ) = 2.9221480935e+03 -min(rho0_n ) = 2.9221480935e+03 max(rho0_n ) = 2.9221480935e+03 -min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 -min(X_s ) = 0.0000000000e+00 max(X_s ) = 1.0695078675e-06 -min(X_n ) = 0.0000000000e+00 max(X_n ) = 1.0695078602e-06 -Number of momentum equations: 7812 ----- Non-linear residual ---- -Fu abs. = 1.936050e-15 --- Fu rel. = 1.000000e+00 -Fv abs. = 1.794825e-15 --- Fv rel. = 1.000000e+00 -Fp abs. = 0.000000e+00 --- Fp rel. = nan ----- Non-linear residual ---- -Non-linear solver converged to nonlin_abs_mom = 1.00e-08 nonlin_abs_div = 1.00e-08 nonlin_rel_mom = 1.00e-08 nonlin_rel_div = 1.00e-08 -min(Vx grid) = 0.0000000000e+00 max(Vx grid) = 0.0000000000e+00 -min(Vz grid) = -0.0000000000e+00 max(Vz grid) = -0.0000000000e+00 -min( P) = 2.0000000000e+09 max( P) = 2.0000000000e+09 -min( div(V)) = 0.0000000000e+00 max( div(V)) = 0.0000000000e+00 --------------------------------------------------------------- -Picard 2 Newton is activated with condition: 2.00e-01 -Pic. it. 00: abs: |Fx| = 1.94e-15 - |Fz| = 1.79e-15 - |Fp| = 0.00e+00 --- rel: |Fx| = 1.00e+00 - |Fz| = 1.00e+00 - |Fp| = nan --------------------------------------------------------------- -No subgrid diffusion for stress tensor component update -min(d0) = 2.0000000000e-03 max(d0) = 2.0000000000e-03 -min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 -min(d on markers) = 2.000000000000e-03 max(d on markers) = 2.000000000000e-03 -Subgrid diffusion for temperature update -************************************* -************** Advection ************ -************************************* -Min Vxm = 0.00e+00 m/s / Max Vxm = 0.00e+00 m/s -Min Vzm = 0.00e+00 m/s / Max Vzm = 0.00e+00 m/s -Courant number = 2.00e-01 --- dtc = inf -Do not allow for large time step increase: dt0 = 1.00e+03 -Timestep limited by advection -Cutting off dt because of negligible motion -Current dt = 1.00e+03 s / Courant dt = 0.00e+00 s -************** Advection step 000 of 001: dtsub = 1.00e+03 ************** -** Time for Roger Gunther = 0.175295 sec --- using conservative interpolation: 0 -** Time for advection solver = 0.005062 sec -USING NEW PART IN CELL -OLD NUMBER OF MARKERS = 63504 -NEW NUMBER OF MARKERS = 63504 -USING NEW PART IN CELL -After re-seeding : -Initial number of particles = 63504 -Old number of particles = 63504 -New number of particles = 63504 -** Time for CountPartCell = 0.006946 sec -************************************* -********* Write output files ******** -************************************* -File Breakpoint00002.dat replaced by Breakpoint00004.dat -File Breakpoint00002.dat was successfully renamed -Loading phase proportions - Nb_phases = 4: -** Time for Breakpoint file write = 0.014681 sec -** Time for Output file write = 0.095864 sec -** Total timestep calculation time = 0.296326 sec -** Model time = 4.00e+03 sec -** Current dt = 1.00e+03 sec, Old dt = 1.00e+03 sec -***************************************************** -****************** Time step 00005 ****************** -***************************************************** -Transmutated particles = 000 -Number of particles = 63504 -Min Vxm = 0.00e+00 m/s / Max Vxm = 0.00e+00 m/s -Min Vzm = 0.00e+00 m/s / Max Vzm = 0.00e+00 m/s -Courant number = 2.00e-01 --- dtc = inf -Do not allow for large time step increase: dt0 = 1.00e+03 -Timestep limited by advection -Cutting off dt because of negligible motion -Current dt = 1.00e+03 s / Courant dt = 0.00e+00 s -Selected dt = 1.00e+03 ----> Detecting compressible cells ----> 3969 compressibles cells detected -min(d0 ) = 2.0000000000e-03 max(d0 ) = 2.0000000000e-03 -min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 -min(sxxd part ) = -4.1865994584e-07 max(sxxd part ) = -3.5561631785e-07 -min(T part ) = 2.7315000000e+02 max(T part ) = 2.7315000000e+02 -min(p0_n) = 2.0000000000e+09 max(p0_n) = 2.0000000000e+09 -min(sxz0 ) = 0.0000000000e+00 max(sxz0 ) = 0.0000000000e+00 -min(sxx0 ) = -3.9129610708e-07 max(sxx0 ) = -3.9002322358e-07 -min(szz0 ) = 3.9002322358e-07 max(szz0 ) = 3.9129610708e-07 -min(mu_s ) = 4.0000000000e+10 max(mu_s ) = 4.0000000000e+10 -min(mu_n ) = 4.0000000000e+10 max(mu_n ) = 4.0000000000e+10 -min(C_s ) = 1.0000000000e+70 max(C_s ) = 1.0000000000e+70 -min(C_n ) = 1.0000000000e+70 max(C_n ) = 1.0000000000e+70 -min(fric_s ) = 1.0000000000e+01 max(fric_s ) = 1.0000000000e+01 -min(fric_n ) = 1.0000000000e+01 max(fric_n ) = 1.0000000000e+01 -min(dil_s ) = 0.0000000000e+00 max(dil_s ) = 0.0000000000e+00 -min(dil_n ) = 0.0000000000e+00 max(dil_n ) = 0.0000000000e+00 -min(strain_s) = 0.0000000000e+00 max(strain_s) = 0.0000000000e+00 -min(strain_n) = 0.0000000000e+00 max(strain_n) = 0.0000000000e+00 -min(beta_s ) = 1.2500000000e-11 max(beta_s ) = 1.2500000000e-11 -min(beta_n ) = 1.2500000000e-11 max(beta_n ) = 1.2500000000e-11 -min(T0 ) = 2.7315000000e+02 max(T0 ) = 2.7315000000e+02 -min(T ) = 2.7315000000e+02 max(T ) = 2.7315000000e+02 -min(P ) = 2.0000000000e+09 max(P ) = 2.0000000000e+09 -min(comp_cells) = 1 max(comp_cells) = 1 -min(rho_s ) = 2.9221480935e+03 max(rho_s ) = 2.9221480935e+03 -min(rho_n ) = 2.9221480935e+03 max(rho_n ) = 2.9221480935e+03 -min(rho0_n ) = 2.9221480935e+03 max(rho0_n ) = 2.9221480935e+03 -min(X0_s ) = 0.0000000000e+00 max(X0_s ) = 1.0695078754e-06 -min(X0_n ) = 0.0000000000e+00 max(X0_n ) = 1.0695078608e-06 -Phase number 0: -min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 1.0000000000e+00 -min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 1.0000000000e+00 -Phase number 1: -min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 1.0000000000e+00 -min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 1.0000000000e+00 -Phase number 2: -min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 0.0000000000e+00 -min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 0.0000000000e+00 -Phase number 3: -min(ph_n ) = 0.0000000000e+00 max(ph_n ) = 0.0000000000e+00 -min(ph_s ) = 0.0000000000e+00 max(ph_s ) = 0.0000000000e+00 -** Time for particles interpolations I = 0.021027 sec -VxWestSum: 0.000000, VxEastSum: 0.000000 -VzWestSum: 0.000000, VzEastSum: 0.000000: -total West+East+South sum: 0.000000 -SetBCs: Boundary conditions were set up -Velocity field was set to background pure shear -Linear systems allocated -neq_tot = 11781, neq_mom = 7812, neq_cont = 3969 -Run CHOLMOD analysis yes/no: 1 -********************************************** -*** Picard it. 00 of 30 (step = 00005) on 016 threads *** -********************************************** -min(T ) = 2.7315000000e+02 max(T ) = 2.7315000000e+02 -min(P old ) = 2.0000000000e+09 max(P old ) = 2.0000000000e+09 -min(P ) = 2.0000000000e+09 max(P ) = 2.0000000000e+09 -min(div ) = 0.0000000000e+00 max(div ) = 0.0000000000e+00 -min(exxd ) = 0.0000000000e+00 max(exxd ) = 0.0000000000e+00 -min(ezzd ) = 0.0000000000e+00 max(ezzd ) = 0.0000000000e+00 -min(exz ) = 0.0000000000e+00 max(exz ) = 0.0000000000e+00 -min(sxxd ) = -9.7824026770e-11 max(sxxd ) = -9.7505805895e-11 -min(szzd ) = 9.7505805895e-11 max(szzd ) = 9.7824026770e-11 -min(sxz ) = 0.0000000000e+00 max(sxz ) = 0.0000000000e+00 -min(eta_s ) = 1.0000000000e+10 max(eta_s ) = 1.0000000000e+10 -min(eta_n ) = 1.0000000000e+10 max(eta_n ) = 1.0000000000e+10 -min(eta_phys_s) = 1.0000000000e+10 max(eta_phys_s) = 1.0000000000e+10 -min(eta_phys_n) = 1.0000000000e+10 max(eta_phys_n) = 1.0000000000e+10 -min(rho_s ) = 2.9221480935e+03 max(rho_s ) = 2.9221480935e+03 -min(rho_n ) = 2.9221480935e+03 max(rho_n ) = 2.9221480935e+03 -min(rho0_n ) = 2.9221480935e+03 max(rho0_n ) = 2.9221480935e+03 -min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 -min(X_s ) = 0.0000000000e+00 max(X_s ) = 1.3368846285e-06 -min(X_n ) = 0.0000000000e+00 max(X_n ) = 1.3368846139e-06 -Number of momentum equations: 7812 ----- Non-linear residual ---- -Fu abs. = 2.445934e-15 --- Fu rel. = 1.000000e+00 -Fv abs. = 2.266177e-15 --- Fv rel. = 1.000000e+00 -Fp abs. = 0.000000e+00 --- Fp rel. = nan ----- Non-linear residual ---- -Non-linear solver converged to nonlin_abs_mom = 1.00e-08 nonlin_abs_div = 1.00e-08 nonlin_rel_mom = 1.00e-08 nonlin_rel_div = 1.00e-08 -min(Vx grid) = 0.0000000000e+00 max(Vx grid) = 0.0000000000e+00 -min(Vz grid) = -0.0000000000e+00 max(Vz grid) = -0.0000000000e+00 -min( P) = 2.0000000000e+09 max( P) = 2.0000000000e+09 -min( div(V)) = 0.0000000000e+00 max( div(V)) = 0.0000000000e+00 --------------------------------------------------------------- -Picard 2 Newton is activated with condition: 2.00e-01 -Pic. it. 00: abs: |Fx| = 2.45e-15 - |Fz| = 2.27e-15 - |Fp| = 0.00e+00 --- rel: |Fx| = 1.00e+00 - |Fz| = 1.00e+00 - |Fp| = nan --------------------------------------------------------------- -No subgrid diffusion for stress tensor component update -min(d0) = 2.0000000000e-03 max(d0) = 2.0000000000e-03 -min(d ) = 2.0000000000e-03 max(d ) = 2.0000000000e-03 -min(d on markers) = 2.000000000000e-03 max(d on markers) = 2.000000000000e-03 -Subgrid diffusion for temperature update -************************************* -************** Advection ************ -************************************* -Min Vxm = 0.00e+00 m/s / Max Vxm = 0.00e+00 m/s -Min Vzm = 0.00e+00 m/s / Max Vzm = 0.00e+00 m/s -Courant number = 2.00e-01 --- dtc = inf -Do not allow for large time step increase: dt0 = 1.00e+03 -Timestep limited by advection -Cutting off dt because of negligible motion -Current dt = 1.00e+03 s / Courant dt = 0.00e+00 s -************** Advection step 000 of 001: dtsub = 1.00e+03 ************** -** Time for Roger Gunther = 0.337238 sec --- using conservative interpolation: 0 -** Time for advection solver = 0.004314 sec -USING NEW PART IN CELL -OLD NUMBER OF MARKERS = 63504 -NEW NUMBER OF MARKERS = 63504 -USING NEW PART IN CELL -After re-seeding : -Initial number of particles = 63504 -Old number of particles = 63504 -New number of particles = 63504 -** Time for CountPartCell = 0.006363 sec -************************************* -********* Write output files ******** -************************************* -File Breakpoint00003.dat replaced by Breakpoint00005.dat -File Breakpoint00003.dat was successfully renamed -Loading phase proportions - Nb_phases = 4: -** Time for Breakpoint file write = 0.013564 sec -** Time for Output file write = 0.185263 sec -** Total timestep calculation time = 0.545934 sec -** Model time = 5.00e+03 sec -** Current dt = 1.00e+03 sec, Old dt = 1.00e+03 sec - -******************************************************** -************* Ending MDOODZ 7.0 simulation ************* -******************************************************** From e3a06b8d4ffd5f525ab5abd6245a4b63d00fbf48 Mon Sep 17 00:00:00 2001 From: mthielma Date: Mon, 26 Feb 2024 18:42:16 +0100 Subject: [PATCH 06/21] added ellipsoidal inclusion --- SETS/Shrinking_preload.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/SETS/Shrinking_preload.c b/SETS/Shrinking_preload.c index 7f44ea66..c9b544d3 100644 --- a/SETS/Shrinking_preload.c +++ b/SETS/Shrinking_preload.c @@ -1,6 +1,7 @@ #include "mdoodz.h" #include "math.h" +/* int SetPhase(MdoodzInput *input, Coordinates coordinates) { const double radius = 0.01 / input->scaling.L; if (coordinates.x * coordinates.x + coordinates.z * coordinates.z < radius * radius) { @@ -9,6 +10,39 @@ int SetPhase(MdoodzInput *input, Coordinates coordinates) { return 0; } } +*/ + +// for the ellipse, we have several arguments: effective radius, aspect ratio, orientation, X0,Z0 +int SetPhase(MdoodzInput *input, Coordinates coordinates) { + double radius = 0.01 / input->scaling.L; + double AR = 2; + double a,b, Xeff,Zeff; + double cos_theta = cos(45*M_PI/180.0); + double sin_theta=sin(45*M_PI/180.0); + double X0=0; + double Z0=0; + + if (AR>1){ + // compute half axis lengths so that we have the same "volume" as a circle with radius + b = radius / sqrt(AR); + a = radius * sqrt(AR); + + Xeff = (coordinates.x-X0)*cos_theta + (coordinates.z-Z0)*sin_theta; + Zeff = (coordinates.x-X0)*sin_theta - (coordinates.z-Z0)*cos_theta; + } + else { + b = radius; + a = radius; + Xeff = coordinates.x-X0; + Zeff = coordinates.z-Z0; + } + + if ( Xeff*Xeff/(a*a) +Zeff*Zeff/(b*b) <1) { + return 1; + } else { + return 0; + } +} int SetDualPhase(MdoodzInput *input, Coordinates coordinate, int phase) { From 4f4d7221181e68c100990ff31bf268ef1c8afa89 Mon Sep 17 00:00:00 2001 From: mthielma Date: Mon, 26 Feb 2024 18:53:48 +0100 Subject: [PATCH 07/21] cleanup --- SETS/Shrinking_preload.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SETS/Shrinking_preload.txt b/SETS/Shrinking_preload.txt index fa660d88..aaff7eb2 100644 --- a/SETS/Shrinking_preload.txt +++ b/SETS/Shrinking_preload.txt @@ -68,7 +68,7 @@ unsplit_diff_reac = 0 /**** SETUP DEPENDANT ****/ shear_style = 0 bkg_strain_rate = 0.0e-12 -bkg_pressure = 2.0e9 +bkg_pressure = 3.0e9 user0 = 680.0 / temperature [°C] user1 = 3.1558e9 user2 = 10.0 From e1eeede9651eb3385cb8d825884dfec72d5c2ebe Mon Sep 17 00:00:00 2001 From: Thibault Duretz <48455309+tduretz@users.noreply.github.com> Date: Fri, 24 May 2024 15:18:12 +0200 Subject: [PATCH 08/21] Add melting (#128) * rm folder * fixed database and introduce activation volume database overriding in setup * recovered NeckingReview and added RiftingRoman * edit * done with adding setup * Add melting and 2 new setups * add .gitignore * add new c file to CMakeLists * reaorganised melt models * add RiftingMelting setup --- .gitignore | 9 + .../Main_Visualisation_Makie_MD7.jl | 404 +++++--------- .../Main_Visualisation_Makie_Markers_MD7.jl | 17 +- .../Main_Visualisation_Makie_Stuewe.jl | 503 ++++++++++++++++++ JuliaVisualisation/_Melting/MeltingModel.jl | 18 + .../Main_Visualisation_NeckingReview.jl | 72 ++- .../_VisualTests/Main_PinchSwellGSE.jl | 4 +- MDLIB/.gitignore | 2 +- MDLIB/CMakeLists.txt | 1 + MDLIB/FlowLaws.c | 2 +- MDLIB/FreeSurface.c | 8 +- MDLIB/HDF5Output.c | 7 +- MDLIB/InputOutput.c | 10 +- MDLIB/Main_DOODZ.c | 24 +- MDLIB/MeltingRoutines.c | 212 ++++++++ MDLIB/MemoryAllocFree.c | 4 +- MDLIB/NeckingReview.c | 176 ++++++ MDLIB/ParticleRoutines.c | 3 +- MDLIB/RheologyDensity.c | 99 ++-- MDLIB/RheologyParticles.c | 2 +- MDLIB/ThermalRoutines.c | 7 +- MDLIB/include/mdoodz.h | 7 +- MDLIB/makefile | 2 +- MDLIB/mdoodz-private.h | 7 +- Project.toml | 1 + SETS/AnisoHomoVEVP.txt | 4 +- SETS/AnisoVEVP.txt | 4 +- SETS/AnisoViscTest_Debug.txt | 4 +- SETS/AnisoViscTest_Ellipses.txt | 4 +- SETS/AnisoViscTest_HomoRandomAngle.txt | 4 +- SETS/AnisoViscTest_MWE.txt | 4 +- SETS/AnisoViscTest_evolv.txt | 4 +- SETS/AnisotropyLayer.txt | 4 +- SETS/AnneloreSubduction.txt | 6 +- SETS/ChemicalDiffusion.txt | 8 +- SETS/CollisionIra.txt | 10 +- SETS/CollisionPolarCartesian.txt | 6 +- SETS/CollisionPolarCartesianAniso.txt | 6 +- SETS/CollisionZone.c | 2 +- SETS/CollisionZone.txt | 18 +- SETS/CrystallisationStuewe1995.c | 94 ++++ SETS/CrystallisationStuewe1995.txt | 111 ++++ SETS/DoubleSubduction.txt | 14 +- SETS/MLPS_Ellipses.txt | 18 +- SETS/MeltingOverpressure.c | 83 +++ SETS/MeltingOverpressure.txt | 207 +++++++ SETS/Multilayers.txt | 4 +- SETS/Multilayers_aniso.txt | 4 +- .../NeckingReview_NR01.txt | 194 +++++++ .../NeckingReview_NR03.txt | 194 +++++++ .../NeckingReview_NR07.txt | 194 +++++++ .../NeckingReview_NR09.txt | 198 +++++++ SETS/NeckingReview.c | 134 +++-- SETS/NeckingReview.txt | 8 +- SETS/NeckingReviewAniso.txt | 8 +- SETS/NeckingRoman.txt | 8 +- SETS/OceanicCooling.txt | 14 +- SETS/PinchSwellGSE.txt | 4 +- SETS/PlasticityLayers.txt | 4 +- SETS/QuartzCoesite.txt | 6 +- SETS/QuartzCoesite_Simple.txt | 6 +- SETS/QuartzCoesite_paper.txt | 6 +- SETS/QuartzCoesite_paper100.txt | 6 +- SETS/QuartzCoesite_paper150.txt | 6 +- SETS/QuartzCoesite_paper200.txt | 6 +- SETS/RifingMelting.c | 175 ++++++ SETS/RiftingBasic.txt | 18 +- SETS/RiftingChenin.txt | 18 +- SETS/RiftingCheninAniso.txt | 18 +- SETS/RiftingMelting.txt | 204 +++++++ SETS/RiftingRoman.c | 171 ++++++ SETS/RiftingRoman.txt | 181 +++++++ SETS/RiverTom.txt | 4 +- SETS/RiverTomLowerCrust.txt | 6 +- SETS/ShearHeatingDuretz14.txt | 4 +- SETS/ShearInclusionAniso.txt | 4 +- SETS/ShearTemplate.txt | 4 +- SETS/ShearTemplateAniso.txt | 4 +- SETS/ShearTemplateLargeStainAniso.txt | 4 +- SETS/Shrinking.txt | 8 +- SETS/SimpleShearAnisoHomo.txt | 4 +- SETS/StrainLocalization_SH_GSE.txt | 4 +- SETS/ThanushikaSubduction.txt | 24 +- .../ThanushikaSubduction/ThanushikaSubduction | Bin 51000 -> 0 bytes .../ThanushikaSubduction.txt | 279 ---------- SETS/ThermalDiffusion.txt | 8 +- SETS/VEP_Duretz18.txt | 4 +- .../LinearPureshearAnisotropic.txt | 4 +- .../LinearPureshearIsotropic.txt | 4 +- .../LinearSimpleshearAnisotropic.txt | 4 +- .../LinearSimpleshearIsotropic.txt | 4 +- .../NonLinearPureshearAnisotropic.txt | 4 +- .../NonLinearPureshearIsotropic.txt | 4 +- .../NonLinearSimpleshearAnisotropi.txt | 4 +- .../NonLinearSimpleshearIsotropic.txt | 4 +- TESTS/ShearTemplate_original.txt | 4 +- VISUAL_TESTS/PinchSwellGSE.txt | 4 +- VISUAL_TESTS/RiftingChenin.txt | 18 +- VISUAL_TESTS/ShearHeatingDuretz14.txt | 4 +- VISUAL_TESTS/Shrinking.txt | 8 +- VISUAL_TESTS/VEP_Duretz18.txt | 4 +- misc/images/CrystallisationStuewe1995.png | Bin 0 -> 65187 bytes misc/oldSets/ASR.txt | 10 +- misc/oldSets/ASR_SA.txt | 12 +- misc/oldSets/ASR_polar.txt | 10 +- misc/oldSets/CindySmoothInclusion.txt | 4 +- misc/oldSets/CindySmoothInclusionNonDim.txt | 4 +- misc/oldSets/ClemTest.txt | 4 +- misc/oldSets/CompFreeSurf.txt | 12 +- misc/oldSets/CrustalShearBanding_Deform.txt | 4 +- misc/oldSets/CrustalShearBanding_GRL.txt | 4 +- misc/oldSets/DrhoTest.txt | 6 +- misc/oldSets/Duretz14_SimpleShear.txt | 8 +- misc/oldSets/EcloShear_VEVP.txt | 14 +- misc/oldSets/HomoVEPLoading_Yamato19.txt | 6 +- misc/oldSets/Huismans.txt | 4 +- misc/oldSets/Inc2Boules.txt | 8 +- misc/oldSets/LithoScale.txt | 12 +- misc/oldSets/LithoScale2.txt | 12 +- misc/oldSets/LithoScaleClement.txt | 12 +- misc/oldSets/LithoScaleClement1.txt | 12 +- misc/oldSets/LithoScaleClement1b.txt | 12 +- misc/oldSets/LithoScaleClement1b_SA.txt | 12 +- misc/oldSets/LithoScaleClement2.txt | 12 +- misc/oldSets/LithoScaleClement3b.txt | 12 +- misc/oldSets/LithoScaleComp.txt | 12 +- misc/oldSets/LithoScaleSymTest.txt | 14 +- misc/oldSets/LithoScale_SA.txt | 14 +- misc/oldSets/LithoScale_SA2.txt | 14 +- misc/oldSets/LorenzoWilsonEllipse.txt | 28 +- misc/oldSets/M2DiReacTest.txt | 14 +- misc/oldSets/M2DiReacTest_scale.txt | 14 +- misc/oldSets/MetamSoleBasic.txt | 8 +- misc/oldSets/MetamSoleLitho.txt | 18 +- misc/oldSets/MetamSoleLitho_v2.txt | 24 +- misc/oldSets/MetamSoleRidge.txt | 24 +- misc/oldSets/MetamSoleRidge_v2.txt | 24 +- misc/oldSets/MetamSoleRidge_v3.txt | 24 +- misc/oldSets/PlateauPierre.txt | 14 +- misc/oldSets/PressureTemplate.txt | 6 +- misc/oldSets/PureShear_Lithos_FS.txt | 4 +- misc/oldSets/QuartzCoesite.txt | 6 +- misc/oldSets/Reaction.txt | 14 +- misc/oldSets/ReactionCentre.txt | 14 +- misc/oldSets/ReactionM2Di.txt | 14 +- misc/oldSets/Rift_PhaseChanges.txt | 18 +- misc/oldSets/RiftingPaulineMD6.txt | 18 +- misc/oldSets/RiftingPaulineMD6_VALGRIND.txt | 18 +- misc/oldSets/SH_Duretz14.txt | 4 +- .../Setup03_strongCircleAnisoConst.txt | 4 +- misc/oldSets/ShearInclusionAniso.txt | 8 +- misc/oldSets/ShearInclusionAniso2.txt | 4 +- misc/oldSets/ShearLayerAniso.txt | 8 +- misc/oldSets/ShearTemplate.txt | 4 +- misc/oldSets/Shear_VEP_aniso.txt | 4 +- misc/oldSets/Shear_VEVP.txt | 4 +- misc/oldSets/Shear_VEVP_comp.txt | 4 +- misc/oldSets/Shear_lin_aniso.txt | 4 +- misc/oldSets/Shear_pwl.txt | 4 +- misc/oldSets/Shear_pwl_FD.txt | 4 +- misc/oldSets/Shear_pwl_VE.txt | 4 +- misc/oldSets/Shear_pwl_aniso.txt | 4 +- misc/oldSets/SimpleShearAnisoHomo.txt | 8 +- misc/oldSets/SimpleShearNecking.txt | 8 +- misc/oldSets/StefanBending.txt | 6 +- misc/oldSets/StefanBending_Cartesian.txt | 6 +- misc/oldSets/StefanBending_debug.txt | 6 +- misc/oldSets/VEP_Duretz18.txt | 4 +- misc/oldSets/VE_rebound.txt | 4 +- misc/oldSets/Wedge.txt | 4 +- misc/oldSets/WhatEverWeWant.txt | 4 +- misc/oldSets/set_Wedge.c | 2 +- misc/oldSets/shrinking.txt | 8 +- 173 files changed, 3858 insertions(+), 1270 deletions(-) create mode 100644 JuliaVisualisation/Main_Visualisation_Makie_Stuewe.jl create mode 100644 JuliaVisualisation/_Melting/MeltingModel.jl create mode 100644 MDLIB/MeltingRoutines.c create mode 100755 MDLIB/NeckingReview.c create mode 100644 SETS/CrystallisationStuewe1995.c create mode 100644 SETS/CrystallisationStuewe1995.txt create mode 100644 SETS/MeltingOverpressure.c create mode 100644 SETS/MeltingOverpressure.txt create mode 100755 SETS/NeckinReviewSystematics/NeckingReview_NR01.txt create mode 100755 SETS/NeckinReviewSystematics/NeckingReview_NR03.txt create mode 100755 SETS/NeckinReviewSystematics/NeckingReview_NR07.txt create mode 100755 SETS/NeckinReviewSystematics/NeckingReview_NR09.txt create mode 100755 SETS/RifingMelting.c create mode 100755 SETS/RiftingMelting.txt create mode 100644 SETS/RiftingRoman.c create mode 100644 SETS/RiftingRoman.txt delete mode 100755 SETS/ThanushikaSubduction/ThanushikaSubduction delete mode 100755 SETS/ThanushikaSubduction/ThanushikaSubduction.txt create mode 100644 misc/images/CrystallisationStuewe1995.png diff --git a/.gitignore b/.gitignore index c238fa77..165db878 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,9 @@ +# Ignore all +* +# Unignore all with extensions +!*.* +# Unignore all dirs +!*/ .idea __pycache__/ cmake-build**/ @@ -8,6 +14,9 @@ env.cmake visualtests-out build/ RUNS/ +MDLIB/*/*.png +MDLIB/*/*/*.png *.out *.o .vscode +Manifest.toml \ No newline at end of file diff --git a/JuliaVisualisation/Main_Visualisation_Makie_MD7.jl b/JuliaVisualisation/Main_Visualisation_Makie_MD7.jl index ab53518e..7406fee7 100644 --- a/JuliaVisualisation/Main_Visualisation_Makie_MD7.jl +++ b/JuliaVisualisation/Main_Visualisation_Makie_MD7.jl @@ -1,6 +1,8 @@ import Pkg Pkg.activate(normpath(joinpath(@__DIR__, "."))) -using HDF5, GLMakie, Printf, Colors, ColorSchemes, MathTeXEngine, LinearAlgebra, FFMPEG, Statistics +using HDF5, Printf, Colors, ColorSchemes, MathTeXEngine, LinearAlgebra, FFMPEG, Statistics +using CairoMakie, GLMakie +const Mak = GLMakie Makie.update_theme!(fonts = (regular = texfont(), bold = texfont(:bold), italic = texfont(:italic))) const y = 365*24*3600 @@ -16,11 +18,34 @@ function ExtractField(filename, field, size, mask_air, mask) return field end +function AddCountourQuivers!(PlotOnTop, ax1, xc, xv, zc, V, T, σ1, Fab, height, Lc, cm_y, group_phases, Δ) + if PlotOnTop.T_contours + contour!(ax1, xc./Lc, zc./Lc, T, levels=0:200:1400, linewidth = 4, color=:black ) + end + if PlotOnTop.ph_contours + contour!(ax1, xc_hr./Lc, zc_hr./Lc, group_phases, levels=-1:1:maximum(group_phases), linewidth = 4, color=:white ) + end + if PlotOnTop.fabric + arrows!(ax1, xc./Lc, zc./Lc, Fab.x, Fab.z, arrowsize = 0, lengthscale=Δ/1.5) + end + if PlotOnTop.σ1_axis + arrows!(ax1, xc./Lc, zc./Lc, σ1.x, σ1.z, arrowsize = 0, lengthscale=Δ/1.5) + end + if PlotOnTop.vel_vec + arrows!(ax1, xc./Lc, zc./Lc, V.x*cm_y, V.z*cm_y, arrowsize = V.arrow, lengthscale = V.scale) + end + if PlotOnTop.topo + lines!(ax1, xv./Lc, height./Lc) + end +end + function main() # Set the path to your files - # path ="/Users/tduretz/REPO/MDOODZ7.0/MDLIB//" - path ="/Users/tduretz/Downloads/" + path ="/Users/tduretz/REPO/MDOODZ7.0/MDLIB/TEST_ROMAN_ANI3_00_MR/" + path ="/Users/tduretz/REPO/MDOODZ7.0/MDLIB//" + + # path ="/Users/tduretz/Downloads/" # path ="/Users/tduretz/REPO/MDOODZ7.0/MDLIB/DoubleSubduction_OMP16/" # path ="/Users/tduretz/REPO/MDOODZ7.0/RUNS/NR00/" # path ="/Users/tduretz/REPO/MDOODZ7.0/MDLIB/qcoe_ref/" @@ -28,11 +53,12 @@ function main() # path ="/Users/tduretz/REPO/MDOODZ7.0/RUNS/qcoe_x100/" # path ="/Users/tduretz/REPO/MDOODZ7.0/MDLIB/qcoe_simp2/" # path ="/Users/tduretz/REPO/MDOODZ7.0/MDLIB/qcoe_simp_tau1e10/" + # path ="/Users/tduretz/REPO/MDOODZ7.0/RUNS/1_NR09/" # File numbers - file_start = 5000 + file_start = 1000 file_step = 100 - file_end = 5000 + file_end = 1000 # Select field to visualise # field = :Phases @@ -40,28 +66,35 @@ function main() # field = :Density # field = :Viscosity # field = :PlasticStrainrate - #field = :Stress + # field = :Stress # field = :StrainRate # field = :Pressure - # field = :Temperature + # field = :Divergence + field = :Temperature # field = :Velocity_x # field = :Velocity_z # field = :Velocity # field = :GrainSize - field = :Topography + # field = :Topography # field = :TimeSeries # field = :AnisotropyFactor + # field = :MeltFraction # Switches printfig = false # print figures to disk printvid = false framerate = 3 - ph_contours = false # add phase contours - T_contours = true # add temperature contours - fabric = false # add fabric quiver (normal to director) - topo = true + PlotOnTop = ( + ph_contours = false, # add phase contours + T_contours = true, # add temperature contours + fabric = false, # add fabric quiver (normal to director) + topo = true, + σ1_axis = false, + vel_vec = false, + ) α_heatmap = 1.0 #0.85 # transparency of heatmap - σ1_axis = false + vel_arrow = 5 + vel_scale = 3 nap = 0.3 # pause for animation resol = 1000 mov_name = "$(path)/_$(field)/$(field)" # Name of the movie @@ -138,18 +171,20 @@ function main() τII = sqrt.( 0.5*(τxx.^2 .+ τyy.^2 .+ τzz.^2 .+ 0.5*(τxz[1:end-1,1:end-1].^2 .+ τxz[2:end,1:end-1].^2 .+ τxz[1:end-1,2:end].^2 .+ τxz[2:end,2:end].^2 ) ) ); τII[mask_air] .= NaN ε̇II = sqrt.( 0.5*(ε̇xx.^2 .+ ε̇yy.^2 .+ ε̇zz.^2 .+ 0.5*(ε̇xz[1:end-1,1:end-1].^2 .+ ε̇xz[2:end,1:end-1].^2 .+ ε̇xz[1:end-1,2:end].^2 .+ ε̇xz[2:end,2:end].^2 ) ) ); ε̇II[mask_air] .= NaN C = Float64.(reshape(ExtractData( filename, "/Centers/cohesion"), ncx, ncz)) - - if fabric - δani = ExtractField(filename, "/Centers/ani_fac", centroids) + ϕ = ExtractField(filename, "/Centers/phi", centroids, false, 0) + divu = ExtractField(filename, "/Centers/divu", centroids, false, 0) + + Fab = 0. + if PlotOnTop.fabric + δani = ExtractField(filename, "/Centers/ani_fac", centroids, false, 0) Nx = Float64.(reshape(ExtractData( filename, "/Centers/nx"), ncx, ncz)) Nz = Float64.(reshape(ExtractData( filename, "/Centers/nz"), ncx, ncz)) - Fab_x = -Nz./Nx - Fab_z = ones(size(Nz)) - nrm = sqrt.(Fab_x.^2 .+ Fab_z.^2) - Fab_x ./= nrm - Fab_z ./= nrm + Fab = (x=-Nz./Nx, z=ones(size(Nz))) + nrm = sqrt.(Fab.x.^2 .+ Fab.z.^2) + Fabx ./= nrm + Fabz ./= nrm end - if topo + if PlotOnTop.topo height = Float64.(ExtractData( filename, "/Topo/z_grid")); Vx_grid = Float64.(ExtractData( filename, "/Topo/Vx_grid")); Vz_grid = Float64.(ExtractData( filename, "/Topo/Vz_grid")); @@ -160,7 +195,9 @@ function main() end Vxc = 0.5 .* (Vx[1:end-1,2:end-1] .+ Vx[2:end-0,2:end-1]) Vzc = 0.5 .* (Vz[2:end-1,1:end-1] .+ Vz[2:end-1,2:end-0]) - if σ1_axis + V = (x=Vxc, z=Vzc, arrow=vel_arrow, scale=vel_scale) + σ1 = 0. + if PlotOnTop.σ1_axis σ1 = PrincipalStress(τxx, τzz, τxz, P) end @@ -183,7 +220,8 @@ function main() # group_phases[ ph_hr.==3 ] .= 3 ##################################### - + f = Figure(resolution = (Lx/Lz*resol, resol), fontsize=25) + empty!(f) f = Figure(resolution = (Lx/Lz*resol, resol), fontsize=25) if field==:Phases @@ -191,165 +229,80 @@ function main() # hm = heatmap!(ax1, xc_hr./Lc, zc_hr./Lc, ph_hr, colormap = phase_colors) hm = heatmap!(ax1, xc_hr./Lc, zc_hr./Lc, ph_hr, colormap = :turbo) hm = heatmap!(ax1, xc_hr./Lc, zc_hr./Lc, ph_dual_hr, colormap = :turbo) - if T_contours - contour!(ax1, xc./Lc, zc./Lc, T, levels=0:200:1400, linewidth = 4, color=:white ) - end - if fabric - arrows!(ax1, xc./Lc, zc./Lc, Fab_x, Fab_z, arrowsize = 0, lengthscale=Δ/1.5) - end - if σ1_axis - arrows!(ax1, xc./Lc, zc./Lc, σ1.x, σ1.z, arrowsize = 0, lengthscale=Δ/1.5) - end + AddCountourQuivers!(PlotOnTop, ax1, xc, xv, zc, V, T, σ1, Fab, height, Lc, cm_y, group_phases, Δ) colsize!(f.layout, 1, Aspect(1, Lx/Lz)) - CairoMakie.Colorbar(f[1, 2], hm, label = "Phases", width = 20, labelsize = 25, ticklabelsize = 14 ) - CairoMakie.colgap!(f.layout, 20) + Mak.Colorbar(f[1, 2], hm, label = "Phases", width = 20, labelsize = 25, ticklabelsize = 14 ) + Mak.colgap!(f.layout, 20) if printfig Print2Disk( f, path, string(field), istep) end end if field==:Viscosity ax1 = Axis(f[1, 1], title = L"$\eta$ at $t$ = %$(tMy) Ma", xlabel = L"$x$ [m]", ylabel = L"$y$ [m]") hm = heatmap!(ax1, xc./Lc, zc./Lc, log10.(ηc), colormap = (:turbo, α_heatmap)) - if T_contours - contour!(ax1, xc./Lc, zc./Lc, T, levels=0:200:1400, linewidth = 3, color=:white ) - end - if ph_contours - contour!(ax1, xc_hr./Lc, zc_hr./Lc, group_phases, levels=-1:1:maximum(group_phases), linewidth = 6, color=:white ) - end - if fabric - arrows!(ax1, xc./Lc, zc./Lc, Fab_x, Fab_z, arrowsize = 0, lengthscale=Δ/1.5) - end - if σ1_axis - arrows!(ax1, xc./Lc, zc./Lc, σ1.x, σ1.z, arrowsize = 0, lengthscale=Δ/1.5) - end + AddCountourQuivers!(PlotOnTop, ax1, xc, xv, zc, V, T, σ1, Fab, height, Lc, cm_y, group_phases, Δ) colsize!(f.layout, 1, Aspect(1, Lx/Lz)) - CairoMakie.Colorbar(f[1, 2], hm, label = L"$\eta$ [Pa.s]", width = 20, labelsize = 25, ticklabelsize = 14 ) - CairoMakie.colgap!(f.layout, 20) + Mak.Colorbar(f[1, 2], hm, label = L"$\eta$ [Pa.s]", width = 20, labelsize = 25, ticklabelsize = 14 ) + Mak.colgap!(f.layout, 20) if printfig Print2Disk( f, path, string(field), istep) end end if field==:Density ax1 = Axis(f[1, 1], title = L"$\rho$ at $t$ = %$(tMy) Ma", xlabel = L"$x$ [km]", ylabel = L"$y$ [km]") - hm = heatmap!(ax1, xc./Lc, zc./Lc, ρc, colormap = (:turbo, α_heatmap)) - if T_contours - contour!(ax1, xc./Lc, zc./Lc, T, levels=0:200:1400, linewidth = 4, color=:white ) - end - if ph_contours - contour!(ax1, xc_hr./Lc, zc_hr./Lc, group_phases, levels=-1:1:maximum(group_phases), linewidth = 4, color=:white ) - end - if fabric - arrows!(ax1, xc./Lc, zc./Lc, Fab_x, Fab_z, arrowsize = 0, lengthscale=Δ/1.5) - end - if σ1_axis - arrows!(ax1, xc./Lc, zc./Lc, σ1.x, σ1.z, arrowsize = 0, lengthscale=Δ/1.5) - end + hm = heatmap!(ax1, xc./Lc, zc./Lc, ρc, colormap = (:turbo, α_heatmap)) + AddCountourQuivers!(PlotOnTop, ax1, xc, xv, zc, V, T, σ1, Fab, height, Lc, cm_y, group_phases, Δ) colsize!(f.layout, 1, Aspect(1, Lx/Lz)) - CairoMakie.Colorbar(f[1, 2], hm, label = L"$\rho$ [kg.m$^{-3}$]", width = 20, labelsize = 25, ticklabelsize = 14 ) - CairoMakie.colgap!(f.layout, 20) + Mak.Colorbar(f[1, 2], hm, label = L"$\rho$ [kg.m$^{-3}$]", width = 20, labelsize = 25, ticklabelsize = 14 ) + Mak.colgap!(f.layout, 20) if printfig Print2Disk( f, path, string(field), istep) end end if field==:Density ax1 = Axis(f[1, 1], title = L"$ρ$ at $t$ = %$(tMy) Ma", xlabel = L"$x$ [km]", ylabel = L"$y$ [km]") hm = heatmap!(ax1, xc./Lc, zc./Lc, ρc, colormap = (:turbo, α_heatmap)) - if T_contours - contour!(ax1, xc./Lc, zc./Lc, T, levels=0:200:1400, linewidth = 4, color=:white ) - end - if ph_contours - contour!(ax1, xc_hr./Lc, zc_hr./Lc, group_phases, levels=-1:1:maximum(group_phases), linewidth = 4, color=:white ) - end - if fabric - arrows!(ax1, xc./Lc, zc./Lc, Fab_x, Fab_z, arrowsize = 0, lengthscale=Δ/1.5) - end - if σ1_axis - arrows!(ax1, xc./Lc, zc./Lc, σ1.x, σ1.z, arrowsize = 0, lengthscale=Δ/1.5) - end + AddCountourQuivers!(PlotOnTop, ax1, xc, xv, zc, V, T, σ1, Fab, height, Lc, cm_y, group_phases, Δ) colsize!(f.layout, 1, Aspect(1, Lx/Lz)) - GLMakie.Colorbar(f[1, 2], hm, label = L"$ρ$ [kg.m$^3$]", width = 20, labelsize = 25, ticklabelsize = 14 ) - GLMakie.colgap!(f.layout, 20) + Mak.Colorbar(f[1, 2], hm, label = L"$ρ$ [kg.m$^3$]", width = 20, labelsize = 25, ticklabelsize = 14 ) + Mak.colgap!(f.layout, 20) if printfig Print2Disk( f, path, string(field), istep) end end if field==:Stress ax1 = Axis(f[1, 1], title = L"$\tau_\textrm{II}$ at $t$ = %$(tMy) Ma", xlabel = L"$x$ [km]", ylabel = L"$y$ [km]") hm = heatmap!(ax1, xc./Lc, zc./Lc, τII./1e6, colormap = (:turbo, α_heatmap)) - if T_contours - contour!(ax1, xc./Lc, zc./Lc, T, levels=0:200:1400, linewidth = 4, color=:white ) - end - if ph_contours - contour!(ax1, xc_hr./Lc, zc_hr./Lc, group_phases, levels=-1:1:maximum(group_phases), linewidth = 4, color=:white ) - end - if fabric - arrows!(ax1, xc./Lc, zc./Lc, Fab_x, Fab_z, arrowsize = 0, lengthscale=Δ/1.5) - end - if σ1_axis - arrows!(ax1, xc./Lc, zc./Lc, σ1.x, σ1.z, arrowsize = 0, lengthscale=Δ/1.5) - end + AddCountourQuivers!(PlotOnTop, ax1, xc, xv, zc, V, T, σ1, Fab, height, Lc, cm_y, group_phases, Δ) colsize!(f.layout, 1, Aspect(1, Lx/Lz)) - GLMakie.Colorbar(f[1, 2], hm, label = L"$\tau_\textrm{II}$ [MPa]", width = 20, labelsize = 25, ticklabelsize = 14 ) - GLMakie.colgap!(f.layout, 20) + Mak.Colorbar(f[1, 2], hm, label = L"$\tau_\textrm{II}$ [MPa]", width = 20, labelsize = 25, ticklabelsize = 14 ) + Mak.colgap!(f.layout, 20) if printfig Print2Disk( f, path, string(field), istep) end end if field==:Pressure ax1 = Axis(f[1, 1], title = L"$P$ at $t$ = %$(tMy) Ma", xlabel = L"$x$ [km]", ylabel = L"$y$ [km]") - hm = heatmap!(ax1, xc./Lc, zc./Lc, P, colormap = (:turbo, α_heatmap)) - if T_contours - contour!(ax1, xc./Lc, zc./Lc, T, levels=0:200:1400, linewidth = 4, color=:white ) - end - if ph_contours - contour!(ax1, xc_hr./Lc, zc_hr./Lc, group_phases, levels=-1:1:maximum(group_phases), linewidth = 4, color=:white ) - end - if fabric - arrows!(ax1, xc./Lc, zc./Lc, Fab_x, Fab_z, arrowsize = 0, lengthscale=Δ/1.5) - end - if σ1_axis - arrows!(ax1, xc./Lc, zc./Lc, σ1.x, σ1.z, arrowsize = 0, lengthscale=Δ/1.5) - end + hm = heatmap!(ax1, xc./Lc, zc./Lc, P./1e9, colormap = (:turbo, α_heatmap)) #, colorrange=(1,1.2)1e4*365*24*3600 + AddCountourQuivers!(PlotOnTop, ax1, xc, xv, zc, V, T, σ1, Fab, height, Lc, cm_y, group_phases, Δ) colsize!(f.layout, 1, Aspect(1, Lx/Lz)) - CairoMakie.Colorbar(f[1, 2], hm, label = L"$P$ [s$^{-1}$]", width = 20, labelsize = 25, ticklabelsize = 14 ) - CairoMakie.colgap!(f.layout, 20) + Mak.Colorbar(f[1, 2], hm, label = L"$P$ [s$^{-1}$]", width = 20, labelsize = 25, ticklabelsize = 14 ) + Mak.colgap!(f.layout, 20) if printfig Print2Disk( f, path, string(field), istep) end end - if field==:Temperature - ax1 = Axis(f[1, 1], title = L"$T$ at $t$ = %$(tMy) Ma", xlabel = L"$x$ [km]", ylabel = L"$y$ [km]") - hm = heatmap!(ax1, xc./Lc, zc./Lc, T, colormap = (:turbo, α_heatmap)) - if T_contours - contour!(ax1, xc./Lc, zc./Lc, T, levels=0:200:1400, linewidth = 4, color=:white ) - end - if ph_contours - contour!(ax1, xc_hr./Lc, zc_hr./Lc, group_phases, levels=-1:1:maximum(group_phases), linewidth = 4, color=:white ) - end - if fabric - arrows!(ax1, xc./Lc, zc./Lc, Fab_x, Fab_z, arrowsize = 0, lengthscale=Δ/1.5) - end - if σ1_axis - arrows!(ax1, xc./Lc, zc./Lc, σ1.x, σ1.z, arrowsize = 0, lengthscale=Δ/1.5) - end + if field==:Divergence + ax1 = Axis(f[1, 1], title = L"∇⋅V at $t$ = %$(tMy) Ma", xlabel = L"$x$ [km]", ylabel = L"$y$ [km]") + hm = heatmap!(ax1, xc./Lc, zc./Lc, divu, colormap = (:turbo, α_heatmap)) + AddCountourQuivers!(PlotOnTop, ax1, xc, xv, zc, V, T, σ1, Fab, height, Lc, cm_y, group_phases, Δ) colsize!(f.layout, 1, Aspect(1, Lx/Lz)) - CairoMakie.Colorbar(f[1, 2], hm, label = L"$T$ [C]", width = 20, labelsize = 25, ticklabelsize = 14 ) - CairoMakie.colgap!(f.layout, 20) + Mak.Colorbar(f[1, 2], hm, label = L"∇⋅V [s$^{-1}$]", width = 20, labelsize = 25, ticklabelsize = 14 ) + Mak.colgap!(f.layout, 20) if printfig Print2Disk( f, path, string(field), istep) end end if field==:StrainRate ax1 = Axis(f[1, 1], title = L"$\dot{\varepsilon}_\textrm{II}$ at $t$ = %$(tMy) Ma", xlabel = L"$x$ [%$(length_unit)]", ylabel = L"$y$ [%$(length_unit)]") hm = heatmap!(ax1, xc./Lc, zc./Lc, log10.(ε̇II), colormap = (:turbo, α_heatmap)) - if T_contours - contour!(ax1, xc./Lc, zc./Lc, T, levels=0:200:1400, linewidth = 4, color=:white ) - end - if ph_contours - contour!(ax1, xc_hr./Lc, zc_hr./Lc, group_phases, levels=-1:1:maximum(group_phases), linewidth = 4, color=:white ) - end - if fabric - arrows!(ax1, xc./Lc, zc./Lc, Fab_x, Fab_z, arrowsize = 0, lengthscale=Δ/1.5) - end - if σ1_axis - arrows!(ax1, xc./Lc, zc./Lc, σ1.x, σ1.z, arrowsize = 0, lengthscale=Δ/1.5) - end + AddCountourQuivers!(PlotOnTop, ax1, xc, xv, zc, V, T, σ1, Fab, height, Lc, cm_y, group_phases, Δ) colsize!(f.layout, 1, Aspect(1, Lx/Lz)) - CairoMakie.Colorbar(f[1, 2], hm, label = L"$\dot{\varepsilon}_\textrm{II}$ [s$^{-1}$]", width = 20, labelsize = 25, ticklabelsize = 14 ) - CairoMakie.colgap!(f.layout, 20) + Mak.Colorbar(f[1, 2], hm, label = L"$\dot{\varepsilon}_\textrm{II}$ [s$^{-1}$]", width = 20, labelsize = 25, ticklabelsize = 14 ) + Mak.colgap!(f.layout, 20) if printfig Print2Disk( f, path, string(field), istep) end end @@ -357,21 +310,10 @@ function main() ε̇pl[ε̇pl.==0.0] .= 1e-30 ax1 = Axis(f[1, 1], title = L"$\dot{\varepsilon}_\textrm{II}^\textrm{pl}$ at $t$ = %$(tMy) Ma", xlabel = L"$x$ [km]", ylabel = L"$y$ [km]") hm = heatmap!(ax1, xc./Lc, zc./Lc, log10.(ε̇pl), colormap = (:turbo, α_heatmap)) - if T_contours - contour!(ax1, xc./Lc, zc./Lc, T, levels=0:200:1400, linewidth = 4, color=:white ) - end - if ph_contours - contour!(ax1, xc_hr./Lc, zc_hr./Lc, group_phases, levels=-1:1:maximum(group_phases), linewidth = 4, color=:white ) - end - if fabric - arrows!(ax1, xc./Lc, zc./Lc, Fab_x, Fab_z, arrowsize = 0, lengthscale=Δ/1.5) - end - if σ1_axis - arrows!(ax1, xc./Lc, zc./Lc, σ1.x, σ1.z, arrowsize = 0, lengthscale=Δ/1.5) - end + AddCountourQuivers!(PlotOnTop, ax1, xc, xv, zc, V, T, σ1, Fab, height, Lc, cm_y, group_phases, Δ) colsize!(f.layout, 1, Aspect(1, Lx/Lz)) - CairoMakie.Colorbar(f[1, 2], hm, label = L"$\dot{\varepsilon}_\textrm{II}^\textrm{pl}$ [s$^{-1}$]", width = 20, labelsize = 25, ticklabelsize = 14 ) - CairoMakie.colgap!(f.layout, 20) + Mak.Colorbar(f[1, 2], hm, label = L"$\dot{\varepsilon}_\textrm{II}^\textrm{pl}$ [s$^{-1}$]", width = 20, labelsize = 25, ticklabelsize = 14 ) + Mak.colgap!(f.layout, 20) if printfig Print2Disk( f, path, string(field), istep) end end @@ -380,83 +322,39 @@ function main() Vx_BG = 0*xc .- 2*zc' V = sqrt.( (Vxc .- 0.0*Vx_BG).^2 + (Vzc).^2) hm = heatmap!(ax1, xc./Lc, zc./Lc, V, colormap = (:jet, α_heatmap))#, colorrange=(0., 0.6) - if T_contours - contour!(ax1, xc./Lc, zc./Lc, T, levels=0:200:1400, linewidth = 4, color=:white ) - end - if ph_contours - contour!(ax1, xc_hr./Lc, zc_hr./Lc, group_phases, levels=-1:1:maximum(group_phases), linewidth = 4, color=:white ) - end - if fabric - arrows!(ax1, xc./Lc, zc./Lc, Fab_x, Fab_z, arrowsize = 0, lengthscale=Δ/1.5) - end - if σ1_axis - arrows!(ax1, xc./Lc, zc./Lc, σ1.x, σ1.z, arrowsize = 0, lengthscale=Δ/1.5) - end + AddCountourQuivers!(PlotOnTop, ax1, xc, xv, zc, V, T, σ1, Fab, height, Lc, cm_y, group_phases, Δ) # xlims!(ax1, 0., 3.e-3) # ylims!(ax1, 0., 3.e-3) colsize!(f.layout, 1, Aspect(1, Lx/Lz)) - CairoMakie.Colorbar(f[1, 2], hm, label = L"$V$ [m.s$^{-1}$]", width = 20, labelsize = 25, ticklabelsize = 14 ) - CairoMakie.colgap!(f.layout, 20) + Mak.Colorbar(f[1, 2], hm, label = L"$V$ [m.s$^{-1}$]", width = 20, labelsize = 25, ticklabelsize = 14 ) + Mak.colgap!(f.layout, 20) if printfig Print2Disk( f, path, string(field), istep) end end if field==:Velocity_x ax1 = Axis(f[1, 1], title = L"$Vx$ at $t$ = %$(tMy) Ma", xlabel = L"$x$ [km]", ylabel = L"$y$ [km]") hm = heatmap!(ax1, xv, zvx[2:end-1], Vx[2:end-1,:]*cm_yr, colormap = (:jet, α_heatmap))#, colorrange=(0., 0.6) - if T_contours - contour!(ax1, xc, zc, T, levels=0:200:1400, linewidth = 4, color=:white ) - end - if ph_contours - contour!(ax1, xc_hr, zc_hr, group_phases, levels=-1:1:maximum(group_phases), linewidth = 4, color=:white ) - end - if fabric - arrows!(ax1, xc, zc, Fab_x, Fab_z, arrowsize = 0, lengthscale=Δ/1.5) - end - if σ1_axis - arrows!(ax1, xc, zc, σ1.x, σ1.z, arrowsize = 0, lengthscale=Δ/1.5) - end + AddCountourQuivers!(PlotOnTop, ax1, xc, xv, zc, V, T, σ1, Fab, height, Lc, cm_y, group_phases, Δ) colsize!(f.layout, 1, Aspect(1, Lx/Lz)) - CairoMakie.Colorbar(f[1, 2], hm, label = L"$Vx$ [cm.yr$^{-1}$]", width = 20, labelsize = 25, ticklabelsize = 14 ) - CairoMakie.colgap!(f.layout, 20) + Mak.Colorbar(f[1, 2], hm, label = L"$Vx$ [cm.yr$^{-1}$]", width = 20, labelsize = 25, ticklabelsize = 14 ) + Mak.colgap!(f.layout, 20) if printfig Print2Disk( f, path, string(field), istep) end end if field==:Velocity_z ax1 = Axis(f[1, 1], title = L"$Vz$ at $t$ = %$(tMy) Ma", xlabel = L"$x$ [km]", ylabel = L"$y$ [km]") hm = heatmap!(ax1, xvz[2:end-1], zv, Vz[:,2:end-1]*cm_yr, colormap = (:jet, α_heatmap))#, colorrange=(0., 0.6) - if T_contours - contour!(ax1, xc, zc, T, levels=0:200:1400, linewidth = 4, color=:white ) - end - if ph_contours - contour!(ax1, xc_hr, zc_hr, group_phases, levels=-1:1:maximum(group_phases), linewidth = 4, color=:white ) - end - if fabric - arrows!(ax1, xc, zc, Fab_x, Fab_z, arrowsize = 0, lengthscale=Δ/1.5) - end - if σ1_axis - arrows!(ax1, xc, zc, σ1.x, σ1.z, arrowsize = 0, lengthscale=Δ/1.5) - end + AddCountourQuivers!(PlotOnTop, ax1, xc, xv, zc, V, T, σ1, Fab, height, Lc, cm_y, group_phases, Δ) colsize!(f.layout, 1, Aspect(1, Lx/Lz)) - CairoMakie.Colorbar(f[1, 2], hm, label = L"$Vz$ [cm.yr$^{-1}$]", width = 20, labelsize = 25, ticklabelsize = 14 ) - CairoMakie.colgap!(f.layout, 20) + Mak.Colorbar(f[1, 2], hm, label = L"$Vz$ [cm.yr$^{-1}$]", width = 20, labelsize = 25, ticklabelsize = 14 ) + Mak.colgap!(f.layout, 20) if printfig Print2Disk( f, path, string(field), istep) end end if field==:GrainSize ax1 = Axis(f[1, 1], title = L"$d$ at $t$ = %$(tMy) Ma", xlabel = L"$x$ [km]", ylabel = L"$y$ [km]") hm = heatmap!(ax1, xc./Lc, zc./Lc, log10.(d.*1e6), colormap = (:turbo, α_heatmap), colorrange=(1, 3)) - if T_contours - contour!(ax1, xc./Lc, zc./Lc, T, levels=0:200:1400, linewidth = 4, color=:white ) - end - if ph_contours - contour!(ax1, xc_hr./Lc, zc_hr./Lc, group_phases, levels=-1:1:maximum(group_phases), linewidth = 4, color=:white ) - end - if fabric - arrows!(ax1, xc./Lc, zc./Lc, Fab_x, Fab_z, arrowsize = 0, lengthscale=Δ/1.5) - end - if σ1_axis - arrows!(ax1, xc./Lc, zc./Lc, σ1.x, σ1.z, arrowsize = 0, lengthscale=Δ/1.5) - end + AddCountourQuivers!(PlotOnTop, ax1, xc, xv, zc, V, T, σ1, Fab, height, Lc, cm_y, group_phases, Δ) xminz, xmaxz = -0.4, 0.4 zminz, zmaxz = -0.17, 0.17 Lx = xmaxz - xminz @@ -464,100 +362,54 @@ function main() xlims!(ax1, -0.4, 0.4) ylims!(ax1, -0.17, 0.17) colsize!(f.layout, 1, Aspect(1, Lx/Lz)) - CairoMakie.Colorbar(f[1, 2], hm, label = "d", width = 20, labelsize = 25, ticklabelsize = 14 ) - CairoMakie.colgap!(f.layout, 20) + Mak.Colorbar(f[1, 2], hm, label = "d", width = 20, labelsize = 25, ticklabelsize = 14 ) + Mak.colgap!(f.layout, 20) if printfig Print2Disk( f, path, string(field), istep) end end if field==:AnisotropyFactor ax1 = Axis(f[1, 1], title = L"$δ_\textrm{ani}$ at $t$ = %$(tMy) Ma", xlabel = L"$x$ [km]", ylabel = L"$y$ [km]") hm = heatmap!(ax1, xc./Lc, zc./Lc, δani, colormap = (:bilbao, α_heatmap)) - if T_contours - contour!(ax1, xc./Lc, zc./Lc, T, levels=0:200:1400, linewidth = 4, color=:white ) - end - if ph_contours - contour!(ax1, xc_hr./Lc, zc_hr./Lc, group_phases, levels=-1:1:maximum(group_phases), linewidth = 4, color=:white ) - end - if fabric - arrows!(ax1, xc./Lc, zc./Lc, Fab_x, Fab_z, arrowsize = 0, lengthscale=Δ/1.5) - end - if σ1_axis - arrows!(ax1, xc./Lc, zc./Lc, σ1.x, σ1.z, arrowsize = 0, lengthscale=Δ/1.5) - end + AddCountourQuivers!(PlotOnTop, ax1, xc, xv, zc, V, T, σ1, Fab, height, Lc, cm_y, group_phases, Δ) # xminz, xmaxz = -0.4, 0.4 # zminz, zmaxz = -0.17, 0.17 # Lx = xmaxz - xminz # Lz = zmaxz - zminz # xlims!(ax1, -0.4, 0.4) # ylims!(ax1, -0.17, 0.17) - # colsize!(f.layout, 1, Aspect(1, Lx/Lz)) - CairoMakie.Colorbar(f[1, 2], hm, label = L"$δ_\textrm{ani}$", width = 20, labelsize = 25, ticklabelsize = 14 ) - CairoMakie.colgap!(f.layout, 20) + Mak.Colorbar(f[1, 2], hm, label = L"$δ_\textrm{ani}$", width = 20, labelsize = 25, ticklabelsize = 14 ) + Mak.colgap!(f.layout, 20) + colsize!(f.layout, 1, Aspect(1, Lx/Lz)) + if printfig Print2Disk( f, path, string(field), istep) end + end + + if field==:MeltFraction + ax1 = Axis(f[1, 1], title = L"ϕ at $t$ = %$(tMy) Ma", xlabel = L"$x$ [km]", ylabel = L"$y$ [km]") + hm = heatmap!(ax1, xc./Lc, zc./Lc, ϕ, colormap = (:bilbao, α_heatmap)) + AddCountourQuivers!(PlotOnTop, ax1, xc, xv, zc, V, T, σ1, Fab, height, Lc, cm_y, group_phases, Δ) + Mak.Colorbar(f[1, 2], hm, label = L"$ϕ$", width = 20, labelsize = 25, ticklabelsize = 14 ) + Mak.colgap!(f.layout, 20) + colsize!(f.layout, 1, Aspect(1, Lx/Lz)) if printfig Print2Disk( f, path, string(field), istep) end end if field==:Cohesion ax1 = Axis(f[1, 1], title = L"$C$ [MPa] at $t$ = %$(tMy) Ma", xlabel = L"$x$ [km]", ylabel = L"$y$ [km]") hm = heatmap!(ax1, xc./Lc, zc./Lc, C./1e6, colormap = (:bilbao, α_heatmap)) - if T_contours - contour!(ax1, xc./Lc, zc./Lc, T, levels=0:200:1400, linewidth = 4, color=:white ) - end - if ph_contours - contour!(ax1, xc_hr./Lc, zc_hr./Lc, group_phases, levels=-1:1:maximum(group_phases), linewidth = 4, color=:white ) - end - if fabric - arrows!(ax1, xc./Lc, zc./Lc, Fab_x, Fab_z, arrowsize = 0, lengthscale=Δ/1.5) - end - if σ1_axis - arrows!(ax1, xc./Lc, zc./Lc, σ1.x, σ1.z, arrowsize = 0, lengthscale=Δ/1.5) - end - GLMakie.Colorbar(f[1, 2], hm, label = L"$C$ [MPa]", width = 20, labelsize = 25, ticklabelsize = 14 ) - GLMakie.colgap!(f.layout, 20) + AddCountourQuivers!(PlotOnTop, ax1, xc, xv, zc, V, T, σ1, Fab, height, Lc, cm_y, group_phases, Δ) + Mak.Colorbar(f[1, 2], hm, label = L"$C$ [MPa]", width = 20, labelsize = 25, ticklabelsize = 14 ) + Mak.colgap!(f.layout, 20) + colsize!(f.layout, 1, Aspect(1, Lx/Lz)) if printfig Print2Disk( f, path, string(field), istep) end end - if field==:Velocity_x - ax1 = Axis(f[1, 1], title = L"$V_{x}$ [cm/y] at $t$ = %$(tMy) Ma", xlabel = L"$x$ [km]", ylabel = L"$y$ [km]") - hm = heatmap!(ax1, xv./Lc, zc./Lc, Vx[:,2:end-1].*cm_y, colormap = (:turbo, α_heatmap)) - # if T_contours - # contour!(ax1, xc./Lc, zc./Lc, T, levels=0:200:1400, linewidth = 4, color=:white ) - # end - # if ph_contours - # contour!(ax1, xc_hr./Lc, zc_hr./Lc, group_phases, levels=-1:1:maximum(group_phases), linewidth = 4, color=:white ) - # end - # if fabric - # arrows!(ax1, xc./Lc, zc./Lc, Fab_x, Fab_z, arrowsize = 0, lengthscale=Δ/1.5) - # end - # if σ1_axis - # arrows!(ax1, xc./Lc, zc./Lc, σ1.x, σ1.z, arrowsize = 0, lengthscale=Δ/1.5) - # end - # GLMakie.Colorbar(f[1, 2], hm, label = L"$V_{x}$ [cm/y]", width = 20, labelsize = 25, ticklabelsize = 14 ) - # GLMakie.colgap!(f.layout, 20) - # if printfig Print2Disk( f, path, string(field), istep) end - end - - if field==:Velocity_z - ax1 = Axis(f[1, 1], title = L"$\eta$ at $t$ = %$(tMy) Ma", xlabel = L"$x$ [m]", ylabel = L"$y$ [m]") - hm = heatmap!(ax1, xc./Lc, zv./Lc, Vz[2:end-1,:]*1e9, colormap = (:turbo, α_heatmap)) - end - if field==:Temperature ax1 = Axis(f[1, 1], title = L"$T$ [C] at $t$ = %$(tMy) Ma", xlabel = L"$x$ [km]", ylabel = L"$y$ [km]") hm = heatmap!(ax1, xc./Lc, zc./Lc, T, colormap = (:bilbao, α_heatmap)) - if T_contours - contour!(ax1, xc./Lc, zc./Lc, T, levels=0:200:1400, linewidth = 4, color=:white ) - end - if ph_contours - contour!(ax1, xc_hr./Lc, zc_hr./Lc, group_phases, levels=-1:1:maximum(group_phases), linewidth = 4, color=:white ) - end - if fabric - arrows!(ax1, xc./Lc, zc./Lc, Fab_x, Fab_z, arrowsize = 0, lengthscale=Δ/1.5) - end - if σ1_axis - arrows!(ax1, xc./Lc, zc./Lc, σ1.x, σ1.z, arrowsize = 0, lengthscale=Δ/1.5) - end - GLMakie.Colorbar(f[1, 2], hm, label = L"$T$ [C]", width = 20, labelsize = 25, ticklabelsize = 14 ) - GLMakie.colgap!(f.layout, 20) + AddCountourQuivers!(PlotOnTop, ax1, xc, xv, zc, V, T, σ1, Fab, height, Lc, cm_y, group_phases, Δ) + Mak.Colorbar(f[1, 2], hm, label = L"$T$ [C]", width = 20, labelsize = 25, ticklabelsize = 14 ) + Mak.colgap!(f.layout, 20) + colsize!(f.layout, 1, Aspect(1, Lx/Lz)) if printfig Print2Disk( f, path, string(field), istep) end end diff --git a/JuliaVisualisation/Main_Visualisation_Makie_Markers_MD7.jl b/JuliaVisualisation/Main_Visualisation_Makie_Markers_MD7.jl index f89216f8..168ec698 100644 --- a/JuliaVisualisation/Main_Visualisation_Makie_Markers_MD7.jl +++ b/JuliaVisualisation/Main_Visualisation_Makie_Markers_MD7.jl @@ -12,9 +12,9 @@ function main() path = "/Users/tduretz/REPO/MDOODZ7.0/MDLIB/" # File numbers - file_start = 100 + file_start = 00 file_step = 10 - file_end = 100 + file_end = 00 # Switches resolution = 500 @@ -28,7 +28,7 @@ function main() for istep=file_start:file_step:file_end # Read grid file - filename = string(path, @sprintf("Outputx%05d.gzip.h5", istep)) + filename = string(path, @sprintf("Output%05d.gzip.h5", istep)) model = ExtractData( filename, "/Model/Params") xc = ExtractData( filename, "/Model/xc_coord") zc = ExtractData( filename, "/Model/zc_coord") @@ -41,9 +41,10 @@ function main() ncx_hr, ncz_hr = length(xc_hr), length(zc_hr) # Read marker file - fmark = string(path, @sprintf("Particles_BeforeSurfRemesh%05d.gzip.h5", istep)) + fmark = string(path, @sprintf("Particles%05d.gzip.h5", istep)) xm = Float64.(ExtractData( fmark, "/Particles/x")); - zm = Float64.(ExtractData( fmark, "/Particles/z")); + zm = Float64.(ExtractData( fmark, "/Particles/z")); + phm = Float64.(ExtractData( fmark, "/Particles/phase")); model = ExtractData( fmark, "/Model/Params") # Model properties @@ -85,10 +86,10 @@ function main() # Figure f = Figure(resolution = (Lx/Lz*resolution, resolution), fontsize=25) ax1 = Axis(f[1, 1], title = L"Phases at $t$ = %$(tMy) Ma", xlabel = L"$x$ [km]", ylabel = L"$y$ [km]") - heatmap!(ax1, xc./Lc, zc./Lc, T, linewidth = 4, color=:white ) - scatter!(ax1, xm./Lc, zm./Lc) + # heatmap!(ax1, xc./Lc, zc./Lc, T, linewidth = 4, color=:white ) + scatter!(ax1, xm[phm.==0]./Lc, zm[phm.==0]./Lc) lines!(ax1, xv./Lc, height./Lc) - scatter!(ax1, x_mark./Lc, z_mark./Lc) + # scatter!(ax1, x_mark./Lc, z_mark./Lc) DataInspector(f) display(f) diff --git a/JuliaVisualisation/Main_Visualisation_Makie_Stuewe.jl b/JuliaVisualisation/Main_Visualisation_Makie_Stuewe.jl new file mode 100644 index 00000000..6db2216e --- /dev/null +++ b/JuliaVisualisation/Main_Visualisation_Makie_Stuewe.jl @@ -0,0 +1,503 @@ +import Pkg +Pkg.activate(normpath(joinpath(@__DIR__, "."))) +using HDF5, Printf, Colors, ColorSchemes, MathTeXEngine, LinearAlgebra, FFMPEG, Statistics +using CairoMakie, GLMakie +const Mak = GLMakie +Mak.activate!(inline=false) +Makie.update_theme!(fonts = (regular = texfont(), bold = texfont(:bold), italic = texfont(:italic))) + +const y = 365*24*3600 +const My = 1e6*y +const cm_y = y*100. + +function ExtractField(filename, field, size, mask_air, mask) + field = try (Float64.(reshape(ExtractData( filename, field), size...))) + catch + @warn "$field not found" + end + mask_air ? field[mask] .= NaN : nothing + return field +end + +function AddCountourQuivers!(PlotOnTop, ax1, xc, zc, V, T, σ1, Fab, Lc, cm_y, group_phases, Δ) + if PlotOnTop.T_contours + contour!(ax1, xc./Lc, zc./Lc, T, levels=0:200:1400, linewidth = 4, color=:white ) + end + if PlotOnTop.ph_contours + contour!(ax1, xc_hr./Lc, zc_hr./Lc, group_phases, levels=-1:1:maximum(group_phases), linewidth = 4, color=:white ) + end + if PlotOnTop.fabric + arrows!(ax1, xc./Lc, zc./Lc, Fab.x, Fab.z, arrowsize = 0, lengthscale=Δ/1.5) + end + if PlotOnTop.σ1_axis + arrows!(ax1, xc./Lc, zc./Lc, σ1.x, σ1.z, arrowsize = 0, lengthscale=Δ/1.5) + end + if PlotOnTop.vel_vec + arrows!(ax1, xc./Lc, zc./Lc, V.x*cm_y, V.z*cm_y, arrowsize = V.arrow, lengthscale = V.scale) + end +end + +function main() + + # Set the path to your files + path ="/Users/tduretz/REPO/MDOODZ7.0/MDLIB/TEST_ROMAN_ANI3_00_MR/" + path ="/Users/tduretz/REPO/MDOODZ7.0/MDLIB//" + + # path ="/Users/tduretz/Downloads/" + # path ="/Users/tduretz/REPO/MDOODZ7.0/MDLIB/DoubleSubduction_OMP16/" + # path ="/Users/tduretz/REPO/MDOODZ7.0/RUNS/NR00/" + # path ="/Users/tduretz/REPO/MDOODZ7.0/MDLIB/qcoe_ref/" + # path ="/Users/tduretz/REPO/MDOODZ7.0/MDLIB/qcoe_LR/" + # path ="/Users/tduretz/REPO/MDOODZ7.0/RUNS/qcoe_x100/" + # path ="/Users/tduretz/REPO/MDOODZ7.0/MDLIB/qcoe_simp2/" + # path ="/Users/tduretz/REPO/MDOODZ7.0/MDLIB/qcoe_simp_tau1e10/" + # path ="/Users/tduretz/REPO/MDOODZ7.0/RUNS/1_NR09/" + + # File numbers + file_start = 00 + file_step = 10 + file_end = 200 + + # Select field to visualise + field = :TemperatureEvolution + # field = :Phases + # field = :Cohesion + # field = :Density + # field = :Viscosity + # field = :PlasticStrainrate + # field = :Stress + # field = :StrainRate + # field = :Pressure + # field = :Divergence + # field = :Temperature + # field = :Velocity_x + # field = :Velocity_z + # field = :Velocity + # field = :GrainSize + # field = :Topography + # field = :TimeSeries + # field = :AnisotropyFactor + # field = :MeltFraction + + # Switches + printfig = false # print figures to disk + printvid = false + framerate = 3 + PlotOnTop = ( + ph_contours = false, # add phase contours + T_contours = false, # add temperature contours + fabric = false, # add fabric quiver (normal to director) + topo = false, + σ1_axis = false, + vel_vec = false, + ) + α_heatmap = 1.0 #0.85 # transparency of heatmap + vel_arrow = 5 + vel_scale = 3 + nap = 0.3 # pause for animation + resol = 1000 + mov_name = "$(path)/_$(field)/$(field)" # Name of the movie + Lx, Lz = 1.0, 1.0 + + # Scaling + # Lc = 1000. + # tc = My + # Vc = 1e-9 + + Lc = 1.0 + tc = My + Vc = 1.0 + + cm_yr = 100.0*3600.0*24.0*365.25 + + T_center = Float64.([]) + t_center = Float64.([]) + + # Time loop + for istep=file_start:file_step:file_end + + filename = string(path, @sprintf("Output%05d.gzip.h5", istep)) + model = ExtractData( filename, "/Model/Params") + xc = ExtractData( filename, "/Model/xc_coord") + zc = ExtractData( filename, "/Model/zc_coord") + xv = ExtractData( filename, "/Model/xg_coord") + zv = ExtractData( filename, "/Model/zg_coord") + xvz = ExtractData( filename, "/Model/xvz_coord") + zvx = ExtractData( filename, "/Model/zvx_coord") + xv_hr = ExtractData( filename, "/VizGrid/xviz_hr") + zv_hr = ExtractData( filename, "/VizGrid/zviz_hr") + # τxz_t = ExtractData( filename, "TimeSeries/sxz_mean_time") + # t_t = ExtractData( filename, "TimeSeries/Time_time") + + xc_hr = 0.5.*(xv_hr[1:end-1] .+ xv_hr[2:end]) + zc_hr = 0.5.*(zv_hr[1:end-1] .+ zv_hr[2:end]) + ncx_hr, ncz_hr = length(xc_hr), length(zc_hr) + + t = model[1] + tMy = round(t/tc, digits=6) + nvx = Int(model[4]) + nvz = Int(model[5]) + ncx, ncz = nvx-1, nvz-1 + xmin, xmax = xv[1], xv[end] + zmin, zmax = zv[1], zv[end] + Lx, Lz = (xmax-xmin)/Lc, (zv[end]-zv[1])/Lc + Δx, Δz, Δ = Lx/ncx, Lz/ncz, sqrt( (Lx/ncx)^2 + (Lz/ncz)^2) + Lx>1e3 ? length_unit="km" : length_unit="m" + @info "Model info" + @show "Model apect ratio" Lx/Lz + @show "Model time" t/My + @show length_unit + centroids, vertices = (ncx, ncz), (nvx, nvz) + + ph = ExtractField(filename, "/VizGrid/compo", centroids, false, 0) + mask_air = ph .== -1.00 + ph_hr = ExtractField(filename, "/VizGrid/compo_hr", (ncx_hr, ncz_hr), false, 0) + ph_dual_hr = ExtractField(filename, "/VizGrid/compo_dual_hr", (ncx_hr, ncz_hr), false, 0) + group_phases = copy(ph_hr); ph_hr[ph_hr.==-1.00] .= NaN + ηc = ExtractField(filename, "/Centers/eta_n", centroids, true, mask_air) + ρc = Float64.(reshape(ExtractData( filename, "/Centers/rho_n"), ncx, ncz)); ρc[mask_air] .= NaN + P = Float64.(reshape(ExtractData( filename, "/Centers/P"), ncx, ncz)); P[mask_air] .= NaN + T = Float64.(reshape(ExtractData( filename, "/Centers/T"), ncx, ncz)) .- 273.15; T[mask_air] .= NaN + d = Float64.(reshape(ExtractData( filename, "/Centers/d"), ncx, ncz)); d[mask_air] .= NaN + ε̇pl = Float64.(reshape(ExtractData( filename, "/Centers/eII_pl"), ncx, ncz)); ε̇pl[mask_air] .= NaN + Vx = Float64.(reshape(ExtractData( filename, "/VxNodes/Vx"), (ncx+1), (ncz+2))) + Vz = Float64.(reshape(ExtractData( filename, "/VzNodes/Vz"), (ncx+2), (ncz+1))) + τxx = Float64.(reshape(ExtractData( filename, "/Centers/sxxd"), ncx, ncz)) + τzz = Float64.(reshape(ExtractData( filename, "/Centers/szzd"), ncx, ncz)) + τyy = -(τzz .+ τxx) + τxz = Float64.(reshape(ExtractData( filename, "/Vertices/sxz"), nvx, nvz)) + ε̇xx = Float64.(reshape(ExtractData( filename, "/Centers/exxd"), ncx, ncz)) + ε̇zz = Float64.(reshape(ExtractData( filename, "/Centers/ezzd"), ncx, ncz)) + ε̇yy = -(ε̇xx .+ ε̇zz) + ε̇xz = Float64.(reshape(ExtractData( filename, "/Vertices/exz"), nvx, nvz)) + τII = sqrt.( 0.5*(τxx.^2 .+ τyy.^2 .+ τzz.^2 .+ 0.5*(τxz[1:end-1,1:end-1].^2 .+ τxz[2:end,1:end-1].^2 .+ τxz[1:end-1,2:end].^2 .+ τxz[2:end,2:end].^2 ) ) ); τII[mask_air] .= NaN + ε̇II = sqrt.( 0.5*(ε̇xx.^2 .+ ε̇yy.^2 .+ ε̇zz.^2 .+ 0.5*(ε̇xz[1:end-1,1:end-1].^2 .+ ε̇xz[2:end,1:end-1].^2 .+ ε̇xz[1:end-1,2:end].^2 .+ ε̇xz[2:end,2:end].^2 ) ) ); ε̇II[mask_air] .= NaN + C = Float64.(reshape(ExtractData( filename, "/Centers/cohesion"), ncx, ncz)) + ϕ = ExtractField(filename, "/Centers/phi", centroids, false, 0) + divu = ExtractField(filename, "/Centers/divu", centroids, false, 0) + + Fab = 0. + if PlotOnTop.fabric + δani = ExtractField(filename, "/Centers/ani_fac", centroids, false, 0) + Nx = Float64.(reshape(ExtractData( filename, "/Centers/nx"), ncx, ncz)) + Nz = Float64.(reshape(ExtractData( filename, "/Centers/nz"), ncx, ncz)) + Fab = (x=-Nz./Nx, z=ones(size(Nz))) + nrm = sqrt.(Fab.x.^2 .+ Fab.z.^2) + Fabx ./= nrm + Fabz ./= nrm + end + if PlotOnTop.topo + height = Float64.(ExtractData( filename, "/Topo/z_grid")); + Vx_grid = Float64.(ExtractData( filename, "/Topo/Vx_grid")); + Vz_grid = Float64.(ExtractData( filename, "/Topo/Vz_grid")); + Vx_mark = Float64.(ExtractData( filename, "/Topo/Vx_mark")); + Vz_mark = Float64.(ExtractData( filename, "/Topo/Vz_mark")); + x_mark = Float64.(ExtractData( filename, "/Topo/x_mark")); + z_mark = Float64.(ExtractData( filename, "/Topo/z_mark")); + end + Vxc = 0.5 .* (Vx[1:end-1,2:end-1] .+ Vx[2:end-0,2:end-1]) + Vzc = 0.5 .* (Vz[2:end-1,1:end-1] .+ Vz[2:end-1,2:end-0]) + V = (x=Vxc, z=Vzc, arrow=vel_arrow, scale=vel_scale) + σ1 = 0. + if PlotOnTop.σ1_axis + σ1 = PrincipalStress(τxx, τzz, τxz, P) + end + + ##################################### + + # Color palette for phase map + cmap = zeros(RGB{Float64}, 7) + cmap[1] = RGBA{Float64}(210/255, 218/255, 205/255, 1.) + cmap[2] = RGBA{Float64}(207/255, 089/255, 087/255, 1.) + cmap[3] = RGBA{Float64}(117/255, 164/255, 148/255, 1.) + cmap[4] = RGBA{Float64}(213/255, 213/255, 209/255, 1.) + cmap[5] = RGBA{Float64}(117/255, 099/255, 097/255, 1.) + cmap[6] = RGBA{Float64}(244/255, 218/255, 205/255, 1.) + cmap[7] = RGBA{Float64}(223/255, 233/255, 219/255, 1.) + phase_colors = cgrad(cmap, length(cmap), categorical=true, rev=false) + + # # Group phases for contouring + # group_phases[ ph_hr.==4 .|| ph_hr.==0 .|| ph_hr.==5 .|| ph_hr.==1 ] .= 0 + # group_phases[ ph_hr.==2 .|| ph_hr.==6 ] .= 1 + # group_phases[ ph_hr.==3 ] .= 3 + + centx = Int64(floor(ncx/2)) + centz = Int64(floor(ncx/2)) + push!(T_center, T[centx, centz]) + push!(t_center, t) + + ##################################### + + f = Figure(resolution = (Lx/Lz*resol, resol), fontsize=25) + + if field==:Phases + ax1 = Axis(f[1, 1], title = L"Phases at $t$ = %$(tMy) Ma", xlabel = L"$x$ [m]", ylabel = L"$y$ [m]") + # hm = heatmap!(ax1, xc_hr./Lc, zc_hr./Lc, ph_hr, colormap = phase_colors) + hm = heatmap!(ax1, xc_hr./Lc, zc_hr./Lc, ph_hr, colormap = :turbo) + hm = heatmap!(ax1, xc_hr./Lc, zc_hr./Lc, ph_dual_hr, colormap = :turbo) + AddCountourQuivers!(PlotOnTop, ax1, xc, zc, V, T, σ1, Fab, Lc, cm_y, group_phases, Δ) + colsize!(f.layout, 1, Aspect(1, Lx/Lz)) + Mak.Colorbar(f[1, 2], hm, label = "Phases", width = 20, labelsize = 25, ticklabelsize = 14 ) + Mak.colgap!(f.layout, 20) + if printfig Print2Disk( f, path, string(field), istep) end + end + + if field==:Viscosity + ax1 = Axis(f[1, 1], title = L"$\eta$ at $t$ = %$(tMy) Ma", xlabel = L"$x$ [m]", ylabel = L"$y$ [m]") + hm = heatmap!(ax1, xc./Lc, zc./Lc, log10.(ηc), colormap = (:turbo, α_heatmap)) + AddCountourQuivers!(PlotOnTop, ax1, xc, zc, V, T, σ1, Fab, Lc, cm_y, group_phases, Δ) + colsize!(f.layout, 1, Aspect(1, Lx/Lz)) + Mak.Colorbar(f[1, 2], hm, label = L"$\eta$ [Pa.s]", width = 20, labelsize = 25, ticklabelsize = 14 ) + Mak.colgap!(f.layout, 20) + if printfig Print2Disk( f, path, string(field), istep) end + end + + if field==:Density + ax1 = Axis(f[1, 1], title = L"$\rho$ at $t$ = %$(tMy) Ma", xlabel = L"$x$ [km]", ylabel = L"$y$ [km]") + hm = heatmap!(ax1, xc./Lc, zc./Lc, ρc, colormap = (:turbo, α_heatmap)) + AddCountourQuivers!(PlotOnTop, ax1, xc, zc, V, T, σ1, Fab, Lc, cm_y, group_phases, Δ) + colsize!(f.layout, 1, Aspect(1, Lx/Lz)) + Mak.Colorbar(f[1, 2], hm, label = L"$\rho$ [kg.m$^{-3}$]", width = 20, labelsize = 25, ticklabelsize = 14 ) + Mak.colgap!(f.layout, 20) + if printfig Print2Disk( f, path, string(field), istep) end + end + + if field==:Density + ax1 = Axis(f[1, 1], title = L"$ρ$ at $t$ = %$(tMy) Ma", xlabel = L"$x$ [km]", ylabel = L"$y$ [km]") + hm = heatmap!(ax1, xc./Lc, zc./Lc, ρc, colormap = (:turbo, α_heatmap)) + AddCountourQuivers!(PlotOnTop, ax1, xc, zc, V, T, σ1, Fab, Lc, cm_y, group_phases, Δ) + colsize!(f.layout, 1, Aspect(1, Lx/Lz)) + Mak.Colorbar(f[1, 2], hm, label = L"$ρ$ [kg.m$^3$]", width = 20, labelsize = 25, ticklabelsize = 14 ) + Mak.colgap!(f.layout, 20) + if printfig Print2Disk( f, path, string(field), istep) end + end + + if field==:Stress + ax1 = Axis(f[1, 1], title = L"$\tau_\textrm{II}$ at $t$ = %$(tMy) Ma", xlabel = L"$x$ [km]", ylabel = L"$y$ [km]") + hm = heatmap!(ax1, xc./Lc, zc./Lc, τII./1e6, colormap = (:turbo, α_heatmap)) + AddCountourQuivers!(PlotOnTop, ax1, xc, zc, V, T, σ1, Fab, Lc, cm_y, group_phases, Δ) + colsize!(f.layout, 1, Aspect(1, Lx/Lz)) + Mak.Colorbar(f[1, 2], hm, label = L"$\tau_\textrm{II}$ [MPa]", width = 20, labelsize = 25, ticklabelsize = 14 ) + Mak.colgap!(f.layout, 20) + if printfig Print2Disk( f, path, string(field), istep) end + end + + if field==:Pressure + ax1 = Axis(f[1, 1], title = L"$P$ at $t$ = %$(tMy) Ma", xlabel = L"$x$ [km]", ylabel = L"$y$ [km]") + hm = heatmap!(ax1, xc./Lc, zc./Lc, P./1e9, colormap = (:turbo, α_heatmap)) #, colorrange=(1,1.2)1e4*365*24*3600 + AddCountourQuivers!(PlotOnTop, ax1, xc, zc, V, T, σ1, Fab, Lc, cm_y, group_phases, Δ) + colsize!(f.layout, 1, Aspect(1, Lx/Lz)) + Mak.Colorbar(f[1, 2], hm, label = L"$P$ [s$^{-1}$]", width = 20, labelsize = 25, ticklabelsize = 14 ) + Mak.colgap!(f.layout, 20) + if printfig Print2Disk( f, path, string(field), istep) end + end + + if field==:Divergence + ax1 = Axis(f[1, 1], title = L"∇⋅V at $t$ = %$(tMy) Ma", xlabel = L"$x$ [km]", ylabel = L"$y$ [km]") + hm = heatmap!(ax1, xc./Lc, zc./Lc, divu, colormap = (:turbo, α_heatmap)) + AddCountourQuivers!(PlotOnTop, ax1, xc, zc, V, T, σ1, Fab, Lc, cm_y, group_phases, Δ) + colsize!(f.layout, 1, Aspect(1, Lx/Lz)) + Mak.Colorbar(f[1, 2], hm, label = L"∇⋅V [s$^{-1}$]", width = 20, labelsize = 25, ticklabelsize = 14 ) + Mak.colgap!(f.layout, 20) + if printfig Print2Disk( f, path, string(field), istep) end + end + + if field==:Temperature + ax1 = Axis(f[1, 1], title = L"$T$ at $t$ = %$(tMy) Ma", xlabel = L"$x$ [km]", ylabel = L"$y$ [km]") + hm = heatmap!(ax1, xc./Lc, zc./Lc, T, colormap = (:turbo, α_heatmap)) + AddCountourQuivers!(PlotOnTop, ax1, xc, zc, V, T, σ1, Fab, Lc, cm_y, group_phases, Δ) + colsize!(f.layout, 1, Aspect(1, Lx/Lz)) + Mak.Colorbar(f[1, 2], hm, label = L"$T$ [C]", width = 20, labelsize = 25, ticklabelsize = 14 ) + Mak.colgap!(f.layout, 20) + if printfig Print2Disk( f, path, string(field), istep) end + end + + if field==:StrainRate + ax1 = Axis(f[1, 1], title = L"$\dot{\varepsilon}_\textrm{II}$ at $t$ = %$(tMy) Ma", xlabel = L"$x$ [%$(length_unit)]", ylabel = L"$y$ [%$(length_unit)]") + hm = heatmap!(ax1, xc./Lc, zc./Lc, log10.(ε̇II), colormap = (:turbo, α_heatmap)) + AddCountourQuivers!(PlotOnTop, ax1, xc, zc, V, T, σ1, Fab, Lc, cm_y, group_phases, Δ) + colsize!(f.layout, 1, Aspect(1, Lx/Lz)) + Mak.Colorbar(f[1, 2], hm, label = L"$\dot{\varepsilon}_\textrm{II}$ [s$^{-1}$]", width = 20, labelsize = 25, ticklabelsize = 14 ) + Mak.colgap!(f.layout, 20) + if printfig Print2Disk( f, path, string(field), istep) end + end + + if field==:PlasticStrainrate + ε̇pl[ε̇pl.==0.0] .= 1e-30 + ax1 = Axis(f[1, 1], title = L"$\dot{\varepsilon}_\textrm{II}^\textrm{pl}$ at $t$ = %$(tMy) Ma", xlabel = L"$x$ [km]", ylabel = L"$y$ [km]") + hm = heatmap!(ax1, xc./Lc, zc./Lc, log10.(ε̇pl), colormap = (:turbo, α_heatmap)) + AddCountourQuivers!(PlotOnTop, ax1, xc, zc, V, T, σ1, Fab, Lc, cm_y, group_phases, Δ) + colsize!(f.layout, 1, Aspect(1, Lx/Lz)) + Mak.Colorbar(f[1, 2], hm, label = L"$\dot{\varepsilon}_\textrm{II}^\textrm{pl}$ [s$^{-1}$]", width = 20, labelsize = 25, ticklabelsize = 14 ) + Mak.colgap!(f.layout, 20) + if printfig Print2Disk( f, path, string(field), istep) end + end + + if field==:Velocity + ax1 = Axis(f[1, 1], title = L"$V$ at $t$ = %$(tMy) Ma", xlabel = L"$x$ [km]", ylabel = L"$y$ [km]") + Vx_BG = 0*xc .- 2*zc' + V = sqrt.( (Vxc .- 0.0*Vx_BG).^2 + (Vzc).^2) + hm = heatmap!(ax1, xc./Lc, zc./Lc, V, colormap = (:jet, α_heatmap))#, colorrange=(0., 0.6) + AddCountourQuivers!(PlotOnTop, ax1, xc, zc, V, T, σ1, Fab, Lc, cm_y, group_phases, Δ) + # xlims!(ax1, 0., 3.e-3) + # ylims!(ax1, 0., 3.e-3) + colsize!(f.layout, 1, Aspect(1, Lx/Lz)) + Mak.Colorbar(f[1, 2], hm, label = L"$V$ [m.s$^{-1}$]", width = 20, labelsize = 25, ticklabelsize = 14 ) + Mak.colgap!(f.layout, 20) + if printfig Print2Disk( f, path, string(field), istep) end + end + + if field==:Velocity_x + ax1 = Axis(f[1, 1], title = L"$Vx$ at $t$ = %$(tMy) Ma", xlabel = L"$x$ [km]", ylabel = L"$y$ [km]") + hm = heatmap!(ax1, xv, zvx[2:end-1], Vx[2:end-1,:]*cm_yr, colormap = (:jet, α_heatmap))#, colorrange=(0., 0.6) + AddCountourQuivers!(PlotOnTop, ax1, xc, zc, V, T, σ1, Fab, Lc, cm_y, group_phases, Δ) + colsize!(f.layout, 1, Aspect(1, Lx/Lz)) + Mak.Colorbar(f[1, 2], hm, label = L"$Vx$ [cm.yr$^{-1}$]", width = 20, labelsize = 25, ticklabelsize = 14 ) + Mak.colgap!(f.layout, 20) + if printfig Print2Disk( f, path, string(field), istep) end + end + + if field==:Velocity_z + ax1 = Axis(f[1, 1], title = L"$Vz$ at $t$ = %$(tMy) Ma", xlabel = L"$x$ [km]", ylabel = L"$y$ [km]") + hm = heatmap!(ax1, xvz[2:end-1], zv, Vz[:,2:end-1]*cm_yr, colormap = (:jet, α_heatmap))#, colorrange=(0., 0.6) + AddCountourQuivers!(PlotOnTop, ax1, xc, zc, V, T, σ1, Fab, Lc, cm_y, group_phases, Δ) + colsize!(f.layout, 1, Aspect(1, Lx/Lz)) + Mak.Colorbar(f[1, 2], hm, label = L"$Vz$ [cm.yr$^{-1}$]", width = 20, labelsize = 25, ticklabelsize = 14 ) + Mak.colgap!(f.layout, 20) + if printfig Print2Disk( f, path, string(field), istep) end + end + + if field==:GrainSize + ax1 = Axis(f[1, 1], title = L"$d$ at $t$ = %$(tMy) Ma", xlabel = L"$x$ [km]", ylabel = L"$y$ [km]") + hm = heatmap!(ax1, xc./Lc, zc./Lc, log10.(d.*1e6), colormap = (:turbo, α_heatmap), colorrange=(1, 3)) + AddCountourQuivers!(PlotOnTop, ax1, xc, zc, V, T, σ1, Fab, Lc, cm_y, group_phases, Δ) + xminz, xmaxz = -0.4, 0.4 + zminz, zmaxz = -0.17, 0.17 + Lx = xmaxz - xminz + Lz = zmaxz - zminz + xlims!(ax1, -0.4, 0.4) + ylims!(ax1, -0.17, 0.17) + colsize!(f.layout, 1, Aspect(1, Lx/Lz)) + Mak.Colorbar(f[1, 2], hm, label = "d", width = 20, labelsize = 25, ticklabelsize = 14 ) + Mak.colgap!(f.layout, 20) + if printfig Print2Disk( f, path, string(field), istep) end + end + + if field==:AnisotropyFactor + ax1 = Axis(f[1, 1], title = L"$δ_\textrm{ani}$ at $t$ = %$(tMy) Ma", xlabel = L"$x$ [km]", ylabel = L"$y$ [km]") + hm = heatmap!(ax1, xc./Lc, zc./Lc, δani, colormap = (:bilbao, α_heatmap)) + AddCountourQuivers!(PlotOnTop, ax1, xc, zc, V, T, σ1, Fab, Lc, cm_y, group_phases, Δ) + # xminz, xmaxz = -0.4, 0.4 + # zminz, zmaxz = -0.17, 0.17 + # Lx = xmaxz - xminz + # Lz = zmaxz - zminz + # xlims!(ax1, -0.4, 0.4) + # ylims!(ax1, -0.17, 0.17) + Mak.Colorbar(f[1, 2], hm, label = L"$δ_\textrm{ani}$", width = 20, labelsize = 25, ticklabelsize = 14 ) + Mak.colgap!(f.layout, 20) + colsize!(f.layout, 1, Aspect(1, Lx/Lz)) + if printfig Print2Disk( f, path, string(field), istep) end + end + + if field==:MeltFraction + ax1 = Axis(f[1, 1], title = L"ϕ at $t$ = %$(tMy) Ma", xlabel = L"$x$ [km]", ylabel = L"$y$ [km]") + hm = heatmap!(ax1, xc./Lc, zc./Lc, ϕ, colormap = (:bilbao, α_heatmap)) + AddCountourQuivers!(PlotOnTop, ax1, xc, zc, V, T, σ1, Fab, Lc, cm_y, group_phases, Δ) + Mak.Colorbar(f[1, 2], hm, label = L"$ϕ$", width = 20, labelsize = 25, ticklabelsize = 14 ) + Mak.colgap!(f.layout, 20) + colsize!(f.layout, 1, Aspect(1, Lx/Lz)) + if printfig Print2Disk( f, path, string(field), istep) end + end + + if field==:Cohesion + ax1 = Axis(f[1, 1], title = L"$C$ [MPa] at $t$ = %$(tMy) Ma", xlabel = L"$x$ [km]", ylabel = L"$y$ [km]") + hm = heatmap!(ax1, xc./Lc, zc./Lc, C./1e6, colormap = (:bilbao, α_heatmap)) + AddCountourQuivers!(PlotOnTop, ax1, xc, zc, V, T, σ1, Fab, Lc, cm_y, group_phases, Δ) + Mak.Colorbar(f[1, 2], hm, label = L"$C$ [MPa]", width = 20, labelsize = 25, ticklabelsize = 14 ) + Mak.colgap!(f.layout, 20) + colsize!(f.layout, 1, Aspect(1, Lx/Lz)) + if printfig Print2Disk( f, path, string(field), istep) end + end + + if field==:Temperature + ax1 = Axis(f[1, 1], title = L"$T$ [C] at $t$ = %$(tMy) Ma", xlabel = L"$x$ [km]", ylabel = L"$y$ [km]") + hm = heatmap!(ax1, xc./Lc, zc./Lc, T, colormap = (:bilbao, α_heatmap)) + AddCountourQuivers!(PlotOnTop, ax1, xc, zc, V, T, σ1, Fab, Lc, cm_y, group_phases, Δ) + Mak.Colorbar(f[1, 2], hm, label = L"$T$ [C]", width = 20, labelsize = 25, ticklabelsize = 14 ) + Mak.colgap!(f.layout, 20) + colsize!(f.layout, 1, Aspect(1, Lx/Lz)) + if printfig Print2Disk( f, path, string(field), istep) end + end + + if field==:Topography + ax1 = Axis(f[1, 1], title = L"Topography at $t$ = %$(tMy) Ma", xlabel = L"$x$ [km]", ylabel = L"$h$ [km]") + @show mean(height) + @show mean(z_mark) + lines!(ax1, xv./Lc, height./Lc) + scatter!(ax1, x_mark./Lc, z_mark./Lc) + + ax2 = Axis(f[2, 1], xlabel = L"$x$ [km]", ylabel = L"$Vx$ [km]") + lines!(ax2, xv./Lc, Vx_grid./Vc) + scatter!(ax2, x_mark./Lc, Vx_mark./Vc) + + ax3 = Axis(f[3, 1], xlabel = L"$x$ [km]", ylabel = L"$Vz$ [km]") + lines!(ax3, xc./Lc, Vz_grid[2:end-1]./Vc) + scatter!(ax3, x_mark/Lc, Vz_mark./Vc) + end + + if field==:TimeSeries + ax1 = Axis(f[1, 1], title = L"$τ_{xz}$", xlabel = L"$t$", ylabel = L"$\tau_{xz}$") + lines!(ax1, t_t, τxz_t) + end + + if field==:TemperatureEvolution + ax1 = Axis(f[1, 1], title = L"$T$ @ center [C]", xlabel = L"$t$ [My]", ylabel = L"$T$ @ center [C]") + lines!(ax1, Float64.(t_center./My), Float64.(T_center)) + ylims!(ax1, 400, 1000) + + end + + @show T_center + + DataInspector(f) + display(f) + sleep(nap) + + end + + yscale = Lz/Lx + + if printfig && printvid + FFMPEG.ffmpeg_exe(`-framerate $(framerate) -f image2 -pattern_type glob -i $(path)_$(field)/'*'.png -vf "scale=1080:1080*$(yscale)" -c:v libx264 -pix_fmt yuv420p -y "$(mov_name).mov"`) + end + +end + +function PrincipalStress(τxx, τzz, τxz, P) + σ1 = (x=zeros(size(τxx)), z=zeros(size(τxx)) ) + τxzc = 0.25*(τxz[1:end-1,1:end-1] .+ τxz[2:end-0,1:end-1] .+ τxz[1:end-1,2:end-0] .+ τxz[2:end-0,2:end-0]) + for i in eachindex(τxzc) + if P[i]>1e-13 + σ = [-P[i]+τxx[i] τxzc[i]; τxzc[i] -P[i]+τzz[i]] + v = eigvecs(σ) + σ1.x[i] = v[1,1] + σ1.z[i] = v[2,1] + end + end + return σ1 +end + +function ExtractData( file_path, data_path) + data = h5open(file_path, "r") do file + read(file, data_path) + end + return data +end + +function Print2Disk( f, path, field, istep; res=4) + path1 = path*"/_$field/" + mkpath(path1) + save(path1*"$field"*@sprintf("%05d", istep)*".png", f, px_per_unit = res) +end + +main() \ No newline at end of file diff --git a/JuliaVisualisation/_Melting/MeltingModel.jl b/JuliaVisualisation/_Melting/MeltingModel.jl new file mode 100644 index 00000000..41d11ba2 --- /dev/null +++ b/JuliaVisualisation/_Melting/MeltingModel.jl @@ -0,0 +1,18 @@ +using CairoMakie + +function main() + + Ts = 600. + Tl = 1200. + α = -0.1 + T = LinRange(Ts, Tl, 100) + ϕ = (exp.(α.*T) .- exp.(α*Ts)) ./ (exp.(α*Tl) .- exp.(α*Ts)) + + f = Figure(fontsize=25) + ax1 = Axis(f[1, 1], title = L"$$Melt fraction", xlabel =L"$T$ [C]", ylabel = L"$ϕ$ [-]") + lines!(ax1, T, ϕ ) + display(f) + +end + +main() \ No newline at end of file diff --git a/JuliaVisualisation/_SpecificStudies/Main_Visualisation_NeckingReview.jl b/JuliaVisualisation/_SpecificStudies/Main_Visualisation_NeckingReview.jl index 8419d769..93884661 100644 --- a/JuliaVisualisation/_SpecificStudies/Main_Visualisation_NeckingReview.jl +++ b/JuliaVisualisation/_SpecificStudies/Main_Visualisation_NeckingReview.jl @@ -2,27 +2,28 @@ import Pkg Pkg.activate(normpath(joinpath(@__DIR__, ".."))) # using GLMakie using CairoMakie -using HDF5, Printf, Colors, ColorSchemes, MathTeXEngine +using HDF5, Printf, Colors, ColorSchemes, MathTeXEngine, FFMPEG Makie.update_theme!( fonts = ( regular = texfont(), bold = texfont(:bold), italic = texfont(:italic))) -Makie.inline!(false) +Makie.inline!(true) My = 1e6*365*24*3600 function main() # Set the path to your files" - path ="/Users/tduretz/REPO/MDOODZ7.0/RUNS/1_NR09/" + path ="/Users/tduretz/REPO/MDOODZ7.0/RUNS/1_NR01/" # path ="/Users/tduretz/REPO/MDOODZ7.0/MDLIB/" # path ="/Users/tduretz/REPO/DEBUG/MDLIB/" # File numbers - file_start = 0 + file_start = 00 file_step = 50 - file_end = 5000 + file_end = 3500 # Select field to visualise # field = :Phases - field = :ThinningFactor - # field = :PhasesRheology + # field = :ThinningFactor + field = :PhasesRheology + # field = :ChristmasTree # field = :Density # field = :Viscosity # field = :PlasticStrainrate @@ -38,6 +39,8 @@ function main() # Switches printfig = true # print figures to disk + printvid = true + framerate = 3 ph_contours = true # add phase contours T_contours = true # add temperature contours fabric = false # add fabric quiver (normal to director) @@ -45,6 +48,8 @@ function main() nap = 0.3 # pause for animation resol = 1000 ftsz = 40 + mov_name = "$(path)/_$(field)/$(field)" # Name of the movie + Lx, Lz = 1.0, 1.0 # Scaling Lc = 1000. @@ -236,12 +241,35 @@ function main() f = Figure(resolution = (Lx/Lz*resol, resol), fontsize=ftsz) ########################################################################## + if field==:ChristmasTree + τII[isnan.(τII)] .= 0. + strength = @sprintf("%2.2e", sum(τII[1,:])*Lz/1e12) + ax1 = Axis(f[1, 1], title = "Integrated strength: "*strength*" TN/m", xlabel=L"$τ_{II}$ [MPa]", ylabel=L"$z$ [km]") + lines!(ax1, τII[1,:]./1e6, zc./Lc, linewidth=10) + + # @show τII[1,:] + # @show sum(ones(size(τII))*Δz) + xlims!(ax1,-5, 700) + ylims!(ax1, -160, 1) + + T[isnan.(T)] .= 0. + ρc[isnan.(ρc)] .= 0. + heat = @sprintf("%2.2e", sum(T[1,:].*ρc[1,:].*1050)*Lz/1e12) + ax2 = Axis(f[1, 2], title = "Integrated heat: "*heat* " TJ/m² ", xlabel=L"$T$ [$^\mathrm{o}$C]") + hideydecorations!(ax2) + lines!(ax2, T[1,:], zc./Lc, linewidth=10) + lines!(ax2, T[1,:], -35.0*ones(size(zc)), linewidth=5, linestyle=:dash, color=:grey) + lines!(ax2, 650*ones(size(zc)), zc./Lc, linewidth=5, linestyle=:dash, color=:grey) + xlims!(ax2,0, 1400) + ylims!( ax2, -160, 1) + if printfig Print2Disk( f, path, string(field), istep) end + end if field==:ThinningFactor ax1 = Axis(f[1, 1], title = L"Thinning at $t$ = %$(tMy) Ma", xlabel = L"$x$ [km]", ylabel = L"$\beta$ [-]") - lines!(ax1, xc_hr./Lc, 1.0 .- Hcrust[:]./Hcrust0[:], label=L"$$Crust") - lines!(ax1, xc_hr./Lc, 1.0 .- Hmant[:]./Hmant0[:], label=L"$$Mantle lithosphere") - lines!(ax1, xc_hr./Lc, 1.0 .- Hlit[:]./Hlit0[:], label=L"$$Lithosphere") + lines!(ax1, xc_hr./Lc, 1.0 .- Hcrust[:]./Hcrust0[:], label=L"$$Crust", linewidth=10) + lines!(ax1, xc_hr./Lc, 1.0 .- Hmant[:]./Hmant0[:], label=L"$$Mantle lithosphere", linewidth=10) + lines!(ax1, xc_hr./Lc, 1.0 .- Hlit[:]./Hlit0[:], label=L"$$Lithosphere", linewidth=10) xlims!(ax1, xmin/Lc, xmax/Lc) ylims!(ax1, -0.05, 1.05) axislegend(position = :rt, framevisible = false) @@ -263,10 +291,10 @@ function main() arrows!(ax1, xc./Lc, zc./Lc, Nz, Nx, arrowsize = 0, lengthscale=Δ/1.5) end colsize!(f.layout, 1, Aspect(1, Lx/Lz)) - cbar = GLMakie.Colorbar(f[1, 2], hm1, width = 20, labelsize=ftsz, ticklabelsize = 20 ) #, label = L"$$Phases" - # GLMakie.Colorbar(f[1, 3], hm2, label = L"$\dot{\varepsilon}^\textrm{p}$", width = 20, labelsize = 25, ticklabelsize = 14 ) + cbar = Colorbar(f[1, 2], hm1, width = 20, labelsize=ftsz, ticklabelsize = 20 ) #, label = L"$$Phases" + # Colorbar(f[1, 3], hm2, label = L"$\dot{\varepsilon}^\textrm{p}$", width = 20, labelsize = 25, ticklabelsize = 14 ) cbar.ticks = ([0, 1, 2, 3, 4, 5], ["Crust viscous", "Mantle viscous", "Crust plastic", "Mantle plastic", "Crust elastic", "Mantle elastic"]) - # GLMakie.colgap!(f.layout, 40) + # colgap!(f.layout, 40) if printfig Print2Disk( f, path, string(field), istep) end end @@ -275,7 +303,7 @@ function main() hm1 = heatmap!(ax1, xc_hr./Lc, zc_hr./Lc, ph_hr_rheo, colormap = phase_colors, colorrange=(-0.5,5.5)) # hm2 = heatmap!(ax1, xc./Lc, zc./Lc, log10.(ε̇pl), colormap = turboα) if ph_contours - contour!(ax1, xc_hr./Lc, zc_hr./Lc, ph_hr2, levels=-1:1:maximum(ph_hr2), linewidth = 1, color=(:white, 0.25) ) + contour!(ax1, xc_hr./Lc, zc_hr./Lc, ph_hr2, levels=-1:1:maximum(ph_hr2), linewidth = 3, color=(:white, 0.35) ) end # if T_contours # contour!(ax1, xc./Lc, zc./Lc, T, levels=0:200:1400, linewidth = 4, color=:white ) @@ -284,10 +312,12 @@ function main() arrows!(ax1, xc./Lc, zc./Lc, Nz, Nx, arrowsize = 0, lengthscale=Δ/1.5) end colsize!(f.layout, 1, Aspect(1, Lx/Lz)) - cbar = GLMakie.Colorbar(f[1, 2], hm1, width = 20, labelsize=ftsz, ticklabelsize = 20 ) #, label = L"$$Phases" - # GLMakie.Colorbar(f[1, 3], hm2, label = L"$\dot{\varepsilon}^\textrm{p}$", width = 20, labelsize = 25, ticklabelsize = 14 ) + cbar = Colorbar(f[1, 2], hm1, width = 20, labelsize=ftsz, ticklabelsize = 20 ) #, label = L"$$Phases" + # Colorbar(f[1, 3], hm2, label = L"$\dot{\varepsilon}^\textrm{p}$", width = 20, labelsize = 25, ticklabelsize = 14 ) cbar.ticks = ([0, 1, 2, 3, 4, 5], ["Crust viscous", "Mantle viscous", "Crust plastic", "Mantle plastic", "Crust elastic", "Mantle elastic"]) - # GLMakie.colgap!(f.layout, 40) + # colgap!(f.layout, 40) + xlims!(ax1, -75, 125) + ylims!(ax1, -75, 2) if printfig Print2Disk( f, path, string(field), istep) end end @@ -429,7 +459,13 @@ function main() display(f) sleep(nap) end - + + end + + yscale = Lz/Lx + + if printfig && printvid + FFMPEG.ffmpeg_exe(`-framerate $(framerate) -f image2 -pattern_type glob -i $(path)_$(field)/'*'.png -vf "scale=1080:1080*$(yscale)" -c:v libx264 -pix_fmt yuv420p -y "$(mov_name).mov"`) end end diff --git a/JuliaVisualisation/_VisualTests/Main_PinchSwellGSE.jl b/JuliaVisualisation/_VisualTests/Main_PinchSwellGSE.jl index 8eb9f302..a2caa2e2 100644 --- a/JuliaVisualisation/_VisualTests/Main_PinchSwellGSE.jl +++ b/JuliaVisualisation/_VisualTests/Main_PinchSwellGSE.jl @@ -44,7 +44,7 @@ function main() xlims!(ax1, xminz, xmaxz) ylims!(ax1, zminz, zmaxz) colsize!(f.layout, 1, Aspect(1, Lx/Lz)) - GLMakie.Colorbar(f[1, 2], hm, label = L"$\log_{10} d$ [$\mu$m]", width = 20, labelsize = 25, ticklabelsize = 14 ) + GLMakie.Colorbar(f[1, 2], hm, label = L"$\log_{10} d$ [$\G$m]", width = 20, labelsize = 25, ticklabelsize = 14 ) GLMakie.colgap!(f.layout, 20) ax1 = Axis(f[2, 1], title = L"$d$ at $t$ = %$(new.tMy) Ma - $\varepsilon$ = %$(ref.tMy*My*1e-14*100) %", xlabel = "x [km]", ylabel = "y [km]") @@ -52,7 +52,7 @@ function main() xlims!(ax1, xminz, xmaxz) ylims!(ax1, zminz, zmaxz) colsize!(f.layout, 1, Aspect(1, Lx/Lz)) - GLMakie.Colorbar(f[2, 2], hm, label = L"$\log_{10} d$ [$\mu$m]", width = 20, labelsize = 25, ticklabelsize = 14 ) + GLMakie.Colorbar(f[2, 2], hm, label = L"$\log_{10} d$ [$\G$m]", width = 20, labelsize = 25, ticklabelsize = 14 ) GLMakie.colgap!(f.layout, 20) if printfig save("_VisualTests/PinchSwellGSE.png", f, px_per_unit = 4) end diff --git a/MDLIB/.gitignore b/MDLIB/.gitignore index e5e22e19..2c4e6a40 100644 --- a/MDLIB/.gitignore +++ b/MDLIB/.gitignore @@ -2,4 +2,4 @@ *.txt *.mat *.h5 -*.dat +*.dat \ No newline at end of file diff --git a/MDLIB/CMakeLists.txt b/MDLIB/CMakeLists.txt index 0e7cba59..2356d879 100644 --- a/MDLIB/CMakeLists.txt +++ b/MDLIB/CMakeLists.txt @@ -9,6 +9,7 @@ add_library(mdoodz SHARED HDF5Output.c InputOutput.c Main_DOODZ.c + MeltingRoutines.c MemoryAllocFree.c MiscFunctions.c ParticleReseeding.c diff --git a/MDLIB/FlowLaws.c b/MDLIB/FlowLaws.c index b020e468..d322466e 100755 --- a/MDLIB/FlowLaws.c +++ b/MDLIB/FlowLaws.c @@ -633,7 +633,7 @@ void ReadDataLinear( mat_prop* mat, params* model, int k, int number, scale* sca mat->mlin[k] = 3.0; mat->rlin[k] = 0.0; mat->Qlin[k] = 375e3; - mat->Vlin[k] = 7.0e-6; // 4e-6 Annelore 7e-6 Lorenzo + mat->Vlin[k] = 4.0e-6; // 4e-6 Annelore 7e-6 Lorenzo if ( model->force_act_vol_ast == 1 ) mat->Vlin[k] = model->act_vol_dif_ast; mat->Alin[k] = 1.5000e-15; mat->flin[k] = 0.0; diff --git a/MDLIB/FreeSurface.c b/MDLIB/FreeSurface.c index 79ef3a09..4365b7c5 100755 --- a/MDLIB/FreeSurface.c +++ b/MDLIB/FreeSurface.c @@ -59,7 +59,7 @@ void SetTopoChainHorizontalCoords( surface *topo, markers *topo_chain, params mo topo_chain->x[k] = model.xmin + dxm/2 + k*dxm; topo_chain->z[k] = 0.0/scaling.L; - topo_chain->z0[k] = 0.0/scaling.L; + topo_chain->z0[k] = 0.0/scaling.L; topo_chain->phase[k] = 0; } printf( "Topographic chain initialised with %d markers\n", topo_chain->Nb_part ); @@ -206,16 +206,16 @@ void RemeshMarkerChain( markers *topo_chain, surface *topo, params model, scale for (k=0;kNb_part;k++) { if (topo_chain->x[k]>model.xmax || topo_chain->x[k]phase[k] = -1; - else topo_chain->phase[k]=0; + else topo_chain->phase[k] = 0; // Index of the fine grid column distance = topo_chain->x[k] - (model.xmin + dx/2.0/res); in = ceil((distance/dx*res)+0.5) - 1; if (in<0 ) in = 0; if (in>res*Ncx-1) in = res*Ncx-1; - if (topo_chain->phase[k]!=-1) NumMarkCell[in]++; + if (topo_chain->phase[k] != -1) NumMarkCell[in]++; // NEW - if (topo_chain->phase[k]== -1) nout++; + if (topo_chain->phase[k] == -1) nout++; } // NEW diff --git a/MDLIB/HDF5Output.c b/MDLIB/HDF5Output.c index 5afbcb6d..c9a3d169 100755 --- a/MDLIB/HDF5Output.c +++ b/MDLIB/HDF5Output.c @@ -266,7 +266,7 @@ void WriteOutputHDF5( grid *mesh, markers *particles, surface *topo, markers* to float *CFxx, *CFxz, *CFzx, *CFzz, *Cnx, *Cnz; double *T0, *P0, *x0, *z0, *Tmax, *Pmax; float *CT0, *CP0, *Cx0, *Cz0, *CTmax, *CPmax; - float *CXreac; + float *CXreac, *Cphi; float *COverS, *Cdivu, *Cdivu_el, *Cdivu_pl, *Cdivu_th, *Cdivu_r; int cent=1, vert=0, prop=1, interp=0; @@ -410,6 +410,9 @@ void WriteOutputHDF5( grid *mesh, markers *particles, surface *topo, markers* to CX = DoodzMalloc( sizeof(float)*(model.Nx-1)*(model.Nz-1)); DoubleToFloat( mesh->X_n, CX, (model.Nx-1)*(model.Nz-1) ); + Cphi = DoodzMalloc( sizeof(float)*(model.Nx-1)*(model.Nz-1)); + DoubleToFloat( mesh->phi_n, Cphi, (model.Nx-1)*(model.Nz-1) ); + COverS = DoodzMalloc( sizeof(float)*(model.Nx-1)*(model.Nz-1)); DoubleToFloat( mesh->OverS_n, COverS, (model.Nx-1)*(model.Nz-1) ); ScaleBack( COverS, scaling.S, (model.Nx-1)*(model.Nz-1) ); @@ -791,6 +794,7 @@ void WriteOutputHDF5( grid *mesh, markers *particles, surface *topo, markers* to AddFieldToGroup( FileName, "Centers" , "eII_gbs" , 'f', (model.Nx-1)*(model.Nz-1), CeII_gbs, 1 ); AddFieldToGroup( FileName, "Centers" , "d" , 'f', (model.Nx-1)*(model.Nz-1), Cd, 1 ); AddFieldToGroup( FileName, "Centers" , "X" , 'f', (model.Nx-1)*(model.Nz-1), CX, 1 ); + AddFieldToGroup( FileName, "Centers" , "phi" , 'f', (model.Nx-1)*(model.Nz-1), Cphi, 1 ); AddFieldToGroup( FileName, "Centers" , "OverS",'f', (model.Nx-1)*(model.Nz-1), COverS, 1 ); if ( model.free_surface == 1 ) { @@ -892,6 +896,7 @@ void WriteOutputHDF5( grid *mesh, markers *particles, surface *topo, markers* to DoodzFree( Cstrain_lin ); DoodzFree( Cstrain_gbs ); DoodzFree( CX ); + DoodzFree( Cphi ); DoodzFree( CT ); DoodzFree( Cd ); DoodzFree( COverS ); diff --git a/MDLIB/InputOutput.c b/MDLIB/InputOutput.c index cfe7f362..ea8bb0bf 100755 --- a/MDLIB/InputOutput.c +++ b/MDLIB/InputOutput.c @@ -1084,6 +1084,8 @@ Input ReadInputFile( char *fileName ) { model.density_variations = ReadInt2( fin, "density_variations", 0 ); // Turns on volume change due to reaction if 1 model.kinetics = ReadInt2( fin, "kinetics", 0 ); // Activates reaction kinetics model.out_of_plane = ReadInt2( fin, "out_of_plane", 0 ); // Out-of-plane strain + model.melting = ReadInt2( fin, "melting", 0 ); // Activates melting + // Numerics: linear solver model.penalty = ReadDou2( fin, "penalty", 1.0e3 ); // Penalty factor model.auto_penalty = ReadDou2( fin, "auto_penalty", 0.0 ); // Activates automatic penalty factor computation @@ -1239,7 +1241,7 @@ Input ReadInputFile( char *fileName ) { // Read general parameters materials.rho[k] = ReadMatProps( fin, "rho", k, 2700.0 ) / scaling.rho; materials.G[k] = ReadMatProps( fin, "G", k, 1.0e10 ) / scaling.S; - materials.Cv[k] = ReadMatProps( fin, "Cv", k, 1.0e3 ) / scaling.Cv; + materials.Cp[k] = ReadMatProps( fin, "Cp", k, 1.0e3 ) / scaling.Cp; materials.k[k] = ReadMatProps( fin, "k", k, 1.0e-6 ) / scaling.k; materials.k_eff[k]= materials.k[k]; materials.Qr[k] = ReadMatProps( fin, "Qr", k, 1.0e-30) / (scaling.W / pow(scaling.L,3.0)); @@ -1248,6 +1250,8 @@ Input ReadInputFile( char *fileName ) { materials.drho[k] = ReadMatProps( fin, "drho",k, 0.0 ) / (scaling.rho); materials.T0[k] = (zeroC) / (scaling.T); materials.P0[k] = 1e5 / (scaling.S); + // Read melting model + materials.melt[k] = (int)ReadMatProps( fin, "melt", k, 0.0 ); // 0: No plasticity --- >1: Yes, the type should be selected accordingly // Read plasticity switches materials.plast[k] = (int)ReadMatProps( fin, "plast", k, 1.0 ); // 0: No plasticity --- 1: Yes materials.yield[k] = (int)ReadMatProps( fin, "yield", k, 1.0 ); // 1: Drucker-Prager @@ -1341,7 +1345,7 @@ Input ReadInputFile( char *fileName ) { printf("Zmin = %2.1lf km Zmax = %2.1lf km Nz = %3d dz = %.2lf m\n", (model.zmin*scaling.L)/1e3, (model.zmax*scaling.L)/1e3, model.Nz, model.dz*scaling.L ); printf("-------------------------------------------- PHASE: %d -------------------------------------------\n", k); printf("rho = %2.2e kg/m^3 G = %2.2e Pa\n", materials.rho[k]*scaling.rho, materials.G[k]*scaling.S ); - printf("Cv = %2.2e J/kg/K k = %2.2e W/m/K Qr = %2.2e W/m3\n", materials.Cv[k]*scaling.Cv, materials.k[k]*scaling.k, materials.Qr[k]*(scaling.W / pow(scaling.L,3)) ); + printf("Cp = %2.2e J/kg/K k = %2.2e W/m/K Qr = %2.2e W/m3\n", materials.Cp[k]*scaling.Cp, materials.k[k]*scaling.k, materials.Qr[k]*(scaling.W / pow(scaling.L,3)) ); printf("C = %2.2e Pa phi = %2.2e deg Slim = %2.2e Pa\n", materials.C[k]*scaling.S, materials.phi[k]*180/M_PI, materials.Slim[k]*scaling.S ); printf("alp = %2.2e 1/T T0 = %2.2e K bet = %2.2e 1/Pa P0 = %2.2e Pa drho = %2.2e kg/m^3 \n", materials.alp[k]*(1/scaling.T), materials.T0[k]*(scaling.T), materials.bet[k]*(1/scaling.S), materials.P0[k]*(scaling.S), materials.drho[k]*scaling.rho ); printf("prefactor for power-law: %2.2e\n", materials.pref_pwl[k]); @@ -1663,7 +1667,7 @@ void ScaleMe( scale* scale) { scale->F = scale->m * scale->L / pow(scale->t, 2.0); scale->J = scale->m * pow(scale->L,2.0) / pow(scale->t,2.0); scale->W = scale->J / scale->t; - scale->Cv = scale->J / scale->m / scale->T; + scale->Cp = scale->J / scale->m / scale->T; scale->k = scale->W / scale->L / scale->T; scale->rhoE = scale->J / scale->m * scale->rho; } diff --git a/MDLIB/Main_DOODZ.c b/MDLIB/Main_DOODZ.c index 8991b692..ecc2ac90 100755 --- a/MDLIB/Main_DOODZ.c +++ b/MDLIB/Main_DOODZ.c @@ -180,7 +180,7 @@ void RunMDOODZ(char *inputFileName, MdoodzSetup *setup) { P2Mastah( &input.model, particles, particles.noise, &mesh, mesh.noise_n, mesh.BCp.type, 1, 0, interp, cent, input.model.interp_stencil); P2Mastah( &input.model, particles, particles.T, &mesh, mesh.T , mesh.BCp.type, 1, 0, interp, cent, 1); - P2Mastah( &input.model, particles, input.materials.Cv, &mesh, mesh.Cv, mesh.BCp.type, 0, 0, interp, cent, 1); + P2Mastah( &input.model, particles, input.materials.Cp, &mesh, mesh.Cp, mesh.BCp.type, 0, 0, interp, cent, 1); P2Mastah( &input.model, particles, input.materials.k_eff, &mesh, mesh.kx, mesh.BCu.type, 0, 0, interp, vxnodes, 1); P2Mastah( &input.model, particles, input.materials.k_eff, &mesh, mesh.kz, mesh.BCv.type, 0, 0, interp, vznodes, 1); @@ -222,7 +222,7 @@ void RunMDOODZ(char *inputFileName, MdoodzSetup *setup) { P2Mastah( &input.model, particles, input.materials.k_eff, &mesh, mesh.kx, mesh.BCu.type, 0, 0, interp, vxnodes, 1); P2Mastah( &input.model, particles, input.materials.k_eff, &mesh, mesh.kz, mesh.BCv.type, 0, 0, interp, vznodes, 1); P2Mastah( &input.model, particles, particles.T, &mesh, mesh.T , mesh.BCp.type, 1, 0, interp, cent, 1); - P2Mastah( &input.model, particles, input.materials.Cv, &mesh, mesh.Cv, mesh.BCp.type, 0, 0, interp, cent, 1); + P2Mastah( &input.model, particles, input.materials.Cp, &mesh, mesh.Cp, mesh.BCp.type, 0, 0, interp, cent, 1); P2Mastah( &input.model, particles, input.materials.Qr, &mesh, mesh.Qr, mesh.BCp.type, 0, 0, interp, cent, 1); SetBCs(*setup->SetBCs, &input, &mesh, &topo); @@ -259,7 +259,12 @@ void RunMDOODZ(char *inputFileName, MdoodzSetup *setup) { // Interpolate pressure from centroids to vertices InterpCentroidsToVerticesDouble( mesh.p0_n, mesh.p0_s, &mesh, &input.model ); - + + printf("****************************************\n"); + printf("******* Initialize melt fraction *******\n"); + printf("****************************************\n"); + if (input.model.melting == 1 ) MeltFractionGrid( &mesh, &particles, &input.materials, &input.model, &input.scaling ); + printf("*************************************\n"); printf("******* Initialize grain size *******\n"); printf("*************************************\n"); @@ -324,6 +329,8 @@ void RunMDOODZ(char *inputFileName, MdoodzSetup *setup) { MinMaxArrayTag( mesh.X_n, 1.0, (mesh.Nx-1)*(mesh.Nz-1), "X_n ", mesh.BCp.type ); MinMaxArrayTag( mesh.X0_n, 1.0, (mesh.Nx-1)*(mesh.Nz-1), "X0_n ", mesh.BCp.type ); MinMaxArrayTag( mesh.X0_s, 1.0, (mesh.Nx-0)*(mesh.Nz-0), "X0_s ", mesh.BCg.type ); + MinMaxArrayTag( mesh.phi0_n, 1.0, (mesh.Nx-1)*(mesh.Nz-1), "phi0_n ", mesh.BCp.type ); + MinMaxArrayTag( mesh.phi_n, 1.0, (mesh.Nx-1)*(mesh.Nz-1), "phi_n ", mesh.BCp.type ); MinMaxArray(particles.X, 1.0, particles.Nb_part, "X part" ); if ( input.model.anisotropy == 1 ) { MinMaxArrayTag( mesh.FS_AR_n, 1.0, (mesh.Nx-1)*(mesh.Nz-1), "FS_AR_n ", mesh.BCp.type ); @@ -446,7 +453,7 @@ void RunMDOODZ(char *inputFileName, MdoodzSetup *setup) { // Energy - interpolate thermal parameters and advected energy // Get energy and related material parameters from particles - P2Mastah( &input.model, particles, input.materials.Cv, &mesh, mesh.Cv, mesh.BCp.type, 0, 0, interp, cent, 1); + P2Mastah( &input.model, particles, input.materials.Cp, &mesh, mesh.Cp, mesh.BCp.type, 0, 0, interp, cent, 1); P2Mastah( &input.model, particles, input.materials.Qr, &mesh, mesh.Qr, mesh.BCp.type, 0, 0, interp, cent, 1); P2Mastah ( &input.model, particles, input.materials.k_eff, &mesh, mesh.kx, mesh.BCu.type, 0, 0, interp, vxnodes, 1); @@ -564,6 +571,8 @@ void RunMDOODZ(char *inputFileName, MdoodzSetup *setup) { MinMaxArrayTag( mesh.rho0_n, input.scaling.rho, (mesh.Nx-1)*(mesh.Nz-1), "rho0_n ", mesh.BCp.type ); MinMaxArrayTag( mesh.X0_s, 1.0, (mesh.Nx)*(mesh.Nz), "X0_s ", mesh.BCg.type ); MinMaxArrayTag( mesh.X0_n, 1.0, (mesh.Nx-1)*(mesh.Nz-1), "X0_n ", mesh.BCp.type ); + MinMaxArrayTag( mesh.phi0_n, 1.0, (mesh.Nx-1)*(mesh.Nz-1), "phi0_n ", mesh.BCp.type ); + MinMaxArrayTag( mesh.phi_n, 1.0, (mesh.Nx-1)*(mesh.Nz-1), "phi_n ", mesh.BCp.type ); for (int p=0; p< input.model.Nb_phases; p++) { printf("Phase number %d:\n", p); @@ -879,6 +888,13 @@ void RunMDOODZ(char *inputFileName, MdoodzSetup *setup) { MinMaxArrayPart( particles.d, input.scaling.L, particles.Nb_part, "d on markers", particles.phase ) ; } + if (input.model.melting == 1 ) { + MeltFractionGrid( &mesh, &particles, &input.materials, &input.model, &input.scaling ); + UpdateAlphaCp( &mesh, &particles, &input.materials, &input.model, &input.scaling ); + MinMaxArrayTag( mesh.Cp, input.scaling.Cp, (mesh.Nx-1)*(mesh.Nz-1), "Cp ", mesh.BCp.type ); + MinMaxArrayTag( mesh.alp, 1/input.scaling.T, (mesh.Nx-1)*(mesh.Nz-1), "alp ", mesh.BCp.type ); + } + // Update phi on the particles UpdateParticlePhi( &mesh, input.scaling, input.model, &particles, &input.materials ); diff --git a/MDLIB/MeltingRoutines.c b/MDLIB/MeltingRoutines.c new file mode 100644 index 00000000..f41fd76a --- /dev/null +++ b/MDLIB/MeltingRoutines.c @@ -0,0 +1,212 @@ +// ========================================================================= +// MDOODZ - Visco-Elasto-Plastic Thermo-Mechanical solver +// +// Copyright (C) 2018 MDOODZ Developper team +// +// This file is part of MDOODZ. +// +// MDOODZ is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// MDOODZ is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with MDOODZ. If not, see . +// ========================================================================= + +#include "stdio.h" +#include "stdlib.h" +#include "string.h" +#include "math.h" +#include "time.h" +#include "cholmod.h" + +#ifdef _OMP_ +#include "omp.h" +#else +#define omp_get_thread_num() 0 +#define omp_get_num_threads() 1 +#define omp_get_wtime() clock()/CLOCKS_PER_SEC +#endif + +//---- M-Doodz header file +#include "mdoodz-private.h" + +void PartialMelting( double *phi, double* hlat, double P, double T, double phi0, double tk, double dt, int melt_model, scale *scaling ) { + + // ---- ACHTUNG: computations BELOW are made in dimensional form (MPa and K) to avoid conversion errors + *phi = 0.0; *hlat = 0.0; + double phi_eq; + const double P_MPa = P/1e6*scaling->S; // convert P to MPa + const double T_K = T*scaling->T; // convert T to K + double Ts = T_K, Tl = T_K, Ql; + double alpha = 1e-7/(1/scaling->T); // very small number -> linear melting + + if (melt_model>0 && T>1e-13 && P>1e-13) { + + // Simple T-dependent melting (Stuewe 1995) + if (melt_model==1) { + Ts = 600. + 273.15; + Tl = 1200. + 273.15; + Ql = 320000.; + alpha = -0.1; // Strong effect + } + + // Crust or sediment melting + if (melt_model==10) { + if (P_MPa>1600) { + Ts = 935. + 0.0035*P_MPa + 0.0000062*pow(P_MPa,2); + } + else { + Ts = 973. - 70400/(P_MPa + 354) + 77800000/pow((P_MPa + 354),2); + } + Tl = 1423 + 0.105*P_MPa; + Ql = 380000.; + } + + // From Schenker et al, 2012 + if (melt_model==11) { + if (P_MPa>1200) { + Ts = 831. + 0.06*P_MPa; + } + else { + Ts = 889. - 17900/(P_MPa + 54) + 20,200/pow((P_MPa + 54),2); + } + Tl = 1262 + 0.09*P_MPa; + Ql = 300000.; + } + + // Mantle melting + if (melt_model==40) { + if (P_MPa > 10000) { + Ts = 2212 + 0.030819*(P_MPa - 10000); //en K + } + else { + Ts = 1394 + 0.132899*P_MPa - 0.000005014*pow(P_MPa,2.0); // en K + } + Tl = 2073 + 0.114*P_MPa; // en K + Ql = 400000.; + } + + // From Schenker et al, 2012 + if (melt_model==41) { + if (P_MPa>1e4) { + Ts = 2212. + 0.030819*(P_MPa-10000.); + } + else { + Ts = 1394 + 0.132899*P_MPa - 0.000005014/pow(P_MPa,2); + } + Tl = 2073 + 0.114*P_MPa; + Ql = 300000.; + } + + Ql /= (scaling->J/scaling->m); + + // ---- ACHTUNG: computations ABOVE are made in dimensional form (MPa and K) to avoid conversion errors + + // Computation of melt fraction and laten heat release/consumption + *phi = 0.0; + *hlat = 0.0; + if (Tl>0.0) { + // Solidus and liquidus must not intersect in the extrapolation region + if (Ts > Tl - 100.0) { + Ts = Tl - 100.0; + } + // Melt fraction + // phi_eq = (T_K - Ts) / (Tl - Ts); + phi_eq = (exp(alpha*T_K) - exp(alpha*Ts)) / (exp(alpha*Tl) - exp(alpha*Ts)); + *phi = dt/(tk + dt) * phi_eq + tk/(tk + dt) * phi0; + if (*phi<0.0) *phi = 0.0; + if (*phi>1.0) *phi = 1.0; + // Latent heat + *hlat = Ql; + } + } +} + +void MeltFractionGrid( grid* mesh, markers* particles, mat_prop *materials, params *model, scale *scaling ) { + + int Nx, Nz, Ncx, Ncz; + int c0, p; + double Ql; + double phi; + + Nx = mesh->Nx; Ncx = Nx-1; + Nz = mesh->Nz; Ncz = Nz-1; + + for ( c0=0; c0phi_n[c0] = 0.0; + for ( p=0; pNb_phases; p++) { + if ( fabs(mesh->phase_perc_n[p][c0])>1.0e-13 ) { + const int melt_model = materials->melt[p]; + const double tk = materials->tau_kin[p]; + PartialMelting( &phi, &Ql, mesh->p_in[c0], mesh->T[c0], mesh->phi0_n[c0], tk, model->dt, melt_model, scaling ); + mesh->phi_n[c0] += mesh->phase_perc_n[p][c0]*phi; + } + } + } +} + + +void UpdateAlphaCp( grid* mesh, markers* particles, mat_prop *materials, params *model, scale *scaling ) { + + // alpha effective = alpha - rho/T*Ql*dphidP + // Cp effective = Cp + Ql*dphidT + int Nx, Nz, Ncx, Ncz; + int c0, p; + double dMdP, dMdT, Ql; + double phi_plus, phi_minus, phi, pert; + double Cp_melt = 0., alp_melt = 0.; + double Ql_plus = 0., Ql_minus = 0.; + + Nx = mesh->Nx; Ncx = Nx-1; + Nz = mesh->Nz; Ncz = Nz-1; + + for ( c0=0; c0Cp[c0] = 0.0; + mesh->alp[c0] = 0.0; + + for ( p=0; pNb_phases; p++) { + + if ( fabs(mesh->phase_perc_n[p][c0])>1.0e-13 ) { + + // Compute only if below free surface + if ( mesh->BCp.type[0] != 30 && mesh->BCp.type[0] != 31) { + const int melt_model = materials->melt[p]; + const double tk = materials->tau_kin[p]; + PartialMelting( &phi, &Ql, mesh->p_in[c0], mesh->T[c0], mesh->phi0_n[c0], tk, model->dt, melt_model, scaling ); + Cp_melt = 0.0; + alp_melt = 0.0; + + if ((phi)>1.0e-13 ) { + pert = mesh->p_in[c0]*1e-6; + PartialMelting( &phi_minus, &Ql_minus, mesh->p_in[c0]-pert, mesh->T[c0], mesh->phi0_n[c0], tk, model->dt, melt_model, scaling ); + PartialMelting( &phi_plus, &Ql_plus, mesh->p_in[c0]+pert, mesh->T[c0], mesh->phi0_n[c0], tk, model->dt, melt_model, scaling ); + dMdP = (phi_plus - phi_minus)/(2.0*pert); + pert = mesh->T[c0]*1e-6; + PartialMelting( &phi_minus, &Ql_minus, mesh->p_in[c0], mesh->T[c0]-pert, mesh->phi0_n[c0], tk, model->dt, melt_model, scaling ); + PartialMelting( &phi_plus, &Ql_plus, mesh->p_in[c0], mesh->T[c0]+pert, mesh->phi0_n[c0], tk, model->dt, melt_model, scaling ); + dMdT = (phi_plus - phi_minus)/(2.0*pert); + + // const doucpble dAdM = Ql*mesh->rho_n[c0]/mesh->T[c0]; + // const double dAdT = dAdM*dMdT; + // Cp_melt = mesh->T[c0]/mesh->rho_n[c0]*dAdT; // equivalent to Taras + // alp_melt = dAdT*dMdP; // equivalent to Taras + Cp_melt = Ql*dMdT; + alp_melt = Ql*dMdP/mesh->T[c0]*mesh->rho_n[c0]; + } + + // Update centroid values of Cp and alpha + mesh->Cp[c0] += (mesh->phase_perc_n[p][c0]*(materials->Cp[p] + Cp_melt) ); + mesh->alp[c0] += (mesh->phase_perc_n[p][c0]*(materials->alp[p] - alp_melt) ); + } + } + } + } +} diff --git a/MDLIB/MemoryAllocFree.c b/MDLIB/MemoryAllocFree.c index 6c81a2ad..5a8b7f57 100755 --- a/MDLIB/MemoryAllocFree.c +++ b/MDLIB/MemoryAllocFree.c @@ -481,7 +481,7 @@ grid GridAlloc(params *model) { mesh.strain_s = DoodzCalloc((Nx) * (Nz), sizeof(double)); // Energy equation - mesh.Cv = DoodzCalloc((Nx - 1) * (Nz - 1), sizeof(double)); + mesh.Cp = DoodzCalloc((Nx - 1) * (Nz - 1), sizeof(double)); mesh.kx = DoodzCalloc(Nx * NzVx, sizeof(double)); mesh.kz = DoodzCalloc(NxVz * Nz, sizeof(double)); mesh.kc_x = DoodzCalloc(Nx * NzVx, sizeof(double)); @@ -783,7 +783,7 @@ void GridFree(grid *mesh, params *model) { DoodzFree(mesh->strain_n); // Energy equation - DoodzFree(mesh->Cv); + DoodzFree(mesh->Cp); DoodzFree(mesh->kx); DoodzFree(mesh->kz); DoodzFree(mesh->kc_x); diff --git a/MDLIB/NeckingReview.c b/MDLIB/NeckingReview.c new file mode 100755 index 00000000..ac4e7fca --- /dev/null +++ b/MDLIB/NeckingReview.c @@ -0,0 +1,176 @@ +#include "math.h" +#include "mdoodz.h" +#include "stdbool.h" +#include "stdlib.h" +#include "stdio.h" + +int SetDualPhase(MdoodzInput *input, Coordinates coordinate, int phase) { + + int dual_phase = phase; + double Lx = input->model.xmax - input->model.xmin; + double Lz = input->model.zmax - input->model.zmin; + double Ax, Az; + + // Set checkerboard for phase 0 + Az = sin( 48.0*2.0*M_PI*coordinate.z / Lz ); + if ( Az>0.0 && dual_phase==0 ) { + dual_phase += input->model.Nb_phases; + } + + // Set checkerboard for phase 1 + Az = sin( 48.0*2.0*M_PI*coordinate.z / Lz ); + if ( Az>0.0 && dual_phase==1 ) { + dual_phase += input->model.Nb_phases; + } + + // Set checkerboard for phase 2 + Az = sin( 48.0*2.0*M_PI*coordinate.z / Lz ); + if ( Az>0.0 && dual_phase==2 ) { + dual_phase += input->model.Nb_phases; + } + + return dual_phase; +} + + +double SetSurfaceZCoord(MdoodzInput *instance, double x_coord) { + const double TopoLevel = -0.0e3 / instance->scaling.L; + const double basin_width = 30.0e3 / instance->scaling.L; + const double h_pert = instance->model.user3 / instance->scaling.L; + const double x = x_coord - instance->model.user4 / instance->scaling.L; + return TopoLevel + h_pert * exp( - (x*x) / (2.0*basin_width*basin_width) ); +} + +double SetNoise(MdoodzInput *instance, Coordinates coordinates, int phase) { + const double x = coordinates.x - instance->model.user4 / instance->scaling.L; + const double z = coordinates.z; + const double basin_width = 30.0e3 / instance->scaling.L; + const double noise = ((double) rand() / (double) RAND_MAX) - 0.5; + const double filter_x = exp( - (x*x)/ (2.0*basin_width*basin_width) ); + const double filter_z = exp( - (z*z)/ (2.0*basin_width*basin_width*4.0) ); + return noise * filter_x * filter_z; +} + +int SetPhase(MdoodzInput *instance, Coordinates coordinates) { + const double basin_width = 30.0e3 / instance->scaling.L; + const double h_pert = instance->model.user3 / instance->scaling.L; + const double lithosphereThickness = instance->model.user1 / instance->scaling.L; + const double crustThickness = instance->model.user2 / instance->scaling.L; + const double perturbationAmplitude = instance->model.user3 / instance->scaling.L; + const double x = coordinates.x - instance->model.user4 / instance->scaling.L; + const double mohoLevel = -crustThickness + 0*h_pert * exp( - (x*x) / (2.0*basin_width*basin_width) ); + const bool isBelowLithosphere = coordinates.z < -lithosphereThickness; + const bool isAboveMoho = coordinates.z > mohoLevel; + const bool isLowerCrust = coordinates.z < (mohoLevel + 0.5*crustThickness); + + if (isAboveMoho) { + if (isLowerCrust) { + return 1; + } + else { + return 0; + } + } else if (isBelowLithosphere) { + return 3; + } else { + return 2; + } +} + +double SetTemperature(MdoodzInput *instance, Coordinates coordinates) { + const double lithosphereThickness = instance->model.user1 / instance->scaling.L; + const double surfaceTemperature = 273.15 / instance->scaling.T; + const double mantleTemperature = (1330.0 + 273.15) / instance->scaling.T; + + const double Tamp = 50.0 / instance->scaling.T; + const double x = coordinates.x - instance->model.user4 / instance->scaling.L; + const double z = coordinates.z; + const double basin_width = 30.0e3 / instance->scaling.L; + const double filter_x = Tamp * exp( - (x*x)/ (2.0*basin_width*basin_width) ); + + const double particleTemperature = ((mantleTemperature - surfaceTemperature) / lithosphereThickness) * (-coordinates.z) + surfaceTemperature; + if (particleTemperature > mantleTemperature) { + return mantleTemperature + filter_x; + } else { + return particleTemperature; + } +} + +double SetGrainSize(MdoodzInput *instance, Coordinates coordinates, int phase) { + const int asthenospherePhase = 3; + return instance->materials.gs_ref[asthenospherePhase]; +} + +char SetBCPType(MdoodzInput *instance, POSITION position) { + if (position == NE || position == NW) { + return 0; + } else { + return -1; + } +} + +SetBC SetBCT(MdoodzInput *instance, POSITION position, double particleTemperature) { + SetBC bc; + double surface_temperature = zeroC / instance->scaling.T; + double mantle_temperature = (1330. + zeroC) / instance->scaling.T; + if (position == S) { + bc.type = constant_temperature; + bc.value = mantle_temperature; + } + if (position == free_surface || position == N) { + bc.type = constant_temperature; + bc.value = surface_temperature; + } + if (position == W || position == E) { + bc.type = constant_heatflux; + bc.value = 0.; + } + return bc; +} + +void AddCrazyConductivity(MdoodzInput *input) { + int *asthenospherePhases = (int *) malloc(sizeof(int)); + CrazyConductivity *crazyConductivity = (CrazyConductivity *) malloc(sizeof(CrazyConductivity)); + asthenospherePhases[0] = 3; + crazyConductivity->phases = asthenospherePhases; + crazyConductivity->nPhases = 1; + crazyConductivity->multiplier = 1000; + input->crazyConductivity = crazyConductivity; +} + +int main(int nargs, char *args[]) { + // Input file name + char *input_file; + if ( nargs < 2 ) { + asprintf(&input_file, "NeckingReview.txt"); // Default + } + else { + printf("dodo %s\n", args[1]); + asprintf(&input_file, "%s", args[1]); // Custom + } + printf("Running MDoodz7.0 using %s\n", input_file); + srand(69); // Force random generator seed for reproducibility + MdoodzSetup setup = { + .BuildInitialTopography = &(BuildInitialTopography_ff){ + .SetSurfaceZCoord = SetSurfaceZCoord, + }, + .SetParticles = &(SetParticles_ff){ + .SetPhase = SetPhase, + .SetTemperature = SetTemperature, + .SetGrainSize = SetGrainSize, + .SetNoise = SetNoise, + .SetDualPhase = SetDualPhase, + + }, + .SetBCs = &(SetBCs_ff){ + .SetBCVx = SetPureShearBCVx, + .SetBCVz = SetPureShearBCVz, + .SetBCPType = SetBCPType, + .SetBCT = SetBCT, + }, + .MutateInput = AddCrazyConductivity, + + }; + RunMDOODZ(input_file, &setup); + free(input_file); +} diff --git a/MDLIB/ParticleRoutines.c b/MDLIB/ParticleRoutines.c index bea0425e..ccc475e0 100755 --- a/MDLIB/ParticleRoutines.c +++ b/MDLIB/ParticleRoutines.c @@ -713,8 +713,7 @@ void AssignMarkerProperties (markers* particles, int new_ind, int min_index, par particles->P[new_ind] = Centers2Particle( particles, mesh->p_in, mesh->xvz_coord, mesh->zvx_coord, mesh->Nx-1, mesh->Nz-1, mesh->BCp.type, mesh->dx, mesh->dz, new_ind, model->periodic_x ); particles->phi[new_ind] = Centers2Particle( particles, mesh->phi_n, mesh->xvz_coord, mesh->zvx_coord, mesh->Nx-1, mesh->Nz-1, mesh->BCp.type, mesh->dx, mesh->dz, new_ind, model->periodic_x ); particles->X[new_ind] = Centers2Particle( particles, mesh->X_n, mesh->xvz_coord, mesh->zvx_coord, mesh->Nx-1, mesh->Nz-1, mesh->BCp.type, mesh->dx, mesh->dz, new_ind, model->periodic_x ); - particles->noise[new_ind] = Centers2Particle( particles, mesh->noise_n, mesh->xvz_coord, mesh->zvx_coord, mesh->Nx-1, mesh->Nz-1, mesh->BCp.type, mesh->dx, mesh->dz, new_ind, model->periodic_x ); - + particles->noise[new_ind] = Centers2Particle( particles, mesh->noise_n, mesh->xvz_coord, mesh->zvx_coord, mesh->Nx-1, mesh->Nz-1, mesh->BCp.type, mesh->dx, mesh->dz, new_ind, model->periodic_x ); } diff --git a/MDLIB/RheologyDensity.c b/MDLIB/RheologyDensity.c index de985f6e..3e9a9e2b 100644 --- a/MDLIB/RheologyDensity.c +++ b/MDLIB/RheologyDensity.c @@ -409,6 +409,10 @@ double ViscosityConcise( int phase, double G, double T, double P, double d, doub double divr = 0.0; if (model->diffuse_X == 0) constant_mix = 0; + // Partial melting + int Melting = model->melting; + double phi0 = phi, phi1 = phi, Ql1 = 0.; + //------------------------------------------------------------------------// // Initialise strain rate invariants to 0 @@ -522,6 +526,8 @@ double ViscosityConcise( int phase, double G, double T, double P, double d, doub HuetAveragingModel( &B_pwl, &C_pwl, &n_pwl, phase, R, T, t_pwl, X, pre_factor, materials ); } + if ( Melting == 1 ) PartialMelting( &phi1, &Ql1, P, T, phi0, tau_kin, dt, materials->melt[phase], scaling ); + // Set pointer value *X1 = X; @@ -535,22 +541,6 @@ double ViscosityConcise( int phase, double G, double T, double P, double d, doub if ( constant_mix== 1 && mix_avg==2) eta_cst = exp(X0*log(materials->eta0[phase]) + (1-X0)*log(materials->eta0[phase_two])); if ( dislocation == 1 ) eta_pwl = B_pwl * pow( Eii, 1.0/n_pwl - 1.0 ); - // if (phase==1) { - // printf("%2.2e %2.2e %2.2e %lf\n", eta_pwl*scaling->eta, B_pwl, Eii*scaling->E, n_pwl); - // } - - // if (phase==2 && constant == 1) { - // double rho_test = EvaluateDensity( phase, T, P, X, model, materials ); - // // printf("%lf\n", rho_test*scaling->rho); - // if (rho_test<2850./scaling->rho) { - // eta_cst = 1e19/scaling->eta; - // // B_pwl = eta_pwl; - // // C_pwl = 1.0/2.0/B_pwl; - // // n_pwl = 1.0; - // // exit(1); - // } - // } - if (gs == 1) { double Kg = materials->Kpzm[phase], Qg = materials->Qpzm[phase]; Ag = Kg * exp(-Qg / R / T); @@ -570,17 +560,6 @@ double ViscosityConcise( int phase, double G, double T, double P, double d, doub // Viscoelasticity *Eii_pl = 0.0; - - // Define viscosity bounds - // eta_up = 1.0e100 / scaling->eta; - // if (constant == 1) {eta_up = MINV(eta_up, eta_cst); eta_lo += 1.0/eta_cst;} - // if (dislocation == 1) {eta_up = MINV(eta_up, eta_pwl); eta_lo += 1.0/eta_pwl;} - // if (elastic == 1) {eta_up = MINV(eta_up, eta_el); eta_lo += 1.0/eta_el;} - // if (peierls == 1) {eta_up = MINV(eta_up, eta_exp); eta_lo += 1.0/eta_exp;} - // if (diffusion == 1) {eta_up = MINV(eta_up, eta_lin); eta_lo += 1.0/eta_lin;} - // if (gbs == 1) {eta_up = MINV(eta_up, eta_gbs); eta_lo += 1.0/eta_gbs;} - // eta_lo = 1.0/eta_lo; - eta_up = 1.0e100 / scaling->eta; eta_lo = -1.0e100 / scaling->eta; if (constant == 1) {eta_up = MINV(eta_up, eta_cst); eta_lo = MAXV(eta_lo, eta_cst);} @@ -592,7 +571,6 @@ double ViscosityConcise( int phase, double G, double T, double P, double d, doub //------------------------------------------------------------------------// // Initial guess - // eta_ve = 0.5*(eta_up + eta_lo); eta_ve = eta_up; // better Tii = 2.0 * eta_ve * Eii; @@ -606,10 +584,8 @@ double ViscosityConcise( int phase, double G, double T, double P, double d, doub const double Eii_pwl = Tii/2.0/eta_pwl; const double d_it = exp(log(Ag * gam / (lam * (1.0 / cg) * Tii * (Eii_pwl) *pg)) / (1.0 + pg)); *d1 = d; - // *d1 = d_it; if (noisy) printf("d guess = %2.2e, Tii = %2.2e Eiipwl=%2.2e\n", d_it*scaling->L, Tii*scaling->S, Eii_pwl*scaling->E); } - // printf("%2.2e %2.2e %2.2e %2.2e %2.2e\n", eta_el*scaling->eta, eta_cst*scaling->eta, eta_pwl*scaling->eta, eta_lin*scaling->eta, eta_up*scaling->eta); LocalIterationParams params = { .noisy = noisy, @@ -727,16 +703,18 @@ double ViscosityConcise( int phase, double G, double T, double P, double d, doub // } if ( centroid > 0 ) { if (final_update==1) P = Pc; - if (ProgressiveReaction == 1) { + if (ProgressiveReaction == 1 || Melting == 1) { // rho_ref = (1.0-X)*rho1 + X*rho2; // *rho = rho_ref * exp(P/K - alpha*T); - *rho = EvaluateDensity( phase, T, P, X, model, materials ); + rho0 = EvaluateDensity( phase, T0, P0, X0, phi0, model, materials ); + *rho = EvaluateDensity( phase, T, P, X, phi1, model, materials ); + // if (materials->melt[phase]==1) printf("phi0 = %1.2e phi1 = %1.2e --- %1.8e %1.8e \n", phi0, phi1, rho0*scaling->rho, *rho*scaling->rho); } else { - rho_eq = EvaluateDensity( phase, T, P, X, model, materials ); + rho_eq = EvaluateDensity( phase, T, P, X, phi1, model, materials ); *rho = rho_eq; if ( kinetics == 1 ) { - rho0 = EvaluateDensity( phase, T0, P0, X, model, materials ); + rho0 = EvaluateDensity( phase, T0, P0, X, phi, model, materials ); if ( materials->kin[phase]==9 ) { tau_kin = 0.0; dG = Interpolate2Ddata( T0, P0, model->kin_Tmin, model->kin_Tmax, model->kin_Pmin, model->kin_Pmax, model->kin_nT, model->kin_nP, model->kin_dG ); @@ -989,11 +967,13 @@ void NonNewtonianViscosityGrid( grid *mesh, mat_prop *materials, params *model, // Volume changes if ( model->density_variations == 1 ) { mesh->rho_n[c0] += mesh->phase_perc_n[p][c0] * rho; + // mesh->rho_n[c0] += mesh->phase_perc_n[p][c0] * 1.0/rho; } } } mesh->d_n[c0] = 1.0/mesh->d_n[c0]; + // mesh->rho_n[c0] = 1.0/mesh->rho_n[c0]; // HARMONIC AVERAGE if ( average == 1 ) { @@ -1438,25 +1418,25 @@ void ShearModCompExpGrid( grid* mesh, mat_prop *materials, params *model, scale /*------------------------------------------------------ M-Doodz -----------------------------------------------------*/ /*--------------------------------------------------------------------------------------------------------------------*/ -double EvaluateDensity( int p, double T, double P, double X, params *model, mat_prop *materials ) { +double EvaluateDensity( int p, double T, double P, double X, double phi, params *model, mat_prop *materials ) { - double rho, rho_ref, rho1, rho2, drho, T0, alpha, P0, beta; - int ProgressiveReaction = materials->reac_soft[p], no_return = model->no_return; + double rho; + const int ProgressiveReaction = materials->reac_soft[p], no_return = model->no_return; // Constant density if ( materials->density_model[p] == 0 ) { - rho_ref = materials->rho[p]; + const double rho_ref = materials->rho[p]; rho = rho_ref; } // T, P, X dependent density based on EOS if ( materials->density_model[p] == 1 ) { - rho_ref = materials->rho[p]; - drho = materials->drho[p]; - T0 = materials->T0 [p]; - alpha = materials->alp[p]; - P0 = materials->P0 [p]; - beta = materials->bet[p]; + const double rho_ref = materials->rho[p]; + const double drho = materials->drho[p]; + const double T0 = materials->T0 [p]; + const double alpha = materials->alp[p]; + const double P0 = materials->P0 [p]; + const double beta = materials->bet[p]; rho = (1.0 - alpha * (T - T0) ) * (1.0 + beta * (P - P0) ); // EOS general rho = ((1.0-X)*rho_ref + X*(rho_ref+drho))*rho; // Average density based on X } @@ -1469,22 +1449,33 @@ double EvaluateDensity( int p, double T, double P, double X, params *model, mat_ // P-T dependent density if ( materials->density_model[p] == 3 && ProgressiveReaction == 0 ) { - rho_ref = materials->rho[p]; - beta = materials->bet[p]; - alpha = materials->alp[p]; + const double rho_ref = materials->rho[p]; + const double beta = materials->bet[p]; + const double alpha = materials->alp[p]; rho = rho_ref*exp(beta*P - alpha*T); } // P-T dependent density: models used for Yamato et al. (2022) if ( materials->density_model[p] == 3 && ProgressiveReaction == 1) { - rho1 = materials->rho[p]; - rho2 = materials->rho[materials->reac_phase[p]]; - beta = materials->bet[p]; - alpha = materials->alp[p]; - rho_ref = (1.0-X)*rho1 + X*rho2; + const double rho1 = materials->rho[p]; + const double rho2 = materials->rho[materials->reac_phase[p]]; + const double beta = materials->bet[p]; + const double alpha = materials->alp[p]; + const double rho_ref = (1.0-X)*rho1 + X*rho2; rho = rho_ref * exp(beta*P - alpha*T); } + // P-T dependent density: models used for Poh et al. (2021) + if ( materials->density_model[p] == 5 ) { + const double rho_sol = materials->rho[p]; + const double rho_liq = materials->rho[p] - materials->drho[p]; + const double beta = materials->bet[p]; + const double alpha = materials->alp[p]; + rho = rho_sol * exp(beta*P - alpha*T); + rho = rho * (1 - phi + phi*rho_liq/rho_sol ); + // printf("rho_sol = %2.6e rho_liq = %2.6e drho = %2.6e\n", rho_sol, rho_liq, materials->drho[p]); + } + // P dependent density read from the 1D table if ( materials->density_model[p] == 4 ) { rho = ItpRho1D( P, model, p ); @@ -1516,8 +1507,8 @@ void UpdateDensity( grid* mesh, markers* particles, mat_prop *materials, params if ( fabs(mesh->phase_perc_n[p][c0])>epsi) { // Call density evaluation - rho = EvaluateDensity( p, mesh->T[c0], mesh->p_in[c0], mesh->X_n[c0], model, materials ); - rho0 = EvaluateDensity( p, mesh->T0_n[c0], mesh->p0_n[c0], mesh->X0_n[c0], model, materials ); + rho = EvaluateDensity( p, mesh->T[c0], mesh->p_in[c0], mesh->X_n[c0], mesh->phi_n[c0], model, materials ); + rho0 = EvaluateDensity( p, mesh->T0_n[c0], mesh->p0_n[c0], mesh->X0_n[c0], mesh->phi0_n[c0], model, materials ); // Average density base on phase density and phase volume fraction if ( mesh->BCp.type[c0] != 30 ) mesh->rho_n[c0] += mesh->phase_perc_n[p][c0] * rho; diff --git a/MDLIB/RheologyParticles.c b/MDLIB/RheologyParticles.c index 6f01d685..d0686280 100644 --- a/MDLIB/RheologyParticles.c +++ b/MDLIB/RheologyParticles.c @@ -1216,7 +1216,7 @@ void UpdateParticleEnergy( grid* mesh, scale scaling, params model, markers* par for ( k=0; kNb_part; k++ ) { if (particles->phase[k] != -1) { p = particles->phase[k]; - dtm = materials->Cv[p] * rho_part[k]/ (materials->k[p] * (1.0/dx/dx + 1.0/dz/dz)); + dtm = materials->Cp[p] * rho_part[k]/ (materials->k[p] * (1.0/dx/dx + 1.0/dz/dz)); dTms[k] = -( particles->T[k] - Tm0[k] ) * (1.0-exp(-d*model.dt/dtm)); } } diff --git a/MDLIB/ThermalRoutines.c b/MDLIB/ThermalRoutines.c index b850e68c..e1a95648 100755 --- a/MDLIB/ThermalRoutines.c +++ b/MDLIB/ThermalRoutines.c @@ -149,7 +149,8 @@ void EnergyDirectSolve( grid *mesh, params model, double *rhs_t, markers *partic if ( mesh->BCT_exp.type[c0] != 30 ) { // Contribution from transient - rhoCp = mesh->rho_n[c2]*mesh->Cv[c2]; + // printf("mesh->Cp = %2.2e\n", mesh->Cp[c2]*scaling.Cp); + rhoCp = mesh->rho_n[c2]*mesh->Cp[c2]; b[eqn] = transient * rhoCp * mesh->T[c2]/ dt; // Contribution from radiogenic sources @@ -194,7 +195,7 @@ void EnergyDirectSolve( grid *mesh, params model, double *rhs_t, markers *partic eqn = eqn_t[c2]; Ic[eqn] = nnzc; - rhoCp = mesh->rho_n[c2]*mesh->Cv[c2]; + rhoCp = mesh->rho_n[c2]*mesh->Cp[c2]; AW = mesh->kx[c1] ; AE = mesh->kx[c1+1] ; AS = mesh->kz[c3] ; @@ -417,7 +418,7 @@ void EnergyDirectSolve( grid *mesh, params model, double *rhs_t, markers *partic if ( mesh->BCT_exp.type[c0] != 30 ) { dT = x[eqn] - mesh->T[c2]; mesh->T[c2] = x[eqn]; - dUt += mesh->rho_n[c2]*mesh->Cv[c2]*dT; + dUt += mesh->rho_n[c2]*mesh->Cp[c2]*dT; if (mesh->T[c2] < 0.0) { printf("Negative temperature --- Are you crazy! (EnergyDirectSolve)\n"); exit(1); diff --git a/MDLIB/include/mdoodz.h b/MDLIB/include/mdoodz.h index 53f0a9eb..998cf5b8 100644 --- a/MDLIB/include/mdoodz.h +++ b/MDLIB/include/mdoodz.h @@ -53,7 +53,7 @@ typedef struct { int interp_stencil; double nexp_radial_basis; int mechanical, periodic_x, elastic, isnonnewtonian, - thermal, pure_shear_ALE, free_surface, writer_markers, writer_debug, topo_update; + thermal, pure_shear_ALE, free_surface, writer_markers, writer_debug, topo_update, melting; double free_surface_stab; int constant_dt, RK, line_search, initial_cooling, subgrid_diffusion, adiab_heating, shear_heating, advection, finite_strain, conserv_interp; @@ -116,14 +116,14 @@ typedef struct { // Stucture scale contains scaling parameters typedef struct { - double eta, L, V, T, t, a, E, S, m, rho, F, J, W, Cv, rhoE, k; + double eta, L, V, T, t, a, E, S, m, rho, F, J, W, Cp, rhoE, k; } scale; // mat_prop contains information related to material phase properties typedef struct { int Nb_phases; double R; - double eps0[20], tau0[20], eta0[20], rho[20], G[20], Cv[20], k[20], Qr[20], C[20], phi[20], + double eps0[20], tau0[20], eta0[20], rho[20], G[20], Cp[20], k[20], Qr[20], C[20], phi[20], psi[20], Slim[20], n[20], A[20], Ea[20], Va[20], alp[20], bet[20], Qm[20], T0[20], P0[20], drho[20], k_eff[20]; double tpwl[20], Qpwl[20], Vpwl[20], npwl[20], mpwl[20], Apwl[20], apwl[20], @@ -145,6 +145,7 @@ typedef struct { double Pr[20], tau_kin[20], dPr[20], k_chem[20]; int reac_soft[20], reac_phase[20]; int phase_mix[20], phase_two[20]; + int melt[20]; double aniso_angle[20], ani_fac_max[20], aniso_factor[20]; //ani_fac_v[20], ani_fac_e[20], ani_fac_p[20] double axx[20], azz[20], ayy[20]; int ani_fstrain[20]; diff --git a/MDLIB/makefile b/MDLIB/makefile index f7b7df9a..7e8d579e 100644 --- a/MDLIB/makefile +++ b/MDLIB/makefile @@ -46,7 +46,7 @@ endif #---------------------------------------------------# # Rules -FILES = AnisotropyRoutines.o Main_DOODZ.o FD_Jacobian.o RheologyParticles.o ChemicalRoutines.o ParticleReseeding.o Solvers.o StokesRoutines.o StokesAssemblyDecoupled.o AdvectionRoutines.o RheologyDensity.o HDF5Output.o SparseTools.o ThermalRoutines.o ThermalSolver.o ParticleRoutines.o FreeSurface.o FlowLaws.o MemoryAllocFree.o InputOutput.o MiscFunctions.o GridRoutines.o Setup.o $(SET_PATH)/$(SET).o +FILES = MeltingRoutines.o AnisotropyRoutines.o Main_DOODZ.o FD_Jacobian.o RheologyParticles.o ChemicalRoutines.o ParticleReseeding.o Solvers.o StokesRoutines.o StokesAssemblyDecoupled.o AdvectionRoutines.o RheologyDensity.o HDF5Output.o SparseTools.o ThermalRoutines.o ThermalSolver.o ParticleRoutines.o FreeSurface.o FlowLaws.o MemoryAllocFree.o InputOutput.o MiscFunctions.o GridRoutines.o Setup.o $(SET_PATH)/$(SET).o all: Doodzi_$(SET) diff --git a/MDLIB/mdoodz-private.h b/MDLIB/mdoodz-private.h index 9565a243..54b2851f 100755 --- a/MDLIB/mdoodz-private.h +++ b/MDLIB/mdoodz-private.h @@ -69,7 +69,7 @@ typedef struct { *u_in, *v_in, *p_in, *p_corr, *sxxd, *sxxd_s, *szzd, *szzd_s, *sxz, *sxz_n, *exxd, *ezzd, *exz, *wxz, *wxz_n, *VE_s, *VE_n, *sxxd0, *szzd0, *sxz0, *mu_s, *mu_n, *u_adv, *v_adv, - *eta_phys_n, *kx, *kz, *Cv, *Qr, *eta_phys_s, *u_start, *v_start, + *eta_phys_n, *kx, *kz, *Cp, *Qr, *eta_phys_s, *u_start, *v_start, *p_start, *divth0_n; int *iter_smooth; int *nb_part_cell, *nb_part_vert; @@ -567,7 +567,7 @@ double ItpRho1D( double, params*, int ); double Interpolate2Ddata( double, double, double, double, double, double, int, int, double* ); -double EvaluateDensity(int, double, double, double, params *, mat_prop *); +double EvaluateDensity(int, double, double, double, double, params *, mat_prop *); void ComputeMeanQuantitesForTimeSeries(grid *mesh); void LogTimeSeries(grid *, params, scale); void MinMaxArray(double *array, double scale, int size, char *text); @@ -582,3 +582,6 @@ void ValidateSetup(MdoodzSetup *setup, MdoodzInput *instance); void SetBCs_MD6( grid*, params*, scale, markers*, mat_prop*, surface* ); void TransmutateMarkers(markers *particles, mat_prop *materials, double scaling_T); +void PartialMelting( double*, double*, double, double T, double, double, double, int, scale* ); +void UpdateAlphaCp( grid*, markers*, mat_prop*, params*, scale* ); +void MeltFractionGrid( grid*, markers*, mat_prop*, params*, scale* ); diff --git a/Project.toml b/Project.toml index 9176cf50..250addc7 100644 --- a/Project.toml +++ b/Project.toml @@ -1,2 +1,3 @@ [deps] +ColorSchemes = "35d6a980-a343-548e-a6ea-1d62b119f2f4" SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" diff --git a/SETS/AnisoHomoVEVP.txt b/SETS/AnisoHomoVEVP.txt index e3d095a6..c5d4ae5a 100644 --- a/SETS/AnisoHomoVEVP.txt +++ b/SETS/AnisoHomoVEVP.txt @@ -90,7 +90,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1e1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1.25e80 @@ -121,7 +121,7 @@ ani_fac_p = 1.0 ID = 1 rho = 2700.00 / inclusion G = 3e1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 diff --git a/SETS/AnisoVEVP.txt b/SETS/AnisoVEVP.txt index d9a6a95e..9ca6ae04 100644 --- a/SETS/AnisoVEVP.txt +++ b/SETS/AnisoVEVP.txt @@ -92,7 +92,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 3e1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1.25 @@ -124,7 +124,7 @@ ayy = 1.0 ID = 1 rho = 2700.00 / inclusion G = 3e1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 diff --git a/SETS/AnisoViscTest_Debug.txt b/SETS/AnisoViscTest_Debug.txt index 29091c6f..bb3d86b3 100644 --- a/SETS/AnisoViscTest_Debug.txt +++ b/SETS/AnisoViscTest_Debug.txt @@ -92,7 +92,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1e30 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 @@ -118,7 +118,7 @@ aniso_factor = 1.0 ID = 1 rho = 2700.00 / elliptical inclusions G = 1e30 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 diff --git a/SETS/AnisoViscTest_Ellipses.txt b/SETS/AnisoViscTest_Ellipses.txt index 1951b103..b133d20b 100644 --- a/SETS/AnisoViscTest_Ellipses.txt +++ b/SETS/AnisoViscTest_Ellipses.txt @@ -92,7 +92,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1e30 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 @@ -118,7 +118,7 @@ aniso_factor = 1.0 ID = 1 rho = 2700.00 / elliptical inclusions G = 1e30 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 diff --git a/SETS/AnisoViscTest_HomoRandomAngle.txt b/SETS/AnisoViscTest_HomoRandomAngle.txt index 7fc2e80c..6814b1b3 100644 --- a/SETS/AnisoViscTest_HomoRandomAngle.txt +++ b/SETS/AnisoViscTest_HomoRandomAngle.txt @@ -91,7 +91,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1e30 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 @@ -117,7 +117,7 @@ aniso_factor = 1.0 ID = 1 rho = 2700.00 / elliptical inclusions G = 1e30 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 diff --git a/SETS/AnisoViscTest_MWE.txt b/SETS/AnisoViscTest_MWE.txt index dca1d671..138d0cf5 100644 --- a/SETS/AnisoViscTest_MWE.txt +++ b/SETS/AnisoViscTest_MWE.txt @@ -92,7 +92,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1e30 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 @@ -118,7 +118,7 @@ aniso_factor = 1.0 ID = 1 rho = 2700.00 / elliptical inclusions G = 1e30 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 diff --git a/SETS/AnisoViscTest_evolv.txt b/SETS/AnisoViscTest_evolv.txt index dc81765e..e794ef4e 100644 --- a/SETS/AnisoViscTest_evolv.txt +++ b/SETS/AnisoViscTest_evolv.txt @@ -89,7 +89,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1e30 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 @@ -115,7 +115,7 @@ aniso_factor = 1.0 ID = 1 rho = 2700.00 / inclusion G = 1e30 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 diff --git a/SETS/AnisotropyLayer.txt b/SETS/AnisotropyLayer.txt index 1ed79e7c..bdf9d704 100755 --- a/SETS/AnisotropyLayer.txt +++ b/SETS/AnisotropyLayer.txt @@ -60,7 +60,7 @@ rho = 2700.00 / ref. density alp = 32.0e-6 / thermal expansivity bet = 1e-11 / compressibility G = 1e10 / shear modulus -Cv = 1050 / heat capacity +Cp = 1050 / heat capacity k = 2 / thermal conductivity Qr = 1e-6 / radiogenic heat production C = 1e7 / cohesion @@ -76,7 +76,7 @@ aniso_factor = 10 ID = 1 rho = 2800.00 / Crust - Maryland Diabase G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.5 Qr = 1.0e-6 C = 1.0e7 diff --git a/SETS/AnneloreSubduction.txt b/SETS/AnneloreSubduction.txt index b59feeb3..baf90a7e 100755 --- a/SETS/AnneloreSubduction.txt +++ b/SETS/AnneloreSubduction.txt @@ -71,7 +71,7 @@ Nb_phases = 3 ID = 0 / Phase identity used to assign material to phase rho = 3250.00 /asthenosphere / Reference density G = 1e10 / Shear modulus -Cv = 1050 / Heat capacity +Cp = 1050 / Heat capacity k = 3.0 / Thermal conductivity Qr = 1e-10 / Amount of radiogenic heat production C = 1e6 / Cohesion @@ -96,7 +96,7 @@ rho = 3250.00 /mantle 2 G = 1e10 rho = 3250.00 /lithosphere G = 1e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-10 C = 1e7 @@ -119,7 +119,7 @@ gs_ref = 5e-3 ID = 2 rho = 3250.00 /wet mantle G = 1e10 -Cv = 1050 +Cp = 1050 k = 3.0 / unrealistically high to mimic convecting mantle Qr = 1e-10 C = 1e6 diff --git a/SETS/ChemicalDiffusion.txt b/SETS/ChemicalDiffusion.txt index aebf8c2a..ef9aa3f7 100644 --- a/SETS/ChemicalDiffusion.txt +++ b/SETS/ChemicalDiffusion.txt @@ -95,7 +95,7 @@ Nb_phases = 4 ID = 0 rho = 2850.00 / matrix Granulite G = 4.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 1.0e70 @@ -127,7 +127,7 @@ density_model = 3 ID = 1 rho = 2850.00 / Dry CPX inclusion G = 4.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 1.0e70 @@ -159,7 +159,7 @@ density_model = 3 ID = 2 rho = 2850.00 / matrix Granulite G = 4.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 1.0e70 @@ -191,7 +191,7 @@ density_model = 3 ID = 3 rho = 3250.00 / keep granulite, only change in rho G = 4.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 1.0e70 diff --git a/SETS/CollisionIra.txt b/SETS/CollisionIra.txt index 14ef7795..8c77d6a1 100644 --- a/SETS/CollisionIra.txt +++ b/SETS/CollisionIra.txt @@ -95,7 +95,7 @@ Nb_phases = 5 ID = 0 / Oceanic Mantle Lithosphere rho = 3300.00 / Density (kg/m^3) G = 3e10 / Shear modulus (Pa) -Cv = 1050 / Specific heat capacity (J/(kg*K)) +Cp = 1050 / Specific heat capacity (J/(kg*K)) k = 2.5 / Thermal conductivity (W/(m*K)) Qr = 0 / Radioactive heat production (W/m^3) C = 4e8 / Cohesion (Pa) @@ -120,7 +120,7 @@ aniso_angle = 80 ID = 1 rho = 2800.00 / Crust G = 2.7e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 1e-6 C = 3e7 @@ -145,7 +145,7 @@ aniso_angle = 80 ID = 2 rho = 3250.00 / Mantle lithosphere G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 4e8 @@ -170,7 +170,7 @@ aniso_angle = 80 ID = 3 rho = 3300.00 / Astehenosphere G = 1.5e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e7 @@ -195,7 +195,7 @@ aniso_angle = 80 ID = 4 / Oceanic Crust rho = 2900.00 / Density (kg/m^3) G = 3e10 / Shear modulus (Pa) -Cv = 1050 / Specific heat capacity (J/(kg*K)) +Cp = 1050 / Specific heat capacity (J/(kg*K)) k = 2.5 / Thermal conductivity (W/(m*K)) Qr = 1e-6 / Radioactive heat production (W/m^3) C = 1e8 / Cohesion (Pa) diff --git a/SETS/CollisionPolarCartesian.txt b/SETS/CollisionPolarCartesian.txt index 15352855..ea1e8ff1 100644 --- a/SETS/CollisionPolarCartesian.txt +++ b/SETS/CollisionPolarCartesian.txt @@ -82,7 +82,7 @@ Nb_phases = 3 ID = 0 rho = 2800.00 / Crust G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 1e-6 C = 5e7 @@ -106,7 +106,7 @@ Qpwl = 0 ID = 1 rho = 3300.00 / Mantle lithosphere G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 5e7 @@ -130,7 +130,7 @@ Qpwl = 0 ID = 2 rho = 3300.00 / Astehenosphere G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 5e7 diff --git a/SETS/CollisionPolarCartesianAniso.txt b/SETS/CollisionPolarCartesianAniso.txt index a83a3c36..1e89769a 100755 --- a/SETS/CollisionPolarCartesianAniso.txt +++ b/SETS/CollisionPolarCartesianAniso.txt @@ -86,7 +86,7 @@ Nb_phases = 3 ID = 0 rho = 2800.00 / Crust G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 1e-6 C = 5e7 @@ -113,7 +113,7 @@ aniso_factor = 1.0 ID = 1 rho = 3300.00 / Mantle lithosphere G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 5e7 @@ -140,7 +140,7 @@ aniso_factor = 1.0 ID = 2 rho = 3300.00 / Astehenosphere G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 5e7 diff --git a/SETS/CollisionZone.c b/SETS/CollisionZone.c index 379b69ad..21c2170e 100755 --- a/SETS/CollisionZone.c +++ b/SETS/CollisionZone.c @@ -37,7 +37,7 @@ double SetDensity(MdoodzInput *input, Coordinates coordinates, int phase) { /* Hi Roman, there is an awkward 1==0 below. In fact the global switch `eqn_state` was never used. Density is computed interally and the type of equation of state depends on the phase. To update density on particles one may use the function: - EvaluateDensity( phase_ID, T, P, X, model, materials ); where X is likely 0.0 in most cases (it's a depletion amount) + EvaluateDensity( phase_ID, T, P, X, phi, model, materials ); where X is likely 0.0 in most cases (it's a depletion amount) --> Consequence: SetDensity() should be aware `of materials` */ if ( 1==0 ) { diff --git a/SETS/CollisionZone.txt b/SETS/CollisionZone.txt index d55dfc5c..5a792bd5 100755 --- a/SETS/CollisionZone.txt +++ b/SETS/CollisionZone.txt @@ -80,7 +80,7 @@ rho = 2700.00 / ref. density alp = 32.0e-6 / thermal expansivity bet = 1e-11 / compressibility G = 1e10 / shear modulus -Cv = 1050 / heat capacity +Cp = 1050 / heat capacity k = 2 / thermal conductivity Qr = 1e-6 / radiogenic heat production C = 1e7 / cohesion @@ -94,7 +94,7 @@ expv = 0 / Pierls viscosity -> database flow_laws.c ID = 1 rho = 2800.00 / Crust - Maryland Diabase G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.5 Qr = 1.0e-6 C = 1.0e7 @@ -113,7 +113,7 @@ rho = 3330.00 / lithospheric mantle - Dry Olivine alp = 32.0e-6 bet = 1.5e-11 G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 3.0 Qr = 0.0 C = 1.0e7 @@ -130,7 +130,7 @@ rho = 3330.00 / asthenosphere (same as 2) alp = 32.0e-6 bet = 1.5e-11 G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 3.0 Qr = 0.0 C = 1.0e7 @@ -145,7 +145,7 @@ expv = 40 ID = 4 rho = 2300.00 / sediments G = 1e10 -Cv = 1050 +Cp = 1050 k = 2 Qr = 0.5e-6 C = 1e7 @@ -167,7 +167,7 @@ Qpwl = 0 ID = 5 rho = 2300.00 / sediments G = 1e10 -Cv = 1050 +Cp = 1050 k = 2 Qr = 0.5e-6 C = 1e7 @@ -191,7 +191,7 @@ rho = 3200.00 / impregnated asthenosphere (less dense and more conductive than alp = 32.0e-6 bet = 1.5e-11 G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 30.0 Qr = 0.0 C = 1.0e7 @@ -206,7 +206,7 @@ expv = 40 ID = 7 rho = 2800.00 / Crust - Dry Quartz G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.5 Qr = 1.0e-6 C = 1.0e7 @@ -223,7 +223,7 @@ expv = 0 ID = 8 rho = 2800.00 / Crust - Dry Quartz G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.5 Qr = 1.0e-6 C = 1.0e7 diff --git a/SETS/CrystallisationStuewe1995.c b/SETS/CrystallisationStuewe1995.c new file mode 100644 index 00000000..4de058b6 --- /dev/null +++ b/SETS/CrystallisationStuewe1995.c @@ -0,0 +1,94 @@ +#include "mdoodz.h" +#include "math.h" +#include +#include + +int SetPhase(MdoodzInput *input, Coordinates coordinates) { + int phase = 0; + return phase; +} + +int SetDualPhase(MdoodzInput *input, Coordinates coordinate, int phase) { + + int dual_phase = phase; + double Lx = input->model.xmax - input->model.xmin; + double Lz = input->model.zmax - input->model.zmin; + double Ax, Az; + + // Set checkerboard for phase 0 + Ax = cos( 6.0*2.0*M_PI*coordinate.x / Lx ); + Az = sin( 6.0*2.0*M_PI*coordinate.z / Lz ); + if ( ( (Az<0.0 && Ax<0.0) || (Az>0.0 && Ax>0.0) ) && dual_phase==0 ) { + dual_phase += input->model.Nb_phases; + } + + // Set checkerboard for phase 1 + Ax = cos( 24.0*2.0*M_PI*coordinate.x / Lx ); + Az = sin( 24.0*2.0*M_PI*coordinate.z / Lz ); + if ( ( (Az<0.0 && Ax<0.0) || (Az>0.0 && Ax>0.0) ) && dual_phase==1 ) { + dual_phase += input->model.Nb_phases; + } + + return dual_phase; +} + +double SetDensity(MdoodzInput *input, Coordinates coordinates, int phase) { + const double T_init = (input->model.user0 + zeroC) / input->scaling.T; + const double P_init = (input->model.bkg_pressure ) / input->scaling.S; + return input->materials.rho[phase]; +} + +double SetTemperature(MdoodzInput *instance, Coordinates coordinates) { + const double x = coordinates.x, z = coordinates.z; + const double Tcountry = instance->model.user0 / instance->scaling.T; + const double Tintrusion = instance->model.user1 / instance->scaling.T; + const double radius = instance->model.user2 / instance->scaling.L; + double T = Tcountry; + // if (x * x + z * z < radius * radius) { + // T = Tintrusion; + // } + if (fabs(x)model.user0 / instance->scaling.T; + if (position == W || position == E) { + bc.type = constant_temperature; + bc.value = Tcountry; + } + if (position == S || position == N) { + bc.type = constant_heatflux; + bc.value = 0.0; + } + return bc; +} + +int main(int nargs, char *args[]) { + // Input file name + char *input_file; + if ( nargs < 2 ) { + asprintf(&input_file, "CrystallisationStuewe1995.txt"); // Default + } + else { + asprintf(&input_file, "%s", args[1]); // Custom + } + printf("Running MDoodz7.0 using %s\n", input_file); + MdoodzSetup setup = { + .SetParticles = &(SetParticles_ff){ + .SetPhase = SetPhase, + .SetDualPhase = SetDualPhase, + .SetDensity = SetDensity, + .SetTemperature = SetTemperature, + }, + .SetBCs = &(SetBCs_ff){ + .SetBCVx = SetPureOrSimpleShearBCVx, + .SetBCVz = SetPureOrSimpleShearBCVz, + .SetBCT = SetBCT, + }, + }; + RunMDOODZ(input_file, &setup); + free(input_file); + +} diff --git a/SETS/CrystallisationStuewe1995.txt b/SETS/CrystallisationStuewe1995.txt new file mode 100644 index 00000000..9c34ba81 --- /dev/null +++ b/SETS/CrystallisationStuewe1995.txt @@ -0,0 +1,111 @@ +/**** RESTART ****/ +istep = 00010 +irestart = 0 + +/**** OUTPUT FILES ****/ +writer = 1 +writer_step = 10 +writer_markers = 0 +writer_debug = 0 +writer_energies = 0 + +/**** SCALES ****/ +eta = 1e15 +L = 100.0 +V = 1.0e-10 +T = 700 + +/**** SPACE-TIME ****/ +Nx = 101 +Nz = 101 +Nt = 200 +xmin =-1e5 +zmin =-1e5 +xmax = 1e5 +zmax = 1e5 +dt = 5e13 +constant_dt = 0 +Courant = 0.2 + +/**** SWITCHES ****/ +melting = 1 +mechanical = 0 +thermal = 1 +shear_heating = 0 +adiab_heating = 0 +advection = 0 +eta_average = 1 +stress_rotation = 1 +compressible = 1 +elastic = 1 +RK = 4 +periodic_x = 0 +pure_shear_ALE = 0 +line_search = 1 +free_surface = 0 +free_surface_stab = 0 +initial_cooling = 0 +subgrid_diffusion = 2 +finite_strain = 0 + +/*** CHEMICAL ***/ +chemical_diffusion = 0 / +no_return = 0 +density_variations = 1 / renamed in MD7.0 (VolChangeReac) +unsplit_diff_reac = 0 + +/**** LINEAR ITERATIONS ****/ +lin_solver = 2 +diag_scaling = 0 +penalty = 1e2 +preconditioner = 1 +lin_abs_div = 1e-10 +lin_rel_div = 1e-10 +lin_abs_mom = 1e-10 / momentum tolerance (new in MD7.0) +lin_rel_mom = 1e-10 + +/**** NON-LINEAR ITERATIONS ****/ +Newton = 1 +let_res_grow = 0 +line_search_min = 0.0 +Picard2Newton = 1 +Picard2Newton_tol = 2e-1 +nit_max = 30 +rel_tol_KSP = 5e-4 +nonlin_abs_mom = 1e-9 +nonlin_abs_div = 1e-9 +nonlin_rel_mom = 1e-9 +nonlin_rel_div = 1e-9 +min_eta = 1e10 +max_eta = 1e30 +safe_mode = 1 +safe_dt_div = 2.0 +max_num_stag = 10 +IncrementalUpdateGrid = 1 +gnuplot_log_res = 0 + +/**** SETUP DEPENDANT ****/ +shear_style = 0 +bkg_strain_rate = 0.0 +bkg_pressure = 1.0e9 +user0 = 673.0 / country T [K] +user1 = 1273.0 / intrusion T [K] +user2 = 25e3 / radius [m] +user3 = 0 + +/**** GRAVITY ****/ +gx = 0.0000 +gz = 0.0000 + +/**** MAT PROPERTIES ****/ +Nb_phases = 1 + +/**** PHASE 0 ****/ +ID = 0 +melt = 1 +density_model = 0 / constant density +rho = 2800.00 +Cp = 1050.0 +k = 2.5 +Qr = 0.0 +cstv = 1 / need to define one creep mechanism \ No newline at end of file diff --git a/SETS/DoubleSubduction.txt b/SETS/DoubleSubduction.txt index 14e2b966..297f7311 100644 --- a/SETS/DoubleSubduction.txt +++ b/SETS/DoubleSubduction.txt @@ -83,7 +83,7 @@ Nb_phases = 7 ID = 0 rho = 2800.00 / Crust G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 1e-6 C = 5e7 @@ -107,7 +107,7 @@ Qpwl = 0 ID = 1 rho = 3300.00 / Mantle lithosphere G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 5e7 @@ -131,7 +131,7 @@ Qpwl = 0 ID = 2 rho = 3300.00 / Asthenosphere G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 5e7 @@ -155,7 +155,7 @@ Qpwl = 0 ID = 3 rho = 2600.00 / Serpentine G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 1e-8 C = 5e6 @@ -179,7 +179,7 @@ Qpwl = 0 ID = 4 rho = 3300.00 / Serpentine with mantle density for weak zones - EARLY SOFTENING G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 1e-8 C = 1e6 @@ -210,7 +210,7 @@ pref_pwl = 0.001 ID = 5 rho = 3300.00 / Serpentine with mantle density for weak zones - DELAYED SOFTENING G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 1e-8 C = 10e6 @@ -241,7 +241,7 @@ pref_pwl = 1 ID = 6 rho = 2800.00 / Crust for microcontinent G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 1e-6 C = 5e7 diff --git a/SETS/MLPS_Ellipses.txt b/SETS/MLPS_Ellipses.txt index 99d496bf..1cfb60cd 100755 --- a/SETS/MLPS_Ellipses.txt +++ b/SETS/MLPS_Ellipses.txt @@ -83,7 +83,7 @@ rho = 2700.00 / ref. density alp = 32.0e-6 / thermal expansivity bet = 1e-11 / compressibility G = 1e10 / shear modulus -Cv = 1050 / heat capacity +Cp = 1050 / heat capacity k = 2 / thermal conductivity Qr = 1e-6 / radiogenic heat production C = 1e7 / cohesion @@ -97,7 +97,7 @@ expv = 0 / Pierls viscosity -> database flow_laws.c ID = 1 rho = 2800.00 / Crust - Maryland Diabase G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.5 Qr = 1.0e-6 C = 1.0e7 @@ -116,7 +116,7 @@ rho = 3330.00 / lithospheric mantle - Dry Olivine alp = 32.0e-6 bet = 1.5e-11 G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 3.0 Qr = 0.0 C = 1.0e7 @@ -133,7 +133,7 @@ rho = 3330.00 / asthenosphere (same as 2) alp = 32.0e-6 bet = 1.5e-11 G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 3.0 Qr = 0.0 C = 1.0e7 @@ -148,7 +148,7 @@ expv = 40 ID = 4 rho = 2300.00 / sediments G = 1e10 -Cv = 1050 +Cp = 1050 k = 2 Qr = 0.5e-6 C = 1e7 @@ -170,7 +170,7 @@ Qpwl = 0 ID = 5 rho = 2300.00 / sediments G = 1e10 -Cv = 1050 +Cp = 1050 k = 2 Qr = 0.5e-6 C = 1e7 @@ -194,7 +194,7 @@ rho = 3200.00 / impregnated asthenosphere (less dense and more conductive than alp = 32.0e-6 bet = 1.5e-11 G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 30.0 Qr = 0.0 C = 1.0e7 @@ -209,7 +209,7 @@ expv = 40 ID = 7 rho = 2800.00 / Crust - Dry Quartz G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.5 Qr = 1.0e-6 C = 1.0e7 @@ -226,7 +226,7 @@ expv = 0 ID = 8 rho = 2800.00 / Crust - Dry Quartz G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.5 Qr = 1.0e-6 C = 1.0e7 diff --git a/SETS/MeltingOverpressure.c b/SETS/MeltingOverpressure.c new file mode 100644 index 00000000..e55acbb4 --- /dev/null +++ b/SETS/MeltingOverpressure.c @@ -0,0 +1,83 @@ +#include "mdoodz.h" +#include "math.h" +#include +#include + +int SetPhase(MdoodzInput *input, Coordinates coordinates) { + const double inner_radius = 15. / input->scaling.L; + const double outer_radius = 50. / input->scaling.L; + const double x = coordinates.x, z = coordinates.z; + int phase = 0; + if (x * x + z * z < outer_radius * outer_radius) { + phase = 1; + } + if (x * x + z * z < inner_radius * inner_radius) { + phase = 2; + } + return phase; +} + +int SetDualPhase(MdoodzInput *input, Coordinates coordinate, int phase) { + + int dual_phase = phase; + double Lx = input->model.xmax - input->model.xmin; + double Lz = input->model.zmax - input->model.zmin; + double Ax, Az; + + // Set checkerboard for phase 0 + Ax = cos( 6.0*2.0*M_PI*coordinate.x / Lx ); + Az = sin( 6.0*2.0*M_PI*coordinate.z / Lz ); + if ( ( (Az<0.0 && Ax<0.0) || (Az>0.0 && Ax>0.0) ) && dual_phase==0 ) { + dual_phase += input->model.Nb_phases; + } + + // Set checkerboard for phase 1 + Ax = cos( 24.0*2.0*M_PI*coordinate.x / Lx ); + Az = sin( 24.0*2.0*M_PI*coordinate.z / Lz ); + if ( ( (Az<0.0 && Ax<0.0) || (Az>0.0 && Ax>0.0) ) && dual_phase==1 ) { + dual_phase += input->model.Nb_phases; + } + + return dual_phase; +} + +double SetDensity(MdoodzInput *input, Coordinates coordinates, int phase) { + const double T_init = (input->model.user0 + zeroC) / input->scaling.T; + const double P_init = (input->model.bkg_pressure ) / input->scaling.S; + if (1 == 0) { + return input->materials.rho[phase] * exp(input->materials.bet[phase]*P_init - input->materials.alp[phase] * T_init); + } else { + return input->materials.rho[phase]; + } +} + +double SetTemperature(MdoodzInput *instance, Coordinates coordinates) { + return instance->model.user0 / instance->scaling.T; +} + +int main(int nargs, char *args[]) { + // Input file name + char *input_file; + if ( nargs < 2 ) { + asprintf(&input_file, "MeltingOverpressure.txt"); // Default + } + else { + asprintf(&input_file, "%s", args[1]); // Custom + } + printf("Running MDoodz7.0 using %s\n", input_file); + MdoodzSetup setup = { + .SetParticles = &(SetParticles_ff){ + .SetPhase = SetPhase, + .SetDualPhase = SetDualPhase, + .SetDensity = SetDensity, + .SetTemperature = SetTemperature, + }, + .SetBCs = &(SetBCs_ff){ + .SetBCVx = SetPureOrSimpleShearBCVx, + .SetBCVz = SetPureOrSimpleShearBCVz, + }, + }; + RunMDOODZ(input_file, &setup); + free(input_file); + +} diff --git a/SETS/MeltingOverpressure.txt b/SETS/MeltingOverpressure.txt new file mode 100644 index 00000000..c3247daa --- /dev/null +++ b/SETS/MeltingOverpressure.txt @@ -0,0 +1,207 @@ +/**** RESTART ****/ +istep = 00010 +irestart = 0 + +/**** OUTPUT FILES ****/ +writer = 1 +writer_step = 1 +writer_markers = 0 +writer_debug = 0 +writer_energies = 0 + +/**** SCALES ****/ +eta = 1e15 +L = 100.0 +V = 1.0e-10 +T = 700 + +/**** SPACE-TIME ****/ +Nx = 101 +Nz = 101 +Nt = 50 +xmin =-1e2 +zmin =-1e2 +xmax = 1e2 +zmax = 1e2 +dt = 1e7 +constant_dt = 0 +Courant = 0.2 + +/**** SWITCHES ****/ +melting = 1 +mechanical = 1 +thermal = 1 +shear_heating = 1 +adiab_heating = 2 +advection = 1 +eta_average = 1 +stress_rotation = 1 +compressible = 1 +elastic = 1 +RK = 4 +periodic_x = 0 +pure_shear_ALE = 0 +line_search = 1 +free_surface = 0 +free_surface_stab = 0 +initial_cooling = 0 +subgrid_diffusion = 2 +finite_strain = 0 + +/*** CHEMICAL ***/ +chemical_diffusion = 0 / +no_return = 0 +density_variations = 1 / renamed in MD7.0 (VolChangeReac) +unsplit_diff_reac = 0 + +/**** LINEAR ITERATIONS ****/ +lin_solver = 2 +diag_scaling = 0 +penalty = 1e2 +preconditioner = 1 +lin_abs_div = 1e-10 +lin_rel_div = 1e-10 +lin_abs_mom = 1e-10 / momentum tolerance (new in MD7.0) +lin_rel_mom = 1e-10 + +/**** NON-LINEAR ITERATIONS ****/ +Newton = 1 +let_res_grow = 0 +line_search_min = 0.0 +Picard2Newton = 1 +Picard2Newton_tol = 2e-1 +nit_max = 30 +rel_tol_KSP = 5e-4 +nonlin_abs_mom = 1e-9 +nonlin_abs_div = 1e-9 +nonlin_rel_mom = 1e-9 +nonlin_rel_div = 1e-9 +min_eta = 1e10 +max_eta = 1e30 +safe_mode = 1 +safe_dt_div = 2.0 +max_num_stag = 10 +IncrementalUpdateGrid = 1 +gnuplot_log_res = 0 + +/**** SETUP DEPENDANT ****/ +shear_style = 0 +bkg_strain_rate = 0.0 +bkg_pressure = 1.0e9 +user0 = 1100.0 / temperature [K] +user1 = 3.1558e9 +user2 = 10.0 +user3 = 0 + +/**** GRAVITY ****/ +gx = 0.0000 +gz = 0.0000 + +/**** MAT PROPERTIES ****/ +Nb_phases = 3 + +/**** PHASE 0 ****/ +ID = 0 +density_model = 3 +rho = 2900.00 / container +drho = 0 +alp = 3.2e-5 +bet = 1.25e-11 / (K=80e9) +G = 4.0e10 +Cp = 1050.0 +k = 2.3e-6 / kill diffusion +Qr = 0.0 +C = 100e6 +phi = 0.0 +eta_vp = 5.0e19 +Slim = 500e9 +cstv = 0 / constant visc law +pwlv = 1 / disloc. creep +linv = 0 / diff. creep +gbsv = 0 / grain boundary sliding +expv = 0 / peierls creep +gsel = 0 / grain size evo. +eta0 = 1.0e25 +npwl = 1.0 +Qpwl = 0 +Pr = 1.0e80 +dPr = 700.0e6 +tau_kin = 3.1558e9 +k_chem = 5.0e-26 + +/**** PHASE 1 ****/ +ID = 1 +melt = 10 +density_model = 5 +rho = 2900.00 / migmatite +drho = 300.0 +alp = 3.2e-5 +bet = 1.25e-11 / (K=80e9) +G = 4.0e9 +Cp = 1050.0 +k = 2.3e-6 / kill diffusion +Qr = 0.0 +C = 50e6 +phi = 0.0 +eta_vp = 5.0e19 +Slim = 500e9 +cstv = 0 / constant visc law +pwlv = 1 / disloc. creep +linv = 0 / diff. creep +gbsv = 0 / grain boundary sliding +expv = 0 / peierls creep +gsel = 0 / grain size evo. +eta0 = 1.0e20 +npwl = 1.0 +Qpwl = 0 +Pr = 1.5e9 +dPr = 700.0e6 +tau_kin = 6e7 +k_chem = 5.0e-26 + +/**** PHASE 2 ****/ +ID = 2 +density_model = 3 +rho = 2900.00 / peridotite inclusion +drho = 0 +alp = 3.2e-5 +bet = 1.25e-11 / (K=80e9) +G = 4.0e10 +Cp = 1050.0 +k = 2.3e-6 / kill diffusion +Qr = 0.0 +C = 100e6 +phi = 0.0 +eta_vp = 5.0e19 +Slim = 500e9 +cstv = 0 / constant visc law +pwlv = 1 / disloc. creep +linv = 0 / diff. creep +gbsv = 0 / grain boundary sliding +expv = 0 / peierls creep +gsel = 0 / grain size evo. +eta0 = 1.0e25 +npwl = 1.0 +Qpwl = 0 +Pr = 1.0e80 +dPr = 700.0e6 +tau_kin = 3.1558e9 +k_chem = 5.0e-26 + +/**** DEFMAPS ****/ +nT = 51 / Temperature resolution [] +nE = 51 / Strain rate resolution [] +nd = 2 / Grain size resolution [] +Tmin = 240 / Temperature minimum [°C] +Tmax = 2000 / Temperature maximum [°C] +Emin = -50 / Strain rate minimum log_10 [1/s] +Emax = 5 / Strain rate maximum log_10 [1/s] +dmin = -7 / Grain size minimum log_10 [m] +dmax = -2 / Grain size maximum log_10 [m] +Pn = 1e9 / Pressure [Pa] + +/**** PARTICLES ****/ +Nx_part = 4 +Nz_part = 4 +min_part_cell = 16 + diff --git a/SETS/Multilayers.txt b/SETS/Multilayers.txt index ecbd7df2..105aac46 100644 --- a/SETS/Multilayers.txt +++ b/SETS/Multilayers.txt @@ -90,7 +90,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 @@ -115,7 +115,7 @@ ani_fac_e = 1.0 ID = 1 rho = 2700.00 / inclusion G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 diff --git a/SETS/Multilayers_aniso.txt b/SETS/Multilayers_aniso.txt index d9d800f9..58a6b736 100644 --- a/SETS/Multilayers_aniso.txt +++ b/SETS/Multilayers_aniso.txt @@ -98,7 +98,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 @@ -123,7 +123,7 @@ ani_fac_e = 1.0 ID = 1 rho = 2700.00 / layer G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 diff --git a/SETS/NeckinReviewSystematics/NeckingReview_NR01.txt b/SETS/NeckinReviewSystematics/NeckingReview_NR01.txt new file mode 100755 index 00000000..131d2659 --- /dev/null +++ b/SETS/NeckinReviewSystematics/NeckingReview_NR01.txt @@ -0,0 +1,194 @@ +/**** RESTART ****/ +istep = 02500 +irestart = 1 + +/**** OUTPUT FILES ****/ +writer = 1 +writer_step = 10 +writer_markers = 0 +writer_debug = 0 + +/**** SCALES ****/ Scaling parameters for +eta = 1.e+22 /viscosity +L = 30.e4 /length +V = 1.5e-8 /velocity +T = 1.e+02 /temperature + +/**** SPACE-TIME ****/ +Nx = 911 +Nz = 501 +Nt = 3500 +xmin = -150.000000e3 +xmax = 200.000000e3 +zmin = -160.000000e3 +zmax = 10.000000e3 +dt = 1.2623e+11 +Courant = 0.3 +penalty = 1e3 +eta_average = 1 +interp_stencil = 9 + +/**** SWITCHES ****/ +mechanical = 1 +constant_dt = 0 +RK = 4 +periodic_x = 0 +pure_shear_ALE = 0 /1: box stretched at constant strain rate; -1 box of constant size +elastic = 1 +thermal = 1 +free_surface = 1 +free_surface_stab = 1 +initial_cooling = 1 +subgrid_diffusion = 2 +shear_heating = 1 +adiab_heating = 0 +surface_processes = 1 /0 = none; 1 = diffusion only; 2 = fills instantaneously the basin up to the base level; 3 = diffusion + source term +surf_diff = 5.0e-6 /topography diffusion coefficient +surf_ised1 = 4 /sediment phase indices +surf_ised2 = 5 +surf_sedirate = 0.0 / sedimentation rate [m/s]:3.1688e-12 <-> 0.01 cm/yr +surf_baselev = 0.0e3 / base level for sedimentation +track_T_P_x_z = 1 / initial P and T field record +polar = 0 +anisotropy = 0 + +/**** SETUP DEPENDANT ****/ +marker_noise = 1 +bkg_strain_rate = -0.333e-15 /Background strain rate [s-1] => extension rate = 1 cm/yr +user0 = 0.0e3 /Radius of perturbation [m] +user1 = 155.0e3 /Initial lithosphere thickness [m] +user2 = 35.0e3 /Initial crust thickness [m] +user3 = -2.0e3 /Initial basin amplitude [m] +user4 = 25e3 /lateral shift of pertubation +user5 = 0 +user6 = 0 +user7 = 0 + +/**** GRAVITY ****/ +gx = 0.0000 +gz = -9.81 + +/**** PHASE PROPERTIES ****/ +Nb_phases = 4 + +ID = 0 +rho = 2800.00 / Upper Crust - Westerly granite +G = 1.0e10 +Cp = 1050.0 +k = 2.5 +Qr = 0.55e-6 +C = 5.0e7 +phi = 30.0 +Slim = 500.0e9 +alp = 32.0e-6 +bet = 1.5e-11 +cstv = 0 +pwlv = 10 +linv = 0 +gbsv = 0 +expv = 0 +aniso_factor = 1.0 +aniso_angle = 45 +coh_soft = 1 +Ce = 1e6 +plss = 0.5 +plse = 1.5 +eta_vp = 22.5e20 + +ID = 1 +rho = 2800.00 / Lower crust +G = 1.0e10 +Cp = 1050.0 +k = 2.5 +Qr = 0.55e-6 +C = 5.0e7 +phi = 30.0 +Slim = 500.0e9 +alp = 32.0e-6 +bet = 1.5e-11 +cstv = 0 +pwlv = 10 +linv = 0 +gbsv = 0 +expv = 0 +Ce = 1e6 +cohe = 1e6 +plss = 0.5 +plse = 1.5 +eta_vp = 22.5e20 + +ID = 2 +rho = 3330.00 / lithospheric mantle - Dry Olivine +alp = 32.0e-6 +bet = 1.5e-11 +G = 1.0e10 +Cp = 1050.0 +k = 3.0 +Qr = 0.0 +C = 5.0e7 +phi = 30.0 +Slim = 500.0e9 +cstv = 0 +pwlv = 40 +linv = 40 +gbsv = 0 +expv = 40 +Ce = 1e6 +cohe = 1e6 +plss = 0.5 +plse = 1.5 +eta_vp = 22.5e20 + +ID = 3 +rho = 3330.00 / asthenosphere +alp = 32.0e-6 +bet = 1.5e-11 +G = 1.0e10 +Cp = 1050.0 +k = 3.0 +Qr = 0.0 +C = 5.0e7 +phi = 30.0 +Slim = 500.0e9 +cstv = 0 +pwlv = 40 +linv = 40 +gbsv = 0 +expv = 40 +coh_soft = 1 +Ce = 1e6 +plss = 0.5 +plse = 1.5 +eta_vp = 22.5e20 + +/**** DEFMAPS ****/ +nT = 200 / Temperature resolution [] +nE = 200 / Strain rate resolution [] +nd = 6 / Grain size resolution [] +Tmin = 127.0 / Temperature minimum [°C] +Tmax = 1827.0 / Temperature maximum [°C] +Emin = -50 / Strain rate minimum log_10 [1/s] +Emax = 5 / Strain rate maximum log_10 [1/s] +dmin = -7 / Grain size minimum log_10 [m] +dmax = -2 / Grain size maximum log_10 [m] +Pn = 1.0e9 / Pressure [Pa] + +/**** PARTICLES ****/ +Nx_part = 4 +Nz_part = 4 +min_part_cell = 16 + +/**** NON-LINEAR ITERATIONS ****/ +Newton = 1 / set to 1 only for accurate/production runs +line_search = 1 / same +nit_max = 15 / more than 1 for accurate/production runs +rel_tol_KSP = 1e-4 +let_res_grow = 0 +line_search_min = 0.0 +Picard2Newton = 1 +Picard2Newton_tol = 1e-1 +diag_scaling = 0 +nonlin_abs_mom = 1e-9 +nonlin_rel_mom = 1e-9 +nonlin_abs_div = 1e-9 +nonlin_rel_div = 1e-9 diff --git a/SETS/NeckinReviewSystematics/NeckingReview_NR03.txt b/SETS/NeckinReviewSystematics/NeckingReview_NR03.txt new file mode 100755 index 00000000..534fe651 --- /dev/null +++ b/SETS/NeckinReviewSystematics/NeckingReview_NR03.txt @@ -0,0 +1,194 @@ +/**** RESTART ****/ +istep = 02000 +irestart = 0 + +/**** OUTPUT FILES ****/ +writer = 1 +writer_step = 10 +writer_markers = 0 +writer_debug = 0 + +/**** SCALES ****/ Scaling parameters for +eta = 1.e+22 /viscosity +L = 30.e4 /length +V = 1.5e-8 /velocity +T = 1.e+02 /temperature + +/**** SPACE-TIME ****/ +Nx = 911 +Nz = 501 +Nt = 2500 +xmin = -150.000000e3 +xmax = 200.000000e3 +zmin = -160.000000e3 +zmax = 10.000000e3 +dt = 1.2623e+11 +Courant = 0.3 +penalty = 1e3 +eta_average = 1 +interp_stencil = 9 + +/**** SWITCHES ****/ +mechanical = 1 +constant_dt = 0 +RK = 4 +periodic_x = 0 +pure_shear_ALE = 0 /1: box stretched at constant strain rate; -1 box of constant size +elastic = 1 +thermal = 1 +free_surface = 1 +free_surface_stab = 1 +initial_cooling = 1 +subgrid_diffusion = 2 +shear_heating = 1 +adiab_heating = 0 +surface_processes = 1 /0 = none; 1 = diffusion only; 2 = fills instantaneously the basin up to the base level; 3 = diffusion + source term +surf_diff = 5.0e-6 /topography diffusion coefficient +surf_ised1 = 4 /sediment phase indices +surf_ised2 = 5 +surf_sedirate = 0.0 / sedimentation rate [m/s]:3.1688e-12 <-> 0.01 cm/yr +surf_baselev = 0.0e3 / base level for sedimentation +track_T_P_x_z = 1 / initial P and T field record +polar = 0 +anisotropy = 0 + +/**** SETUP DEPENDANT ****/ +marker_noise = 1 +bkg_strain_rate = -3e-15 /Background strain rate [s-1] => extension rate = 1 cm/yr +user0 = 0.0e3 /Radius of perturbation [m] +user1 = 155.0e3 /Initial lithosphere thickness [m] +user2 = 35.0e3 /Initial crust thickness [m] +user3 = -2.0e3 /Initial basin amplitude [m] +user4 = 25e3 /lateral shift of pertubation +user5 = 0 +user6 = 0 +user7 = 0 + +/**** GRAVITY ****/ +gx = 0.0000 +gz = -9.81 + +/**** PHASE PROPERTIES ****/ +Nb_phases = 4 + +ID = 0 +rho = 2800.00 / Upper Crust - Westerly granite +G = 1.0e10 +Cp = 1050.0 +k = 2.5 +Qr = 0.55e-6 +C = 5.0e7 +phi = 30.0 +Slim = 500.0e9 +alp = 32.0e-6 +bet = 1.5e-11 +cstv = 0 +pwlv = 10 +linv = 0 +gbsv = 0 +expv = 0 +aniso_factor = 1.0 +aniso_angle = 45 +coh_soft = 1 +Ce = 1e6 +plss = 0.5 +plse = 1.5 +eta_vp = 2.5e20 + +ID = 1 +rho = 2800.00 / Lower crust +G = 1.0e10 +Cp = 1050.0 +k = 2.5 +Qr = 0.55e-6 +C = 5.0e7 +phi = 30.0 +Slim = 500.0e9 +alp = 32.0e-6 +bet = 1.5e-11 +cstv = 0 +pwlv = 10 +linv = 0 +gbsv = 0 +expv = 0 +Ce = 1e6 +cohe = 1e6 +plss = 0.5 +plse = 1.5 +eta_vp = 2.5e20 + +ID = 2 +rho = 3330.00 / lithospheric mantle - Dry Olivine +alp = 32.0e-6 +bet = 1.5e-11 +G = 1.0e10 +Cp = 1050.0 +k = 3.0 +Qr = 0.0 +C = 5.0e7 +phi = 30.0 +Slim = 500.0e9 +cstv = 0 +pwlv = 40 +linv = 40 +gbsv = 0 +expv = 40 +Ce = 1e6 +cohe = 1e6 +plss = 0.5 +plse = 1.5 +eta_vp = 2.5e20 + +ID = 3 +rho = 3330.00 / asthenosphere +alp = 32.0e-6 +bet = 1.5e-11 +G = 1.0e10 +Cp = 1050.0 +k = 3.0 +Qr = 0.0 +C = 5.0e7 +phi = 30.0 +Slim = 500.0e9 +cstv = 0 +pwlv = 40 +linv = 40 +gbsv = 0 +expv = 40 +coh_soft = 1 +Ce = 1e6 +plss = 0.5 +plse = 1.5 +eta_vp = 2.5e20 + +/**** DEFMAPS ****/ +nT = 200 / Temperature resolution [] +nE = 200 / Strain rate resolution [] +nd = 6 / Grain size resolution [] +Tmin = 127.0 / Temperature minimum [°C] +Tmax = 1827.0 / Temperature maximum [°C] +Emin = -50 / Strain rate minimum log_10 [1/s] +Emax = 5 / Strain rate maximum log_10 [1/s] +dmin = -7 / Grain size minimum log_10 [m] +dmax = -2 / Grain size maximum log_10 [m] +Pn = 1.0e9 / Pressure [Pa] + +/**** PARTICLES ****/ +Nx_part = 4 +Nz_part = 4 +min_part_cell = 16 + +/**** NON-LINEAR ITERATIONS ****/ +Newton = 1 / set to 1 only for accurate/production runs +line_search = 1 / same +nit_max = 15 / more than 1 for accurate/production runs +rel_tol_KSP = 1e-4 +let_res_grow = 0 +line_search_min = 0.0 +Picard2Newton = 1 +Picard2Newton_tol = 1e-1 +diag_scaling = 0 +nonlin_abs_mom = 1e-9 +nonlin_rel_mom = 1e-9 +nonlin_abs_div = 1e-9 +nonlin_rel_div = 1e-9 diff --git a/SETS/NeckinReviewSystematics/NeckingReview_NR07.txt b/SETS/NeckinReviewSystematics/NeckingReview_NR07.txt new file mode 100755 index 00000000..a127783b --- /dev/null +++ b/SETS/NeckinReviewSystematics/NeckingReview_NR07.txt @@ -0,0 +1,194 @@ +/**** RESTART ****/ +istep = 04500 +irestart = 1 + +/**** OUTPUT FILES ****/ +writer = 1 +writer_step = 10 +writer_markers = 0 +writer_debug = 0 + +/**** SCALES ****/ Scaling parameters for +eta = 1.e+22 /viscosity +L = 30.e4 /length +V = 1.5e-8 /velocity +T = 1.e+02 /temperature + +/**** SPACE-TIME ****/ +Nx = 911 +Nz = 501 +Nt = 5000 +xmin = -150.000000e3 +xmax = 200.000000e3 +zmin = -160.000000e3 +zmax = 10.000000e3 +dt = 1.2623e+11 +Courant = 0.3 +penalty = 1e3 +eta_average = 1 +interp_stencil = 9 + +/**** SWITCHES ****/ +mechanical = 1 +constant_dt = 0 +RK = 4 +periodic_x = 0 +pure_shear_ALE = 0 /1: box stretched at constant strain rate; -1 box of constant size +elastic = 1 +thermal = 1 +free_surface = 1 +free_surface_stab = 1 +initial_cooling = 1 +subgrid_diffusion = 2 +shear_heating = 1 +adiab_heating = 0 +surface_processes = 1 /0 = none; 1 = diffusion only; 2 = fills instantaneously the basin up to the base level; 3 = diffusion + source term +surf_diff = 5.0e-6 /topography diffusion coefficient +surf_ised1 = 4 /sediment phase indices +surf_ised2 = 5 +surf_sedirate = 0.0 / sedimentation rate [m/s]:3.1688e-12 <-> 0.01 cm/yr +surf_baselev = 0.0e3 / base level for sedimentation +track_T_P_x_z = 1 / initial P and T field record +polar = 0 +anisotropy = 0 + +/**** SETUP DEPENDANT ****/ +marker_noise = 1 +bkg_strain_rate = -0.333e-15 /Background strain rate [s-1] => extension rate = 1 cm/yr +user0 = 0.0e3 /Radius of perturbation [m] +user1 = 92.5e3 /Initial lithosphere thickness [m] +user2 = 35.0e3 /Initial crust thickness [m] +user3 = -2.0e3 /Initial basin amplitude [m] +user4 = 25e3 /lateral shift of pertubation +user5 = 0 +user6 = 0 +user7 = 0 + +/**** GRAVITY ****/ +gx = 0.0000 +gz = -9.81 + +/**** PHASE PROPERTIES ****/ +Nb_phases = 4 + +ID = 0 +rho = 2800.00 / Upper Crust - Westerly granite +G = 1.0e10 +Cp = 1050.0 +k = 2.5 +Qr = 0.55e-6 +C = 5.0e7 +phi = 30.0 +Slim = 500.0e9 +alp = 32.0e-6 +bet = 1.5e-11 +cstv = 0 +pwlv = 10 +linv = 0 +gbsv = 0 +expv = 0 +aniso_factor = 1.0 +aniso_angle = 45 +coh_soft = 1 +Ce = 1e6 +plss = 0.5 +plse = 1.5 +eta_vp = 22.5e20 + +ID = 1 +rho = 2800.00 / Lower crust +G = 1.0e10 +Cp = 1050.0 +k = 2.5 +Qr = 0.55e-6 +C = 5.0e7 +phi = 30.0 +Slim = 500.0e9 +alp = 32.0e-6 +bet = 1.5e-11 +cstv = 0 +pwlv = 10 +linv = 0 +gbsv = 0 +expv = 0 +Ce = 1e6 +cohe = 1e6 +plss = 0.5 +plse = 1.5 +eta_vp = 22.5e20 + +ID = 2 +rho = 3330.00 / lithospheric mantle - Dry Olivine +alp = 32.0e-6 +bet = 1.5e-11 +G = 1.0e10 +Cp = 1050.0 +k = 3.0 +Qr = 0.0 +C = 5.0e7 +phi = 30.0 +Slim = 500.0e9 +cstv = 0 +pwlv = 40 +linv = 40 +gbsv = 0 +expv = 40 +Ce = 1e6 +cohe = 1e6 +plss = 0.5 +plse = 1.5 +eta_vp = 22.5e20 + +ID = 3 +rho = 3330.00 / asthenosphere +alp = 32.0e-6 +bet = 1.5e-11 +G = 1.0e10 +Cp = 1050.0 +k = 3.0 +Qr = 0.0 +C = 5.0e7 +phi = 30.0 +Slim = 500.0e9 +cstv = 0 +pwlv = 40 +linv = 40 +gbsv = 0 +expv = 40 +coh_soft = 1 +Ce = 1e6 +plss = 0.5 +plse = 1.5 +eta_vp = 22.5e20 + +/**** DEFMAPS ****/ +nT = 200 / Temperature resolution [] +nE = 200 / Strain rate resolution [] +nd = 6 / Grain size resolution [] +Tmin = 127.0 / Temperature minimum [°C] +Tmax = 1827.0 / Temperature maximum [°C] +Emin = -50 / Strain rate minimum log_10 [1/s] +Emax = 5 / Strain rate maximum log_10 [1/s] +dmin = -7 / Grain size minimum log_10 [m] +dmax = -2 / Grain size maximum log_10 [m] +Pn = 1.0e9 / Pressure [Pa] + +/**** PARTICLES ****/ +Nx_part = 4 +Nz_part = 4 +min_part_cell = 16 + +/**** NON-LINEAR ITERATIONS ****/ +Newton = 1 / set to 1 only for accurate/production runs +line_search = 1 / same +nit_max = 15 / more than 1 for accurate/production runs +rel_tol_KSP = 1e-4 +let_res_grow = 0 +line_search_min = 0.0 +Picard2Newton = 1 +Picard2Newton_tol = 1e-1 +diag_scaling = 0 +nonlin_abs_mom = 1e-9 +nonlin_rel_mom = 1e-9 +nonlin_abs_div = 1e-9 +nonlin_rel_div = 1e-9 diff --git a/SETS/NeckinReviewSystematics/NeckingReview_NR09.txt b/SETS/NeckinReviewSystematics/NeckingReview_NR09.txt new file mode 100755 index 00000000..1371a7f2 --- /dev/null +++ b/SETS/NeckinReviewSystematics/NeckingReview_NR09.txt @@ -0,0 +1,198 @@ +/**** RESTART ****/ +istep = 00070 +irestart = 0 + +/**** OUTPUT FILES ****/ +writer = 1 +writer_step = 10 +writer_markers = 0 +writer_debug = 0 + +/**** SCALES ****/ Scaling parameters for +eta = 1.e+22 /viscosity +L = 30.e4 /length +V = 1.5e-8 /velocity +T = 1.e+02 /temperature + +/**** SPACE-TIME ****/ +Nx = 911 +Nz = 501 +Nt = 2500 +xmin = -150.000000e3 +xmax = 200.000000e3 +zmin = -160.000000e3 +zmax = 10.000000e3 +dt = 1.2623e+11 +Courant = 0.3 +penalty = 1e3 +eta_avg = 1 +itp_stencil = 9 + +/**** SWITCHES ****/ +ismechanical = 1 +dt_constant = 0 +RK = 4 +isperiodic_x = 0 +ispureshear_ALE = 0 /1: box stretched at constant strain rate; -1 box of constant size +isinertial = 0 +iselastic = 1 +isthermal = 1 +isPl_soft = 0 +free_surf = 1 +free_surf_stab = 1 +eqn_state = 1 +thermal_eq = 1 +subgrid_diff = 2 +shear_heat = 1 +adiab_heat = 0 +surf_remesh = 1 +surf_processes = 1 /0 = none; 1 = diffusion only; 2 = fills instantaneously the basin up to the base level; 3 = diffusion + source term +surf_diff = 5.0e-6 /topography diffusion coefficient +surf_ised1 = 4 /sediment phase indices +surf_ised2 = 5 +surf_sedirate = 0.0 / sedimentation rate [m/s]:3.1688e-12 <-> 0.01 cm/yr +surf_baselev = 0.0e3 / base level for sedimentation +rec_T_P_x_z = 1 / initial P and T field record +polar = 0 +aniso = 0 + +/**** SETUP DEPENDANT ****/ +noise_bg = 1 +EpsBG = -3e-15 /Background strain rate [s-1] => extension rate = 1 cm/yr +user0 = 0.0e3 /Radius of perturbation [m] +user1 = 92.5e3 /Initial lithosphere thickness [m] +user2 = 35.0e3 /Initial crust thickness [m] +user3 = -2.0e3 /Initial basin amplitude [m] +user4 = 25e3 /lateral shift of pertubation +user5 = 0 +user6 = 0 +user7 = 0 + +/**** GRAVITY ****/ +gx = 0.0000 +gz = -9.81 + +/**** PHASE PROPERTIES ****/ +Nb_phases = 4 + +ID = 0 +rho = 2800.00 / Upper Crust - Westerly granite +G = 1.0e10 +Cp = 1050.0 +k = 2.5 +Qr = 0.55e-6 +C = 5.0e7 +phi = 30.0 +Slim = 500.0e9 +alp = 32.0e-6 +bet = 1.5e-11 +cstv = 0 +pwlv = 10 +linv = 0 +gbsv = 0 +expv = 0 +aniso_factor = 1.0 +aniso_angle = 45 +coh_soft = 1 +Ce = 1e6 +plss = 0.5 +plse = 1.5 +eta_vp = 2.5e20 + +ID = 1 +rho = 2800.00 / Lower crust +G = 1.0e10 +Cp = 1050.0 +k = 2.5 +Qr = 0.55e-6 +C = 5.0e7 +phi = 30.0 +Slim = 500.0e9 +alp = 32.0e-6 +bet = 1.5e-11 +cstv = 0 +pwlv = 10 +linv = 0 +gbsv = 0 +expv = 0 +Ce = 1e6 +cohe = 1e6 +plss = 0.5 +plse = 1.5 +eta_vp = 2.5e20 + +ID = 2 +rho = 3330.00 / lithospheric mantle - Dry Olivine +alp = 32.0e-6 +bet = 1.5e-11 +G = 1.0e10 +Cp = 1050.0 +k = 3.0 +Qr = 0.0 +C = 5.0e7 +phi = 30.0 +Slim = 500.0e9 +cstv = 0 +pwlv = 40 +linv = 40 +gbsv = 0 +expv = 40 +Ce = 1e6 +cohe = 1e6 +plss = 0.5 +plse = 1.5 +eta_vp = 2.5e20 + +ID = 3 +rho = 3330.00 / asthenosphere +alp = 32.0e-6 +bet = 1.5e-11 +G = 1.0e10 +Cp = 1050.0 +k = 3.0 +Qr = 0.0 +C = 5.0e7 +phi = 30.0 +Slim = 500.0e9 +cstv = 0 +pwlv = 40 +linv = 40 +gbsv = 0 +expv = 40 +coh_soft = 1 +Ce = 1e6 +plss = 0.5 +plse = 1.5 +eta_vp = 2.5e20 + +/**** DEFMAPS ****/ +nT = 200 / Temperature resolution [] +nE = 200 / Strain rate resolution [] +nd = 6 / Grain size resolution [] +Tmin = 127.0 / Temperature minimum [°C] +Tmax = 1827.0 / Temperature maximum [°C] +Emin = -50 / Strain rate minimum log_10 [1/s] +Emax = 5 / Strain rate maximum log_10 [1/s] +dmin = -7 / Grain size minimum log_10 [m] +dmax = -2 / Grain size maximum log_10 [m] +Pn = 1.0e9 / Pressure [Pa] + +/**** PARTICLES ****/ +Nx_part = 4 +Nz_part = 4 +min_part_cell = 16 + +/**** NON-LINEAR ITERATIONS ****/ +Newton = 1 / set to 1 only for accurate/production runs +line_search = 1 / same +nit_max = 15 / more than 1 for accurate/production runs +rel_tol_KSP = 1e-4 +let_res_grow = 0 +line_search_min = 0.0 +Picard2Newton = 1 +Pic2NewtCond = 1e-1 +diag_scaling = 0 +abs_tol_u = 1e-9 +rel_tol_u = 1e-9 +abs_tol_p = 1e-9 +rel_tol_p = 1e-9 diff --git a/SETS/NeckingReview.c b/SETS/NeckingReview.c index c0edec52..f4145a20 100755 --- a/SETS/NeckingReview.c +++ b/SETS/NeckingReview.c @@ -1,49 +1,75 @@ #include "math.h" #include "mdoodz.h" #include "stdbool.h" -#include "stdio.h" #include "stdlib.h" +#include "stdio.h" -double SetSurfaceZCoord(MdoodzInput *instance, double x_coord) { - const double TopoLevel = -0.0e3 / instance->scaling.L; - return TopoLevel; +int SetDualPhase(MdoodzInput *input, Coordinates coordinate, int phase) { + + int dual_phase = phase; + double Lx = input->model.xmax - input->model.xmin; + double Lz = input->model.zmax - input->model.zmin; + double Ax, Az; + + // Set checkerboard for phase 0 + Az = sin( 48.0*2.0*M_PI*coordinate.z / Lz ); + if ( Az>0.0 && dual_phase==0 ) { + dual_phase += input->model.Nb_phases; + } + + // Set checkerboard for phase 1 + Az = sin( 48.0*2.0*M_PI*coordinate.z / Lz ); + if ( Az>0.0 && dual_phase==1 ) { + dual_phase += input->model.Nb_phases; + } + + // Set checkerboard for phase 2 + Az = sin( 48.0*2.0*M_PI*coordinate.z / Lz ); + if ( Az>0.0 && dual_phase==2 ) { + dual_phase += input->model.Nb_phases; + } + + return dual_phase; } -double SetNoise(MdoodzInput *instance, Coordinates coordinates, int phase) { - const double x = coordinates.x - instance->model.user4 / instance->scaling.L; - const double z = coordinates.z; + +double SetSurfaceZCoord(MdoodzInput *instance, double x_coord) { + const double TopoLevel = -0.0e3 / instance->scaling.L; const double basin_width = 30.0e3 / instance->scaling.L; - const double noise = ((double) rand() / (double) RAND_MAX) - 0.5; - const double filter_x = exp(-(x * x) / (2.0 * basin_width * basin_width)); - const double filter_z = exp(-(z * z) / (2.0 * basin_width * basin_width * 4.0)); - return noise * filter_x * filter_z; + const double h_pert = instance->model.user3 / instance->scaling.L; + const double x = x_coord - instance->model.user4 / instance->scaling.L; + return TopoLevel + h_pert * exp( - (x*x) / (2.0*basin_width*basin_width) ); } -static Ellipse GetMicaEllipse(double centreX, double centreZ) { - return (Ellipse) { - .radiusZ = 20e3, - .radiusX = 10e3, - .centreX = centreX, - .centreZ = centreZ, - .angle = 0, - }; +double SetNoise(MdoodzInput *instance, Coordinates coordinates, int phase) { + const double x = coordinates.x - instance->model.user4 / instance->scaling.L; + const double z = coordinates.z; + const double basin_width = 30.0e3 / instance->scaling.L; + const double noise = ((double) rand() / (double) RAND_MAX) - 0.5; + const double filter_x = exp( - (x*x)/ (2.0*basin_width*basin_width) ); + const double filter_z = exp( - (z*z)/ (2.0*basin_width*basin_width*4.0) ); + return noise * filter_x * filter_z; } int SetPhase(MdoodzInput *instance, Coordinates coordinates) { - // remove perturbation - // moho temperature should be around 500 degrees - // add weak inclusion - const double lithosphereThickness = instance->model.user1 / instance->scaling.L; - const double crustThickness = instance->model.user2 / instance->scaling.L; - const double mohoLevel = -crustThickness; - const bool isBelowLithosphere = coordinates.z < -lithosphereThickness; - const bool isAboveMoho = coordinates.z > mohoLevel; - const bool isMicaEllipse = IsEllipseCoordinates(coordinates, GetMicaEllipse(0e3, -45e3), instance->scaling.L); - - if (isMicaEllipse) { + const double basin_width = 30.0e3 / instance->scaling.L; + const double h_pert = instance->model.user3 / instance->scaling.L; + const double lithosphereThickness = instance->model.user1 / instance->scaling.L; + const double crustThickness = instance->model.user2 / instance->scaling.L; + const double perturbationAmplitude = instance->model.user3 / instance->scaling.L; + const double x = coordinates.x - instance->model.user4 / instance->scaling.L; + const double mohoLevel = -crustThickness + 0*h_pert * exp( - (x*x) / (2.0*basin_width*basin_width) ); + const bool isBelowLithosphere = coordinates.z < -lithosphereThickness; + const bool isAboveMoho = coordinates.z > mohoLevel; + const bool isLowerCrust = coordinates.z < (mohoLevel + 0.5*crustThickness); + + if (isAboveMoho) { + if (isLowerCrust) { return 1; - } else if (isAboveMoho) { + } + else { return 0; + } } else if (isBelowLithosphere) { return 3; } else { @@ -55,13 +81,13 @@ double SetTemperature(MdoodzInput *instance, Coordinates coordinates) { const double lithosphereThickness = instance->model.user1 / instance->scaling.L; const double surfaceTemperature = 273.15 / instance->scaling.T; const double mantleTemperature = (1330.0 + 273.15) / instance->scaling.T; - - const double Tamp = 50.0 / instance->scaling.T; - const double x = coordinates.x - instance->model.user4 / instance->scaling.L; - const double z = coordinates.z; - const double basin_width = 30.0e3 / instance->scaling.L; - const double filter_x = Tamp * exp(-(x * x) / (2.0 * basin_width * basin_width)); - + + const double Tamp = 50.0 / instance->scaling.T; + const double x = coordinates.x - instance->model.user4 / instance->scaling.L; + const double z = coordinates.z; + const double basin_width = 30.0e3 / instance->scaling.L; + const double filter_x = Tamp * exp( - (x*x)/ (2.0*basin_width*basin_width) ); + const double particleTemperature = ((mantleTemperature - surfaceTemperature) / lithosphereThickness) * (-coordinates.z) + surfaceTemperature; if (particleTemperature > mantleTemperature) { return mantleTemperature + filter_x; @@ -84,17 +110,17 @@ char SetBCPType(MdoodzInput *instance, POSITION position) { } SetBC SetBCT(MdoodzInput *instance, POSITION position, double particleTemperature) { - SetBC bc; - double surface_temperature = zeroC / instance->scaling.T; + SetBC bc; + double surface_temperature = zeroC / instance->scaling.T; double mantle_temperature = (1330. + zeroC) / instance->scaling.T; if (position == S) { bc.type = constant_temperature; - bc.value = mantle_temperature; + bc.value = particleTemperature; } if (position == free_surface || position == N) { bc.type = constant_temperature; bc.value = surface_temperature; - } + } if (position == W || position == E) { bc.type = constant_heatflux; bc.value = 0.; @@ -115,23 +141,24 @@ void AddCrazyConductivity(MdoodzInput *input) { int main(int nargs, char *args[]) { // Input file name char *input_file; - if (nargs < 2) { - asprintf(&input_file, "NeckingReview.txt");// Default - } else { - printf("dodo %s\n", args[1]); - asprintf(&input_file, "%s", args[1]);// Custom + if ( nargs < 2 ) { + asprintf(&input_file, "NeckingReview.txt"); // Default + } + else { + asprintf(&input_file, "%s", args[1]); // Custom } printf("Running MDoodz7.0 using %s\n", input_file); - srand(69);// Force random generator seed for reproducibility + srand(69); // Force random generator seed for reproducibility MdoodzSetup setup = { .BuildInitialTopography = &(BuildInitialTopography_ff){ .SetSurfaceZCoord = SetSurfaceZCoord, }, .SetParticles = &(SetParticles_ff){ - .SetPhase = SetPhase, - .SetTemperature = SetTemperature, - .SetGrainSize = SetGrainSize, - .SetNoise = SetNoise, + .SetPhase = SetPhase, + .SetTemperature = SetTemperature, + .SetGrainSize = SetGrainSize, + // .SetNoise = SetNoise, + .SetDualPhase = SetDualPhase, }, .SetBCs = &(SetBCs_ff){ @@ -145,5 +172,4 @@ int main(int nargs, char *args[]) { }; RunMDOODZ(input_file, &setup); free(input_file); -} - +} \ No newline at end of file diff --git a/SETS/NeckingReview.txt b/SETS/NeckingReview.txt index 24ac4bea..3ca087e9 100755 --- a/SETS/NeckingReview.txt +++ b/SETS/NeckingReview.txt @@ -93,7 +93,7 @@ Nb_phases = 4 ID = 0 rho = 2800.00 / Upper Crust - Westerly granite G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.5 Qr = 0.55e-6 C = 5.0e7 @@ -117,7 +117,7 @@ eta_vp = 5e21 ID = 1 rho = 2800.00 / Lower crust G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.5 Qr = 0.1e-6 C = 5.0e7 @@ -143,7 +143,7 @@ rho = 3330.00 / lithospheric mantle - Dry Olivine alp = 32.0e-6 bet = 1.5e-11 G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 3.0 Qr = 0.0 C = 5.0e7 @@ -166,7 +166,7 @@ rho = 3330.00 / asthenosphere alp = 32.0e-6 bet = 1.5e-11 G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 3.0 Qr = 0.0 C = 5.0e7 diff --git a/SETS/NeckingReviewAniso.txt b/SETS/NeckingReviewAniso.txt index 603d5cb7..520c9d38 100755 --- a/SETS/NeckingReviewAniso.txt +++ b/SETS/NeckingReviewAniso.txt @@ -92,7 +92,7 @@ Nb_phases = 4 ID = 0 rho = 2800.00 / Upper Crust - Westerly granite G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.5 Qr = 1.0e-6 C = 5.0e7 @@ -115,7 +115,7 @@ aniso_angle = 90 ID = 1 rho = 2800.00 / Lower crust G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.5 Qr = 1.0e-6 C = 5.0e7 @@ -140,7 +140,7 @@ rho = 3330.00 / lithospheric mantle - Dry Olivine alp = 32.0e-6 bet = 1.5e-11 G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 3.0 Qr = 0.0 C = 5.0e7 @@ -163,7 +163,7 @@ rho = 3330.00 / asthenosphere alp = 32.0e-6 bet = 1.5e-11 G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 3.0 Qr = 0.0 C = 5.0e7 diff --git a/SETS/NeckingRoman.txt b/SETS/NeckingRoman.txt index 80c3a750..3ef63623 100644 --- a/SETS/NeckingRoman.txt +++ b/SETS/NeckingRoman.txt @@ -92,7 +92,7 @@ Nb_phases = 4 ID = 0 rho = 2800.00 / Upper Crust - Westerly granite G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.5 Qr = 0.55e-6 C = 5.0e7 @@ -116,7 +116,7 @@ eta_vp = 5e21 ID = 1 rho = 2600.00 / Lower crust G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.5 Qr = 0.1e-6 C = 5.0e7 @@ -142,7 +142,7 @@ rho = 3330.00 / lithospheric mantle - Dry Olivine alp = 32.0e-6 bet = 1.5e-11 G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 3.0 Qr = 0.0 C = 5.0e7 @@ -162,7 +162,7 @@ rho = 3330.00 / asthenosphere alp = 32.0e-6 bet = 1.5e-11 G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 3.0 Qr = 0.0 C = 5.0e7 diff --git a/SETS/OceanicCooling.txt b/SETS/OceanicCooling.txt index 14e2b966..297f7311 100644 --- a/SETS/OceanicCooling.txt +++ b/SETS/OceanicCooling.txt @@ -83,7 +83,7 @@ Nb_phases = 7 ID = 0 rho = 2800.00 / Crust G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 1e-6 C = 5e7 @@ -107,7 +107,7 @@ Qpwl = 0 ID = 1 rho = 3300.00 / Mantle lithosphere G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 5e7 @@ -131,7 +131,7 @@ Qpwl = 0 ID = 2 rho = 3300.00 / Asthenosphere G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 5e7 @@ -155,7 +155,7 @@ Qpwl = 0 ID = 3 rho = 2600.00 / Serpentine G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 1e-8 C = 5e6 @@ -179,7 +179,7 @@ Qpwl = 0 ID = 4 rho = 3300.00 / Serpentine with mantle density for weak zones - EARLY SOFTENING G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 1e-8 C = 1e6 @@ -210,7 +210,7 @@ pref_pwl = 0.001 ID = 5 rho = 3300.00 / Serpentine with mantle density for weak zones - DELAYED SOFTENING G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 1e-8 C = 10e6 @@ -241,7 +241,7 @@ pref_pwl = 1 ID = 6 rho = 2800.00 / Crust for microcontinent G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 1e-6 C = 5e7 diff --git a/SETS/PinchSwellGSE.txt b/SETS/PinchSwellGSE.txt index 13ad6ac9..b1c17386 100644 --- a/SETS/PinchSwellGSE.txt +++ b/SETS/PinchSwellGSE.txt @@ -61,7 +61,7 @@ Nb_phases = 2 ID = 0 rho = 2700 / matrix G = 1e10 -Cv = 1000 +Cp = 1000 k = 2.5 Qr = 0 C = 1e90 @@ -83,7 +83,7 @@ gs_ref = 1e-5 ID = 1 rho = 2700 / matrix G = 1e10 -Cv = 1000 +Cp = 1000 k = 2.5 Qr = 0 C = 1e90 diff --git a/SETS/PlasticityLayers.txt b/SETS/PlasticityLayers.txt index 8cf359c8..b0fec396 100644 --- a/SETS/PlasticityLayers.txt +++ b/SETS/PlasticityLayers.txt @@ -99,7 +99,7 @@ Nb_phases = 2 ID = 0 rho = 2850.00 / matrix Granulite G = 4.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 50e6 @@ -131,7 +131,7 @@ density_model = 3 ID = 1 rho = 2850.00 / Dry CPX inclusion G = 4.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 50e6 diff --git a/SETS/QuartzCoesite.txt b/SETS/QuartzCoesite.txt index 3bd31d89..23414500 100644 --- a/SETS/QuartzCoesite.txt +++ b/SETS/QuartzCoesite.txt @@ -82,7 +82,7 @@ Nb_phases = 3 ID = 0 rho = 3295.00 / matrix --- omphacite G = 6e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e7 @@ -109,7 +109,7 @@ density_model = 3 ID = 1 rho = 3577.00 / inclusion 1 - garnet G = 9e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e6 @@ -136,7 +136,7 @@ density_model = 3 ID = 2 rho = 2700.00 / inclusion G = 6e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e7 diff --git a/SETS/QuartzCoesite_Simple.txt b/SETS/QuartzCoesite_Simple.txt index 16f4f428..03ffd4f0 100644 --- a/SETS/QuartzCoesite_Simple.txt +++ b/SETS/QuartzCoesite_Simple.txt @@ -82,7 +82,7 @@ Nb_phases = 3 ID = 1 rho = 2700.00 / matrix --- omphacite G = 4e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e7 @@ -111,7 +111,7 @@ phase_diagram = 9 ID = 0 rho = 3577.00 / inclusion 1 - garnet G = 9e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e7 @@ -138,7 +138,7 @@ density_model = 3 ID = 2 rho = 2700.00 / inclusion G = 4e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e7 diff --git a/SETS/QuartzCoesite_paper.txt b/SETS/QuartzCoesite_paper.txt index e2b58ec8..68a1282f 100644 --- a/SETS/QuartzCoesite_paper.txt +++ b/SETS/QuartzCoesite_paper.txt @@ -81,7 +81,7 @@ Nb_phases = 3 ID = 0 rho = 2700.00 / matrix --- omphacite G = 4e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e7 @@ -110,7 +110,7 @@ phase_diagram = 9 ID = 1 rho = 3577.00 / inclusion 1 - garnet G = 9e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e7 @@ -137,7 +137,7 @@ density_model = 3 ID = 2 rho = 2700.00 / inclusion G = 4e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e7 diff --git a/SETS/QuartzCoesite_paper100.txt b/SETS/QuartzCoesite_paper100.txt index 051b1a21..1bba90f5 100644 --- a/SETS/QuartzCoesite_paper100.txt +++ b/SETS/QuartzCoesite_paper100.txt @@ -81,7 +81,7 @@ Nb_phases = 3 ID = 1 rho = 2700.00 / matrix --- omphacite G = 4e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e7 @@ -110,7 +110,7 @@ phase_diagram = 9 ID = 0 rho = 3577.00 / inclusion 1 - garnet G = 9e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e7 @@ -137,7 +137,7 @@ density_model = 3 ID = 2 rho = 2700.00 / inclusion G = 4e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e7 diff --git a/SETS/QuartzCoesite_paper150.txt b/SETS/QuartzCoesite_paper150.txt index 1522669d..c96bfe00 100644 --- a/SETS/QuartzCoesite_paper150.txt +++ b/SETS/QuartzCoesite_paper150.txt @@ -82,7 +82,7 @@ Nb_phases = 3 ID = 1 rho = 2700.00 / matrix --- omphacite G = 4e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e7 @@ -111,7 +111,7 @@ phase_diagram = 9 ID = 0 rho = 3577.00 / inclusion 1 - garnet G = 9e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e7 @@ -138,7 +138,7 @@ density_model = 3 ID = 2 rho = 2700.00 / inclusion G = 4e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e7 diff --git a/SETS/QuartzCoesite_paper200.txt b/SETS/QuartzCoesite_paper200.txt index 1646140a..7480884b 100644 --- a/SETS/QuartzCoesite_paper200.txt +++ b/SETS/QuartzCoesite_paper200.txt @@ -81,7 +81,7 @@ Nb_phases = 3 ID = 1 rho = 2700.00 / matrix --- omphacite G = 4e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e7 @@ -110,7 +110,7 @@ phase_diagram = 9 ID = 0 rho = 3577.00 / inclusion 1 - garnet G = 9e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e7 @@ -137,7 +137,7 @@ density_model = 3 ID = 2 rho = 2700.00 / inclusion G = 4e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e7 diff --git a/SETS/RifingMelting.c b/SETS/RifingMelting.c new file mode 100755 index 00000000..966ea29a --- /dev/null +++ b/SETS/RifingMelting.c @@ -0,0 +1,175 @@ +#include "math.h" +#include "mdoodz.h" +#include "stdbool.h" +#include "stdlib.h" +#include "stdio.h" + +int SetDualPhase(MdoodzInput *input, Coordinates coordinate, int phase) { + + int dual_phase = phase; + double Lx = input->model.xmax - input->model.xmin; + double Lz = input->model.zmax - input->model.zmin; + double Ax, Az; + + // Set checkerboard for phase 0 + Az = sin( 48.0*2.0*M_PI*coordinate.z / Lz ); + if ( Az>0.0 && dual_phase==0 ) { + dual_phase += input->model.Nb_phases; + } + + // Set checkerboard for phase 1 + Az = sin( 48.0*2.0*M_PI*coordinate.z / Lz ); + if ( Az>0.0 && dual_phase==1 ) { + dual_phase += input->model.Nb_phases; + } + + // Set checkerboard for phase 2 + Az = sin( 48.0*2.0*M_PI*coordinate.z / Lz ); + if ( Az>0.0 && dual_phase==2 ) { + dual_phase += input->model.Nb_phases; + } + + return dual_phase; +} + + +double SetSurfaceZCoord(MdoodzInput *instance, double x_coord) { + const double TopoLevel = -0.0e3 / instance->scaling.L; + const double basin_width = 30.0e3 / instance->scaling.L; + const double h_pert = instance->model.user3 / instance->scaling.L; + const double x = x_coord - instance->model.user4 / instance->scaling.L; + return TopoLevel + h_pert * exp( - (x*x) / (2.0*basin_width*basin_width) ); +} + +double SetNoise(MdoodzInput *instance, Coordinates coordinates, int phase) { + const double x = coordinates.x - instance->model.user4 / instance->scaling.L; + const double z = coordinates.z; + const double basin_width = 30.0e3 / instance->scaling.L; + const double noise = ((double) rand() / (double) RAND_MAX) - 0.5; + const double filter_x = exp( - (x*x)/ (2.0*basin_width*basin_width) ); + const double filter_z = exp( - (z*z)/ (2.0*basin_width*basin_width*4.0) ); + return noise * filter_x * filter_z; +} + +int SetPhase(MdoodzInput *instance, Coordinates coordinates) { + const double basin_width = 30.0e3 / instance->scaling.L; + const double h_pert = instance->model.user3 / instance->scaling.L; + const double lithosphereThickness = instance->model.user1 / instance->scaling.L; + const double crustThickness = instance->model.user2 / instance->scaling.L; + const double perturbationAmplitude = instance->model.user3 / instance->scaling.L; + const double x = coordinates.x - instance->model.user4 / instance->scaling.L; + const double mohoLevel = -crustThickness + 0*h_pert * exp( - (x*x) / (2.0*basin_width*basin_width) ); + const bool isBelowLithosphere = coordinates.z < -lithosphereThickness; + const bool isAboveMoho = coordinates.z > mohoLevel; + const bool isLowerCrust = coordinates.z < (mohoLevel + 0.5*crustThickness); + + if (isAboveMoho) { + if (isLowerCrust) { + return 1; + } + else { + return 0; + } + } else if (isBelowLithosphere) { + return 3; + } else { + return 2; + } +} + +double SetTemperature(MdoodzInput *instance, Coordinates coordinates) { + const double lithosphereThickness = instance->model.user1 / instance->scaling.L; + const double surfaceTemperature = 273.15 / instance->scaling.T; + const double mantleTemperature = (1330.0 + 273.15) / instance->scaling.T; + + const double Tamp = 50.0 / instance->scaling.T; + const double x = coordinates.x - instance->model.user4 / instance->scaling.L; + const double z = coordinates.z; + const double basin_width = 30.0e3 / instance->scaling.L; + const double filter_x = Tamp * exp( - (x*x)/ (2.0*basin_width*basin_width) ); + + const double particleTemperature = ((mantleTemperature - surfaceTemperature) / lithosphereThickness) * (-coordinates.z) + surfaceTemperature; + if (particleTemperature > mantleTemperature) { + return mantleTemperature + filter_x; + } else { + return particleTemperature; + } +} + +double SetGrainSize(MdoodzInput *instance, Coordinates coordinates, int phase) { + const int asthenospherePhase = 3; + return instance->materials.gs_ref[asthenospherePhase]; +} + +char SetBCPType(MdoodzInput *instance, POSITION position) { + if (position == NE || position == NW) { + return 0; + } else { + return -1; + } +} + +SetBC SetBCT(MdoodzInput *instance, POSITION position, double particleTemperature) { + SetBC bc; + double surface_temperature = zeroC / instance->scaling.T; + double mantle_temperature = (1330. + zeroC) / instance->scaling.T; + if (position == S) { + bc.type = constant_temperature; + bc.value = particleTemperature; + } + if (position == free_surface || position == N) { + bc.type = constant_temperature; + bc.value = surface_temperature; + } + if (position == W || position == E) { + bc.type = constant_heatflux; + bc.value = 0.; + } + return bc; +} + +void AddCrazyConductivity(MdoodzInput *input) { + int *asthenospherePhases = (int *) malloc(sizeof(int)); + CrazyConductivity *crazyConductivity = (CrazyConductivity *) malloc(sizeof(CrazyConductivity)); + asthenospherePhases[0] = 3; + crazyConductivity->phases = asthenospherePhases; + crazyConductivity->nPhases = 1; + crazyConductivity->multiplier = 1000; + input->crazyConductivity = crazyConductivity; +} + +int main(int nargs, char *args[]) { + // Input file name + char *input_file; + if ( nargs < 2 ) { + asprintf(&input_file, "RiftingMelting.txt"); // Default + } + else { + asprintf(&input_file, "%s", args[1]); // Custom + } + printf("Running MDoodz7.0 using %s\n", input_file); + srand(69); // Force random generator seed for reproducibility + MdoodzSetup setup = { + .BuildInitialTopography = &(BuildInitialTopography_ff){ + .SetSurfaceZCoord = SetSurfaceZCoord, + }, + .SetParticles = &(SetParticles_ff){ + .SetPhase = SetPhase, + .SetTemperature = SetTemperature, + .SetGrainSize = SetGrainSize, + // .SetNoise = SetNoise, + .SetDualPhase = SetDualPhase, + + }, + .SetBCs = &(SetBCs_ff){ + .SetBCVx = SetPureShearBCVx, + .SetBCVz = SetPureShearBCVz, + .SetBCPType = SetBCPType, + .SetBCT = SetBCT, + }, + .MutateInput = AddCrazyConductivity, + + }; + RunMDOODZ(input_file, &setup); + free(input_file); +} \ No newline at end of file diff --git a/SETS/RiftingBasic.txt b/SETS/RiftingBasic.txt index e6762b0d..dd16ad4b 100755 --- a/SETS/RiftingBasic.txt +++ b/SETS/RiftingBasic.txt @@ -83,7 +83,7 @@ rho = 2700.00 / ref. density alp = 32.0e-6 / thermal expansivity bet = 1e-11 / compressibility G = 1e10 / shear modulus -Cv = 1050 / heat capacity +Cp = 1050 / heat capacity k = 2 / thermal conductivity Qr = 1e-6 / radiogenic heat production C = 1e7 / cohesion @@ -97,7 +97,7 @@ expv = 0 / Pierls viscosity -> database flow_laws.c ID = 1 rho = 2800.00 / Crust - Maryland Diabase G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.5 Qr = 1.0e-6 C = 1.0e7 @@ -118,7 +118,7 @@ rho = 3330.00 / lithospheric mantle - Dry Olivine alp = 32.0e-6 bet = 1.5e-11 G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 3.0 Qr = 0.0 C = 1.0e7 @@ -135,7 +135,7 @@ rho = 3330.00 / asthenosphere (same as 2) alp = 32.0e-6 bet = 1.5e-11 G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 3.0 Qr = 0.0 C = 1.0e7 @@ -150,7 +150,7 @@ expv = 40 ID = 4 rho = 2300.00 / sediments G = 1e10 -Cv = 1050 +Cp = 1050 k = 2 Qr = 0.5e-6 C = 1e7 @@ -172,7 +172,7 @@ Qpwl = 0 ID = 5 rho = 2300.00 / sediments G = 1e10 -Cv = 1050 +Cp = 1050 k = 2 Qr = 0.5e-6 C = 1e7 @@ -196,7 +196,7 @@ rho = 3200.00 / impregnated asthenosphere (less dense and more conductive than alp = 32.0e-6 bet = 1.5e-11 G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 30.0 Qr = 0.0 C = 1.0e7 @@ -211,7 +211,7 @@ expv = 40 ID = 7 rho = 2800.00 / Crust - Dry Quartz G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.5 Qr = 1.0e-6 C = 1.0e7 @@ -230,7 +230,7 @@ aniso_angle = 45 ID = 8 rho = 2800.00 / Crust - Dry Quartz G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.5 Qr = 1.0e-6 C = 1.0e7 diff --git a/SETS/RiftingChenin.txt b/SETS/RiftingChenin.txt index 567a60f3..fe8d2ef9 100755 --- a/SETS/RiftingChenin.txt +++ b/SETS/RiftingChenin.txt @@ -83,7 +83,7 @@ rho = 2700.00 / ref. density alp = 32.0e-6 / thermal expansivity bet = 1e-11 / compressibility G = 1e10 / shear modulus -Cv = 1050 / heat capacity +Cp = 1050 / heat capacity k = 2 / thermal conductivity Qr = 1e-6 / radiogenic heat production C = 1e7 / cohesion @@ -97,7 +97,7 @@ expv = 0 / Pierls viscosity -> database flow_laws.c ID = 1 rho = 2800.00 / Crust - Maryland Diabase G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.5 Qr = 1.0e-6 C = 1.0e7 @@ -118,7 +118,7 @@ rho = 3330.00 / lithospheric mantle - Dry Olivine alp = 32.0e-6 bet = 1.5e-11 G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 3.0 Qr = 0.0 C = 1.0e7 @@ -135,7 +135,7 @@ rho = 3330.00 / asthenosphere (same as 2) alp = 32.0e-6 bet = 1.5e-11 G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 3.0 Qr = 0.0 C = 1.0e7 @@ -150,7 +150,7 @@ expv = 40 ID = 4 rho = 2300.00 / sediments G = 1e10 -Cv = 1050 +Cp = 1050 k = 2 Qr = 0.5e-6 C = 1e7 @@ -172,7 +172,7 @@ Qpwl = 0 ID = 5 rho = 2300.00 / sediments G = 1e10 -Cv = 1050 +Cp = 1050 k = 2 Qr = 0.5e-6 C = 1e7 @@ -196,7 +196,7 @@ rho = 3200.00 / impregnated asthenosphere (less dense and more conductive than alp = 32.0e-6 bet = 1.5e-11 G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 30.0 Qr = 0.0 C = 1.0e7 @@ -211,7 +211,7 @@ expv = 40 ID = 7 rho = 2800.00 / Crust - Dry Quartz G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.5 Qr = 1.0e-6 C = 1.0e7 @@ -230,7 +230,7 @@ aniso_angle = 45 ID = 8 rho = 2800.00 / Crust - Dry Quartz G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.5 Qr = 1.0e-6 C = 1.0e7 diff --git a/SETS/RiftingCheninAniso.txt b/SETS/RiftingCheninAniso.txt index aa7e4e7a..6c12e4d0 100755 --- a/SETS/RiftingCheninAniso.txt +++ b/SETS/RiftingCheninAniso.txt @@ -80,7 +80,7 @@ rho = 2700.00 / ref. density alp = 32.0e-6 / thermal expansivity bet = 1e-11 / compressibility G = 1e10 / shear modulus -Cv = 1050 / heat capacity +Cp = 1050 / heat capacity k = 2 / thermal conductivity Qr = 1e-6 / radiogenic heat production C = 1e7 / cohesion @@ -94,7 +94,7 @@ expv = 0 / Pierls viscosity -> database flow_laws.c ID = 1 rho = 2800.00 / Crust - Maryland Diabase G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.5 Qr = 1.0e-6 C = 1.0e7 @@ -113,7 +113,7 @@ rho = 3330.00 / lithospheric mantle - Dry Olivine alp = 32.0e-6 bet = 1.5e-11 G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 3.0 Qr = 0.0 C = 1.0e7 @@ -130,7 +130,7 @@ rho = 3330.00 / asthenosphere (same as 2) alp = 32.0e-6 bet = 1.5e-11 G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 3.0 Qr = 0.0 C = 1.0e7 @@ -145,7 +145,7 @@ expv = 40 ID = 4 rho = 2300.00 / sediments G = 1e10 -Cv = 1050 +Cp = 1050 k = 2 Qr = 0.5e-6 C = 1e7 @@ -167,7 +167,7 @@ Qpwl = 0 ID = 5 rho = 2300.00 / sediments G = 1e10 -Cv = 1050 +Cp = 1050 k = 2 Qr = 0.5e-6 C = 1e7 @@ -191,7 +191,7 @@ rho = 3200.00 / impregnated asthenosphere (less dense and more conductive than alp = 32.0e-6 bet = 1.5e-11 G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 30.0 Qr = 0.0 C = 1.0e7 @@ -206,7 +206,7 @@ expv = 40 ID = 7 rho = 2800.00 / Crust - Dry Quartz G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.5 Qr = 1.0e-6 C = 1.0e7 @@ -223,7 +223,7 @@ expv = 0 ID = 8 rho = 2800.00 / Crust - Dry Quartz G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.5 Qr = 1.0e-6 C = 1.0e7 diff --git a/SETS/RiftingMelting.txt b/SETS/RiftingMelting.txt new file mode 100755 index 00000000..5c1ce7ec --- /dev/null +++ b/SETS/RiftingMelting.txt @@ -0,0 +1,204 @@ +/**** RESTART ****/ +istep = 00500 +irestart = 0 + +/**** OUTPUT FILES ****/ +writer = 1 +writer_step = 50 +writer_markers = 0 +writer_debug = 0 + +/**** SCALES ****/ Scaling parameters for +eta = 1.e+22 /viscosity +L = 30.e4 /length +V = 1.5e-8 /velocity +T = 1.e+02 /temperature + +/**** SPACE-TIME ****/ +Nx = 311 /911 +Nz = 251 /501 +Nt = 1000 +xmin = -150.000000e3 +xmax = 200.000000e3 +zmin = -160.000000e3 +zmax = 10.000000e3 +dt = 1.2623e+11 +Courant = 0.3 +penalty = 1e4 +eta_average = 1 +interp_stencil = 9 + +/**** SWITCHES ****/ +melting = 1 +mechanical = 1 +constant_dt = 0 +RK = 4 +periodic_x = 0 +pure_shear_ALE = 0 /1: box stretched at constant strain rate; -1 box of constant size +elastic = 1 +compressible = 1 +thermal = 1 +free_surface = 1 +free_surface_stab = 1 +initial_cooling = 1 +subgrid_diffusion = 2 +shear_heating = 1 +adiab_heating = 2 +surface_processes = 1 /0 = none; 1 = diffusion only; 2 = fills instantaneously the basin up to the base level; 3 = diffusion + source term +surf_diff = 5.0e-6 /topography diffusion coefficient +surf_ised1 = 4 /sediment phase indices +surf_ised2 = 5 +surf_sedirate = 0.0 / sedimentation rate [m/s]:3.1688e-12 <-> 0.01 cm/yr +surf_baselev = 0.0e3 / base level for sedimentation +track_T_P_x_z = 1 / initial P and T field record +polar = 0 +anisotropy = 0 + +/**** SETUP DEPENDANT ****/ +marker_noise = 0 +bkg_strain_rate = -3e-15 /Background strain rate [s-1] => extension rate = 1 cm/yr +user0 = 0.0e3 /Radius of perturbation [m] +user1 = 92.5e3 /Initial lithosphere thickness [m] +user2 = 35.0e3 /Initial crust thickness [m] +user3 = -0.0e3 /Initial basin amplitude [m] +user4 = 25e3 /lateral shift of pertubation +user5 = 0 +user6 = 0 +user7 = 0 + +/**** GRAVITY ****/ +gx = 0.0000 +gz = -9.81 + +/**** PHASE PROPERTIES ****/ +Nb_phases = 4 + +ID = 0 +melt = 11 +density_model = 5 +rho = 2800.00 / Upper Crust - Westerly granite +G = 1.0e10 +Cv = 1050.0 +k = 2.5 +Qr = 1.00e-6 /0.55e-6 +C = 5.0e7 +phi = 30.0 +Slim = 500.0e9 +alp = 32.0e-6 +bet = 1.5e-11 +cstv = 0 +pwlv = 10 +linv = 0 +gbsv = 0 +expv = 0 +aniso_factor = 1.0 +aniso_angle = 45 +coh_soft = 1 +Ce = 1e6 +plss = 0.5 +plse = 1.5 +eta_vp = 2.5e20 + +ID = 1 +melt = 11 +density_model = 5 +rho = 2800.00 / Lower crust +G = 1.0e10 +Cv = 1050.0 +k = 2.5 +Qr = 1.00e-6 /0.55e-6 +C = 5.0e7 +phi = 30.0 +Slim = 500.0e9 +alp = 32.0e-6 +bet = 1.5e-11 +cstv = 0 +pwlv = 10 +linv = 0 +gbsv = 0 +expv = 0 +Ce = 1e6 +cohe = 1e6 +plss = 0.5 +plse = 1.5 +eta_vp = 2.5e20 + +ID = 2 +melt = 41 +density_model = 5 +rho = 3330.00 / lithospheric mantle - Dry Olivine +alp = 32.0e-6 +bet = 1.5e-11 +G = 1.0e10 +Cv = 1050.0 +k = 3.0 +Qr = 0.0 +C = 5.0e7 +phi = 30.0 +Slim = 500.0e9 +cstv = 0 +pwlv = 40 +linv = 40 +gbsv = 0 +expv = 40 +Ce = 1e6 +cohe = 1e6 +plss = 0.5 +plse = 1.5 +eta_vp = 2.5e20 + +ID = 3 +melt = 41 +density_model = 5 +rho = 3330.00 / asthenosphere +alp = 32.0e-6 +bet = 1.5e-11 +G = 1.0e10 +Cv = 1050.0 +k = 3.0 +Qr = 0.0 +C = 5.0e7 +phi = 30.0 +Slim = 500.0e9 +cstv = 0 +pwlv = 40 +linv = 40 +gbsv = 0 +expv = 40 +coh_soft = 1 +Ce = 1e6 +plss = 0.5 +plse = 1.5 +eta_vp = 2.5e20 + +/**** DEFMAPS ****/ +nT = 200 / Temperature resolution [] +nE = 200 / Strain rate resolution [] +nd = 6 / Grain size resolution [] +Tmin = 127.0 / Temperature minimum [°C] +Tmax = 1827.0 / Temperature maximum [°C] +Emin = -50 / Strain rate minimum log_10 [1/s] +Emax = 5 / Strain rate maximum log_10 [1/s] +dmin = -7 / Grain size minimum log_10 [m] +dmax = -2 / Grain size maximum log_10 [m] +Pn = 1.0e9 / Pressure [Pa] + +/**** PARTICLES ****/ +Nx_part = 4 +Nz_part = 4 +min_part_cell = 16 + +/**** NON-LINEAR ITERATIONS ****/ +Newton = 0 / set to 1 only for accurate/production runs +line_search = 0 / same +nit_max = 1 / more than 1 for accurate/production runs +rel_tol_KSP = 1e-4 +let_res_grow = 0 +line_search_min = 0.0 +Picard2Newton = 1 +Picard2Newton_tol = 1e-1 +diag_scaling = 0 +nonlin_abs_mom = 1e-9 +nonlin_rel_mom = 1e-9 +nonlin_abs_div = 1e-9 +nonlin_rel_div = 1e-9 diff --git a/SETS/RiftingRoman.c b/SETS/RiftingRoman.c new file mode 100644 index 00000000..32101c8d --- /dev/null +++ b/SETS/RiftingRoman.c @@ -0,0 +1,171 @@ +#include "math.h" +#include "mdoodz.h" +#include "stdbool.h" +#include "stdio.h" +#include "stdlib.h" +#include "time.h" + +double SetSurfaceZCoord(MdoodzInput *instance, double x_coord) { + const double TopoLevel = -0.0e3 / instance->scaling.L; + return TopoLevel; +} + +double SetNoise(MdoodzInput *instance, Coordinates coordinates, int phase) { + const double x = coordinates.x - instance->model.user4 / instance->scaling.L; + const double z = coordinates.z; + const double basin_width = 30.0e3 / instance->scaling.L; + const double noise = ((double) rand() / (double) RAND_MAX) - 0.5; + const double filter_x = exp(-(x * x) / (2.0 * basin_width * basin_width)); + const double filter_z = exp(-(z * z) / (2.0 * basin_width * basin_width * 4.0)); + return noise * filter_x * filter_z; +} + +static Ellipse GetMicaEllipse(double centreX, double centreZ) { + return (Ellipse) { + .radiusZ = 20e3, + .radiusX = 10e3, + .centreX = centreX, + .centreZ = centreZ, + .angle = 0, + }; +} + +int SetPhase(MdoodzInput *instance, Coordinates coordinates) { + // remove perturbation + // moho temperature should be around 500 degrees + // add weak inclusion + const double lithosphereThickness = instance->model.user1 / instance->scaling.L; + const double crustThickness = instance->model.user2 / instance->scaling.L; + const double mohoLevel = -crustThickness; + const bool isBelowLithosphere = coordinates.z < -lithosphereThickness; + const bool isAboveMoho = coordinates.z > mohoLevel; + const bool isMicaEllipse = IsEllipseCoordinates(coordinates, GetMicaEllipse(0e3, -55e3), instance->scaling.L); + + if (isMicaEllipse) { + return 1; + } else if (isAboveMoho) { + return 0; + } else if (isBelowLithosphere) { + return 3; + } else { + return 2; + } +} + +double SetTemperature(MdoodzInput *instance, Coordinates coordinates) { + const double lithosphereThickness = instance->model.user1 / instance->scaling.L; + const double surfaceTemperature = 273.15 / instance->scaling.T; + const double mantleTemperature = (1330.0 + 273.15) / instance->scaling.T; + + const double Tamp = 50.0 / instance->scaling.T; + const double x = coordinates.x - instance->model.user4 / instance->scaling.L; + const double z = coordinates.z; + const double basin_width = 30.0e3 / instance->scaling.L; + const double filter_x = Tamp * exp(-(x * x) / (2.0 * basin_width * basin_width)); + + const double particleTemperature = ((mantleTemperature - surfaceTemperature) / lithosphereThickness) * (-coordinates.z) + surfaceTemperature; + if (particleTemperature > mantleTemperature) { + return mantleTemperature + filter_x; + } else { + return particleTemperature; + } +} + +double SetGrainSize(MdoodzInput *instance, Coordinates coordinates, int phase) { + const int asthenospherePhase = 3; + return instance->materials.gs_ref[asthenospherePhase]; +} + +char SetBCPType(MdoodzInput *instance, POSITION position) { + if (position == NE || position == NW) { + return 0; + } else { + return -1; + } +} + +SetBC SetBCT(MdoodzInput *instance, POSITION position, double particleTemperature) { + SetBC bc; + double surface_temperature = zeroC / instance->scaling.T; + double mantle_temperature = (1330. + zeroC) / instance->scaling.T; + if (position == S) { + bc.type = constant_temperature; + bc.value = mantle_temperature; + } + if (position == free_surface || position == N) { + bc.type = constant_temperature; + bc.value = surface_temperature; + } + if (position == W || position == E) { + bc.type = constant_heatflux; + bc.value = 0.; + } + return bc; +} + +double SetAnisoAngle(MdoodzInput *input, Coordinates coordinates, int phase) { + static unsigned int seedIncrement = 0; + srand(time(NULL) + seedIncrement++); + + // Use coordinates to determine the base angle, ensuring smooth variation + double baseAngle = fmod((coordinates.x + coordinates.z), 180.0); + + // Generate a small random offset, for example within [-10, 10] degrees + double offsetRange = 10.0; // Adjust this value to control the degree of randomness + double randomOffset = ((rand() / (double)RAND_MAX) * 2 * offsetRange) - offsetRange; + + // Combine base angle with random offset + double angle = baseAngle + randomOffset; + + // Ensure angle is within desired range, e.g., [0, 180] + if (angle < 0.0) angle += 180.0; + else if (angle > 180.0) angle -= 180.0; + + return angle; +} + + +void AddCrazyConductivity(MdoodzInput *input) { + int *asthenospherePhases = (int *) malloc(sizeof(int)); + CrazyConductivity *crazyConductivity = (CrazyConductivity *) malloc(sizeof(CrazyConductivity)); + asthenospherePhases[0] = 3; + crazyConductivity->phases = asthenospherePhases; + crazyConductivity->nPhases = 1; + crazyConductivity->multiplier = 1000; + input->crazyConductivity = crazyConductivity; +} + +int main(int nargs, char *args[]) { + srand(time(NULL)); + char *input_file; + if (nargs < 2) { + asprintf(&input_file, "RiftingRoman.txt");// Default + } else { + printf("dodo %s\n", args[1]); + asprintf(&input_file, "%s", args[1]);// Custom + } + printf("Running MDoodz7.0 using %s\n", input_file); + MdoodzSetup setup = { + .BuildInitialTopography = &(BuildInitialTopography_ff){ + .SetSurfaceZCoord = SetSurfaceZCoord, + }, + .SetParticles = &(SetParticles_ff){ + .SetPhase = SetPhase, + .SetTemperature = SetTemperature, + .SetGrainSize = SetGrainSize, + .SetNoise = SetNoise, + .SetAnisoAngle = SetAnisoAngle, + + }, + .SetBCs = &(SetBCs_ff){ + .SetBCVx = SetPureShearBCVx, + .SetBCVz = SetPureShearBCVz, + .SetBCPType = SetBCPType, + .SetBCT = SetBCT, + }, + .MutateInput = AddCrazyConductivity, + + }; + RunMDOODZ(input_file, &setup); + free(input_file); +} \ No newline at end of file diff --git a/SETS/RiftingRoman.txt b/SETS/RiftingRoman.txt new file mode 100644 index 00000000..fb8eab08 --- /dev/null +++ b/SETS/RiftingRoman.txt @@ -0,0 +1,181 @@ +istep = 00000100 +irestart = 0 + +/**** OUTPUT FILES ****/ +writer = 1 +writer_step = 10 +writer_markers = 0 +writer_debug = 0 + +/**** SCALES ****/ Scaling parameters for +eta = 1.e+22 /viscosity +L = 30.e4 /length +V = 1.5e-8 /velocity +T = 1.e+02 /temperature + +/**** SPACE ****/ +Nx = 400 +Nz = 210 +xmin = -200.000000e3 +xmax = 200.000000e3 +zmin = -200.000000e3 +zmax = 10.000000e3 + +/**** TIME ****/ +Nt = 7000 +dt = 1.2623e+11 +Courant = 0.45 +penalty = 1e2 +constant_dt = 0 + +/**** SWITCHES ****/ +eta_average = 0 +interp_stencil = 9 +mechanical = 1 +RK = 4 +periodic_x = 0 +pure_shear_ALE = 0 /1: box stretched at constant strain rate; -1 box of constant size +elastic = 1 +thermal = 1 +isPl_soft = 0 +free_surface = 1 +free_surface_stab = 1 +initial_cooling = 1 +subgrid_diffusion = 2 +shear_heating = 1 +adiab_heating = 0 +surface_processes = 0 /0 = none; 1 = diffusion only; 2 = fills instantaneously the basin up to the base level; 3 = diffusion + source term +surf_diff = 5.0e-6 /topography diffusion coefficient +surf_ised1 = 4 /sediment phase indices +surf_ised2 = 5 +surf_sedirate = 0.0 / sedimentation rate [m/s]:3.1688e-12 <-> 0.01 cm/yr +surf_baselev = 0.0e3 / base level for sedimentation +track_T_P_x_z = 1 / initial P and T field record +polar = 0 +anisotropy = 1 +reseed_markers = 1 + +/**** SETUP DEPENDANT ****/ +marker_noise = 0 +bkg_strain_rate = -1e-15 /Background strain rate [s-1] => extension rate = 1 cm/yr +user0 = 0.0e3 /Radius of perturbation [m] +user1 = 125.0e3 /Initial lithosphere thickness [m] +user2 = 35.0e3 /Initial crust thickness [m] +user3 = 5.0e3 /Initial basin amplitude [m] +user4 = 0.0 /lateral shift of pertubation +user5 = 0 +user6 = 0 +user7 = 0 + +/**** PARTICLES ****/ +Nx_part = 4 +Nz_part = 4 +min_part_cell = 16 + +/**** NON-LINEAR ITERATIONS ****/ +Newton = 1 +nit_max = 15 // for high resolution use from 10 to 20 +line_search = 1 +nonlin_abs_mom = 5.0e-8 +nonlin_abs_div = 5.0e-8 +min_eta = 5.0e18 +max_eta = 1.0e25 +eta_tol = 1e-8 + +/**** GRAVITY ****/ +gx = 0.0000 +gz = -9.81 + +/**** PHASE PROPERTIES ****/ +Nb_phases = 4 + +ID = 0 +rho = 2800.00 / crust +G = 1.0e10 +Cp = 1050.0 +k = 2.5 +Qr = 0.55e-6 +C = 5.0e7 +phi = 30.0 +Slim = 500.0e9 +alp = 32.0e-6 +bet = 1.5e-11 +cstv = 0 +pwlv = 10 +linv = 0 +gbsv = 0 +expv = 0 +coh_soft = 1 +Ce = 1e6 +plss = 0.5 +plse = 1.5 +aniso_factor = 1 +aniso_angle = 80 +eta_vp = 6e20 + +ID = 1 +rho = 2800.00 / inclusion to activate rifting +G = 1.0e10 +Cp = 1050.0 +k = 2.5 +Qr = 0.1e-6 +C = 5.0e7 +phi = 30.0 +Slim = 500.0e9 +alp = 32.0e-6 +bet = 1.5e-11 +cstv = 0 +pwlv = 24 +linv = 0 +gbsv = 0 +expv = 0 +Ce = 1e6 +cohe = 1e6 +plss = 0.5 +plse = 1.5 +aniso_factor = 1 +aniso_angle = 80 +eta_vp = 6e20 + +ID = 2 +rho = 3330.00 / lithospheric mantle +alp = 32.0e-6 +bet = 1.5e-11 +G = 1.0e10 +Cp = 1050.0 +k = 3.0 +Qr = 0.0 +C = 5.0e7 +phi = 30.0 +Slim = 500.0e9 +cstv = 0 +pwlv = 40 +linv = 40 +gbsv = 0 +expv = 40 +aniso_factor = 1 +aniso_angle = 80 +eta_vp = 6e20 +transmutation = 1 +transmutation_temperature = 1220 +transmutation_phase = 3 + +ID = 3 +rho = 3330.00 / asthenosphere +alp = 32.0e-6 +bet = 1.5e-11 +G = 1.0e10 +Cp = 1050.0 +k = 3.0 +Qr = 0.0 +C = 5.0e7 +phi = 30.0 +Slim = 500.0e9 +cstv = 0 +pwlv = 41 +linv = 41 +gbsv = 0 +expv = 40 +eta_vp = 6e20 +aniso_factor = 1 +aniso_angle = 80 \ No newline at end of file diff --git a/SETS/RiverTom.txt b/SETS/RiverTom.txt index 1925a5b8..59a0e826 100755 --- a/SETS/RiverTom.txt +++ b/SETS/RiverTom.txt @@ -65,7 +65,7 @@ rho = 2800.00 / ref. density G = 3e10 / shear modulus alp = 30.0e-6 / thermal expansivity bet = 1e-11 / compressibility -Cv = 1050 / heat capacity +Cp = 1050 / heat capacity k = 2.0 / thermal conductivity Qr = 0.4e-6 / radiogenic heat production C = 5e7 / cohesion @@ -79,7 +79,7 @@ rho = 3260.00 / ref. density G = 3e10 / shear modulus alp = 30.0e-6 / thermal expansivity bet = 1e-11 / compressibility -Cv = 1050 / heat capacity +Cp = 1050 / heat capacity k = 3.0 / thermal conductivity Qr = 1.0e-10 / radiogenic heat production C = 5e7 / cohesion diff --git a/SETS/RiverTomLowerCrust.txt b/SETS/RiverTomLowerCrust.txt index 53f70f20..aa209106 100644 --- a/SETS/RiverTomLowerCrust.txt +++ b/SETS/RiverTomLowerCrust.txt @@ -68,7 +68,7 @@ rho = 2800.00 / ref. density G = 3e10 / shear modulus alp = 30.0e-6 / thermal expansivity bet = 1e-11 / compressibility -Cv = 1050 / heat capacity +Cp = 1050 / heat capacity k = 2.0 / thermal conductivity Qr = 1e-7 / radiogenic heat production C = 5e7 / cohesion @@ -82,7 +82,7 @@ rho = 2800.00 / ref. density G = 3e10 / shear modulus alp = 30.0e-6 / thermal expansivity bet = 1e-11 / compressibility -Cv = 1050 / heat capacity +Cp = 1050 / heat capacity k = 2.0 / thermal conductivity Qr = 1e-7 / radiogenic heat production C = 5e7 / cohesion @@ -96,7 +96,7 @@ rho = 3260.00 / ref. density G = 3e10 / shear modulus alp = 30.0e-6 / thermal expansivity bet = 1e-11 / compressibility -Cv = 1050 / heat capacity +Cp = 1050 / heat capacity k = 3.0 / thermal conductivity Qr = 1.0e-10 / radiogenic heat production C = 5e7 / cohesion diff --git a/SETS/ShearHeatingDuretz14.txt b/SETS/ShearHeatingDuretz14.txt index 85e94f9f..3ca826ab 100644 --- a/SETS/ShearHeatingDuretz14.txt +++ b/SETS/ShearHeatingDuretz14.txt @@ -81,7 +81,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 plast = 0 @@ -106,7 +106,7 @@ tpwl = 5 ID = 1 rho = 2700.00 / inclusion G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 plast = 0 diff --git a/SETS/ShearInclusionAniso.txt b/SETS/ShearInclusionAniso.txt index 199afcea..c4f923a2 100644 --- a/SETS/ShearInclusionAniso.txt +++ b/SETS/ShearInclusionAniso.txt @@ -80,7 +80,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1e3 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 @@ -105,7 +105,7 @@ aniso_factor = 10.0 ID = 1 rho = 2700.00 / inclusion G = 1e3 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 diff --git a/SETS/ShearTemplate.txt b/SETS/ShearTemplate.txt index 949fc7f0..ce954717 100644 --- a/SETS/ShearTemplate.txt +++ b/SETS/ShearTemplate.txt @@ -89,7 +89,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 @@ -115,7 +115,7 @@ ani_fac_e = 1.0 ID = 1 rho = 2700.00 / inclusion G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 diff --git a/SETS/ShearTemplateAniso.txt b/SETS/ShearTemplateAniso.txt index e57f4488..d25abba2 100755 --- a/SETS/ShearTemplateAniso.txt +++ b/SETS/ShearTemplateAniso.txt @@ -85,7 +85,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 0.2 @@ -110,7 +110,7 @@ aniso_factor = 10 ID = 1 rho = 2700.00 / inclusion G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 diff --git a/SETS/ShearTemplateLargeStainAniso.txt b/SETS/ShearTemplateLargeStainAniso.txt index 90470ec7..478e1845 100644 --- a/SETS/ShearTemplateLargeStainAniso.txt +++ b/SETS/ShearTemplateLargeStainAniso.txt @@ -88,7 +88,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 plast = 1 @@ -115,7 +115,7 @@ aniso_angle = 90.0 ID = 1 rho = 2750.00 / inclusion G = 10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 plast = 0 diff --git a/SETS/Shrinking.txt b/SETS/Shrinking.txt index d9904a56..a66c1d8a 100644 --- a/SETS/Shrinking.txt +++ b/SETS/Shrinking.txt @@ -90,7 +90,7 @@ Nb_phases = 4 ID = 0 rho = 2850.00 / matrix Granulite G = 4.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 1.0e70 @@ -122,7 +122,7 @@ density_model = 3 ID = 1 rho = 2850.00 / Dry CPX inclusion G = 4.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 1.0e70 @@ -154,7 +154,7 @@ density_model = 3 ID = 2 rho = 2850.00 / matrix Granulite G = 4.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 1.0e70 @@ -186,7 +186,7 @@ density_model = 3 ID = 3 rho = 3250.00 / keep granulite, only change in rho G = 4.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 1.0e70 diff --git a/SETS/SimpleShearAnisoHomo.txt b/SETS/SimpleShearAnisoHomo.txt index 0e8d88c0..e7580d86 100644 --- a/SETS/SimpleShearAnisoHomo.txt +++ b/SETS/SimpleShearAnisoHomo.txt @@ -74,7 +74,7 @@ Nb_phases = 2 ID = 0 rho = 2800.00 / Matrix G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.3 Qr = 0 C = 2e7 @@ -101,7 +101,7 @@ ani_fac_max = 100 ID = 1 rho = 2800.00 /inclusion G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.3 Qr = 0 C = 2e7 diff --git a/SETS/StrainLocalization_SH_GSE.txt b/SETS/StrainLocalization_SH_GSE.txt index 68816757..6785da0d 100644 --- a/SETS/StrainLocalization_SH_GSE.txt +++ b/SETS/StrainLocalization_SH_GSE.txt @@ -92,7 +92,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 plast = 0 @@ -121,7 +121,7 @@ tpwl = 5 ID = 1 rho = 2700.00 / inclusion G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 plast = 0 diff --git a/SETS/ThanushikaSubduction.txt b/SETS/ThanushikaSubduction.txt index 7de06046..dacd055e 100755 --- a/SETS/ThanushikaSubduction.txt +++ b/SETS/ThanushikaSubduction.txt @@ -6,6 +6,9 @@ istep = 250 / Restart file number irestart = 0 / Restart switch +/**** PATHS ****/ +import_files_dir = ../../IMPORT/ + /**** OUTPUT FILES ****/ writer = 1 / Write grid data switch writer_step = 400 / Write interval @@ -61,14 +64,17 @@ surf_baselev = -2.5e3 / Level of topography below which sediments will marker_noise = 1 / Marker noise switch bkg_strain_rate = 1e-15 / Background strain rate [s-1] => extension rate = 1 cm/yr user0 = 30.0e3 / Continental crustal thickness [m] ***** SYSTEMATIC PARAMETER ***** -user1 = 80e3 / Lithospheric thickness [m] ***** SYSTEMATIC PARAMETER ***** +user1 = 80e3 / Lithospheric thickness [m] ***** SYSTEMATIC PARAMETER ***** user2 = -3.17e-9 / Plate velocity [m/s] (compression -> negative) ***** SYSTEMATIC PARAMETER ***** user3 = 0.5 / Boundary velocity partitioning: 1 = full push WEST, 0 = full push EAST user4 = 40 / Angle of Subduction [°] ***** SYSTEMATIC PARAMETER ***** -user5 = 70e3 / Thickness of oceanic lithosphere - Computed from thermal age ***** SYSTEMATIC PARAMETER ***** +user5 = 70e3 / Thickness of oceanic lithosphere - Computed from thermal age ***** SYSTEMATIC PARAMETER ***** user6 = 0.0e-3 / Mantle adiabat [K/m] ***** SYSTEMATIC PARAMETER ***** user7 = 10.0e3 / Oceanic crustal thickness [m] user8 = 5.0e3 / Sediment thickness [m] +force_act_vol_ast = 1 / Overrides database +act_vol_dif_ast = 7e-6 / Sets activation volume for diffusion creep of olivine +act_vol_dis_ast = 11e-6 / Sets activation volume for dislocation creep of olivine /**** GRAVITY ****/ gx = 0.0000 / Gravitational acceleration in x @@ -80,7 +86,7 @@ Nb_phases = 7 ID = 0 / Phase identity used to assign material to phase - Upper mantle rho = 3300.00 /asthenosphere / Reference density G = 1e10 / Shear modulus -Cv = 1050 / Heat capacity +Cp = 1050 / Heat capacity k = 3.0 / Thermal conductivity Qr = 1e-8 / Amount of radiogenic heat production C = 1e7 / Cohesion @@ -105,7 +111,7 @@ phase_diagram = 1 / Peridotite Stixrude ID = 1 rho = 3300.00 / Continental lithosphere G = 1e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-8 C = 1e7 @@ -130,7 +136,7 @@ phase_diagram = 1 / Peridotite Stixrude ID = 2 rho = 3250.00 / Oceanic lithosphere G = 1e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-8 C = 1e7 @@ -155,7 +161,7 @@ phase_diagram = 1 / Peridotite Stixrude ID = 3 / Weak plate interface rho = 3250.00 G = 1e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-8 C = 1e6 @@ -180,7 +186,7 @@ phase_diagram = 4 / Hydrated peridotite ID = 4 / Continental crust rho = 2700.00 G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.3 Qr = 1e-6 C = 1e7 @@ -205,7 +211,7 @@ phase_diagram = 7 / Rhyolite ID = 5 / Oceanic crust rho = 3000.00 G = 1e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-8 C = 1e7 @@ -230,7 +236,7 @@ phase_diagram = 5 / MORB ID = 6 / Sediments rho = 2850.00 G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.3 Qr = 1e-6 C = 1e6 diff --git a/SETS/ThanushikaSubduction/ThanushikaSubduction b/SETS/ThanushikaSubduction/ThanushikaSubduction deleted file mode 100755 index 1f107ee840177d9ecafaa5c2f340d4bd516b5d41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51000 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 qxVUJ`n>RLZ-E;J#H^;kgzpdbr%` 3.171e-11 m/s -surf_baselev = -2.5e3 / Level of topography below which sediments will start to accumulate [m] - -/**** SETUP DEPENDANT ****/ -marker_noise = 1 / Marker noise switch -bkg_strain_rate = 1e-15 / Background strain rate [s-1] => extension rate = 1 cm/yr -user0 = 30.0e3 / Continental crustal thickness [m] ***** SYSTEMATIC PARAMETER ***** -user1 = 120e3 / Lithospheric thickness [m] ***** SYSTEMATIC PARAMETER ***** -user2 = -3.17e-9 / Plate velocity [m/s] (compression -> negative) ***** SYSTEMATIC PARAMETER ***** -user3 = 0.5 / Boundary velocity partitioning: 1 = full push WEST, 0 = full push EAST -user4 = 15 / Angle of Subduction [°] ***** SYSTEMATIC PARAMETER ***** -user5 = 70e3 / Thickness of oceanic lithosphere - Computed from thermal age ***** SYSTEMATIC PARAMETER ***** -user6 = 0.4e-3 / Mantle adiabat [K/m] ***** SYSTEMATIC PARAMETER ***** -user7 = 10.0e3 / Oceanic crustal thickness [m] -user8 = 5.0e3 / Sediment thickness [m] - -/**** GRAVITY ****/ -gx = 0.0000 / Gravitational acceleration in x -gz = -9.81 / Gravitational acceleration in z - -/**** PHASE PROPERTIES ****/ -Nb_phases = 7 - -ID = 0 / Phase identity used to assign material to phase - Upper mantle -rho = 3300.00 /asthenosphere / Reference density -G = 1e10 / Shear modulus -Cv = 1050 / Heat capacity -k = 3.0 / Thermal conductivity -Qr = 1e-8 / Amount of radiogenic heat production -C = 1e7 / Cohesion -phi = 30 / Friction angle -Slim = 500e9 / Stress cutoff. Should remain untouched unless one really wants to artificially prevent stresses to rise above this level -alp = 8e-6 / Coefficient of thermal expansion -bet = 1e-11 / Coefficient of compressibility -drho = 0 -cstv = 0 / Constant viscosity switch -pwlv = 40 / Choose dislocation creep parameters from database. Number can be taken from FlowLaws.c -linv = 40 / Choose diffusion creep parameters from database. Number can be taken from Flow Laws.c -gbsv = 0 / Choose grain boundary sliding parameters from database. Number can be taken from Flow Laws.c -expv = 40 / Choose Peierls creep parameters from database. Number can be taken from Flow Laws.c -gsel = 0 / Grain size evolution switch -eta0 = 1e22 / Constant viscosity value -npwl = 1 / Custom power-law exponent -Qpwl = 0 / Custom power-law activation energy -gs_ref = 5e-3 / Reference grain size -density_model = 2 / Material dependent buoyancy calculation: 2 - Phase diagram -phase_diagram = 1 / Peridotite Stixrude - -ID = 1 -rho = 3300.00 / Continental lithosphere -G = 1e10 -Cv = 1050 -k = 3.0 -Qr = 1e-8 -C = 1e7 -phi = 30 -Slim = 500e9 -alp = 8e-6 -bet = 1e-11 -drho = 0 -cstv = 0 -pwlv = 40 -linv = 40 -gbsv = 0 -expv = 40 -gsel = 0 -eta0 = 1e22 -npwl = 2 -Qpwl = 0 -gs_ref = 5e-3 -density_model = 2 / Material dependent buoyancy calculation: 2 - Phase diagram -phase_diagram = 1 / Peridotite Stixrude - -ID = 2 -rho = 3250.00 / Oceanic lithosphere -G = 1e10 -Cv = 1050 -k = 3.0 -Qr = 1e-8 -C = 1e7 -phi = 30 -Slim = 500e9 -alp = 8e-6 -bet = 1e-11 -drho = 0 -cstv = 0 -pwlv = 40 -linv = 40 -gbsv = 0 -expv = 40 -gsel = 0 -eta0 = 5e20 -npwl = 0 -Qpwl = 0 -gs_ref = 5e-3 -density_model = 2 / Material dependent buoyancy calculation: 2 - Phase diagram -phase_diagram = 1 / Peridotite Stixrude - -ID = 3 / Weak plate interface -rho = 2800.00 -G = 1e10 -Cv = 1050 -k = 3.0 -Qr = 1e-8 -C = 1e6 -phi = 0 -Slim = 500e9 -alp = 8e-6 -bet = 1e-11 -drho = 0 -cstv = 0 -pwlv = 46 -linv = 0 -gbsv = 0 -expv = 0 -gsel = 0 -eta0 = 5e20 -npwl = 1 -Qpwl = 0 -gs_ref = 5e-3 -density_model = 3 / Material dependent buoyancy calculation: 2 - Phase diagram -phase_diagram = 4 / Hydrated peridotite - -ID = 4 / Continental crust -rho = 2700.00 -G = 1e10 -Cv = 1050 -k = 2.3 -Qr = 1e-6 -C = 1e7 -phi = 30 -Slim = 500e9 -alp = 3e-5 -bet = 1e-11 -drho = 0 -cstv = 0 -pwlv = 10 -linv = 0 -gbsv = 0 -expv = 0 -gsel = 0 -eta0 = 1e18 -npwl = 1 -Qpwl = 0 -gs_ref = 5e-3 -density_model = 2 / Material dependent buoyancy calculation: 2 - Phase diagram -phase_diagram = 7 / Rhyolite - -ID = 5 / Oceanic crust -rho = 3000.00 -G = 1e10 -Cv = 1050 -k = 3.0 -Qr = 1e-8 -C = 1e7 -phi = 30 -Slim = 500e9 -alp = 3e-5 -bet = 1e-11 -drho = 0 -cstv = 0 -pwlv = 29 -linv = 0 -gbsv = 0 -expv = 0 -gsel = 0 -eta0 = 5e20 -npwl = 1 -Qpwl = 0 -gs_ref = 5e-3 -density_model = 2 / Material dependent buoyancy calculation: 2 - Phase diagram -phase_diagram = 5 / MORB - -ID = 6 / Sediments -rho = 2850.00 -G = 1e10 -Cv = 1050 -k = 2.3 -Qr = 1e-6 -C = 1e6 -phi = 5 -Slim = 500e9 -alp = 3e-5 -bet = 1e-11 -drho = 0 -cstv = 0 -pwlv = 13 -linv = 0 -gbsv = 0 -expv = 0 -gsel = 0 -eta0 = 5e20 -npwl = 1 -Qpwl = 0 -gs_ref = 5e-3 -density_model = 2 / Material dependent buoyancy calculation: 2 - Phase diagram -phase_diagram = 6 / Pelite - -/**** DEFMAPS ****/ -nT = 200 / Temperature resolution [] -nE = 200 / Strain rate resolution [] -nd = 6 / Grain size resolution [] -Tmin = 127.0 / Temperature minimum [°C] -Tmax = 1827.0 / Temperature maximum [°C] -Emin = -50 / Strain rate minimum log_10 [1/s] -Emax = 5 / Strain rate maximum log_10 [1/s] -dmin = -7 / Grain size minimum log_10 [m] -dmax = -2 / Grain size maximum log_10 [m] -Pn = 1.0e9 / Pressure [Pa] - -/**** PARTICLES ****/ -Nx_part = 4 / No. Particles in x per cell -Nz_part = 4 / No. Particles in z per cell -min_part_cell = 16 / Minimum no. particles per cell - -/**** NON-LINEAR ITERATIONS ****/ -Newton = 0 / Newton iteration switch -nit_max = 1 / No. Nonlinear iterations. At least 5, for high resolution use from 10 to 20 -line_search = 0 / Activate line search algorithm -nonlin_abs_mom = 5.0e-8 / Residual tolerances -nonlin_abs_div = 5.0e-8 -min_eta = 5.0e18 / Viscosity cutoffs for numerical stabilisation -max_eta = 1.0e25 diff --git a/SETS/ThermalDiffusion.txt b/SETS/ThermalDiffusion.txt index b445543d..c73dddae 100644 --- a/SETS/ThermalDiffusion.txt +++ b/SETS/ThermalDiffusion.txt @@ -94,7 +94,7 @@ Nb_phases = 4 ID = 0 rho = 2850.00 / matrix Granulite G = 4.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3e-3 Qr = 0.0 C = 1.0e70 @@ -126,7 +126,7 @@ density_model = 3 ID = 1 rho = 2850.00 / Dry CPX inclusion G = 4.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3e-3 Qr = 0.0 C = 1.0e70 @@ -158,7 +158,7 @@ density_model = 3 ID = 2 rho = 2850.00 / matrix Granulite G = 4.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3e-3 Qr = 0.0 C = 1.0e70 @@ -190,7 +190,7 @@ density_model = 3 ID = 3 rho = 3250.00 / keep granulite, only change in rho G = 4.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3e-3 Qr = 0.0 C = 1.0e70 diff --git a/SETS/VEP_Duretz18.txt b/SETS/VEP_Duretz18.txt index 08cd9287..0d777df4 100644 --- a/SETS/VEP_Duretz18.txt +++ b/SETS/VEP_Duretz18.txt @@ -81,7 +81,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 plast = 1 @@ -108,7 +108,7 @@ Qpwl = 0 ID = 1 rho = 2700.00 / inclusion G = 2.5e9 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 plast = 1 diff --git a/TESTS/ShearTemplate/LinearPureshearAnisotropic.txt b/TESTS/ShearTemplate/LinearPureshearAnisotropic.txt index 9aebe447..2e63d10a 100755 --- a/TESTS/ShearTemplate/LinearPureshearAnisotropic.txt +++ b/TESTS/ShearTemplate/LinearPureshearAnisotropic.txt @@ -89,7 +89,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 @@ -116,7 +116,7 @@ aniso_angle = 30.0 ID = 1 rho = 2750.00 / inclusion G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 diff --git a/TESTS/ShearTemplate/LinearPureshearIsotropic.txt b/TESTS/ShearTemplate/LinearPureshearIsotropic.txt index 757a6448..d9283139 100755 --- a/TESTS/ShearTemplate/LinearPureshearIsotropic.txt +++ b/TESTS/ShearTemplate/LinearPureshearIsotropic.txt @@ -89,7 +89,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 @@ -116,7 +116,7 @@ aniso_angle = 30.0 ID = 1 rho = 2750.00 / inclusion G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 diff --git a/TESTS/ShearTemplate/LinearSimpleshearAnisotropic.txt b/TESTS/ShearTemplate/LinearSimpleshearAnisotropic.txt index 21440be5..64646a1d 100755 --- a/TESTS/ShearTemplate/LinearSimpleshearAnisotropic.txt +++ b/TESTS/ShearTemplate/LinearSimpleshearAnisotropic.txt @@ -89,7 +89,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 @@ -116,7 +116,7 @@ aniso_angle = 30.0 ID = 1 rho = 2750.00 / inclusion G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 diff --git a/TESTS/ShearTemplate/LinearSimpleshearIsotropic.txt b/TESTS/ShearTemplate/LinearSimpleshearIsotropic.txt index 4da063da..81fd575f 100755 --- a/TESTS/ShearTemplate/LinearSimpleshearIsotropic.txt +++ b/TESTS/ShearTemplate/LinearSimpleshearIsotropic.txt @@ -89,7 +89,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 @@ -116,7 +116,7 @@ aniso_angle = 30.0 ID = 1 rho = 2750.00 / inclusion G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 diff --git a/TESTS/ShearTemplate/NonLinearPureshearAnisotropic.txt b/TESTS/ShearTemplate/NonLinearPureshearAnisotropic.txt index d3b9436c..72263828 100755 --- a/TESTS/ShearTemplate/NonLinearPureshearAnisotropic.txt +++ b/TESTS/ShearTemplate/NonLinearPureshearAnisotropic.txt @@ -89,7 +89,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 @@ -116,7 +116,7 @@ aniso_angle = 30.0 ID = 1 rho = 2750.00 / inclusion G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 diff --git a/TESTS/ShearTemplate/NonLinearPureshearIsotropic.txt b/TESTS/ShearTemplate/NonLinearPureshearIsotropic.txt index 66e2e1c3..57d053fc 100755 --- a/TESTS/ShearTemplate/NonLinearPureshearIsotropic.txt +++ b/TESTS/ShearTemplate/NonLinearPureshearIsotropic.txt @@ -89,7 +89,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 @@ -116,7 +116,7 @@ aniso_angle = 30.0 ID = 1 rho = 2750.00 / inclusion G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 diff --git a/TESTS/ShearTemplate/NonLinearSimpleshearAnisotropi.txt b/TESTS/ShearTemplate/NonLinearSimpleshearAnisotropi.txt index e27ba17b..274902df 100755 --- a/TESTS/ShearTemplate/NonLinearSimpleshearAnisotropi.txt +++ b/TESTS/ShearTemplate/NonLinearSimpleshearAnisotropi.txt @@ -89,7 +89,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 @@ -116,7 +116,7 @@ aniso_angle = 30.0 ID = 1 rho = 2750.00 / inclusion G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 diff --git a/TESTS/ShearTemplate/NonLinearSimpleshearIsotropic.txt b/TESTS/ShearTemplate/NonLinearSimpleshearIsotropic.txt index b9e1e18b..1825e4e9 100755 --- a/TESTS/ShearTemplate/NonLinearSimpleshearIsotropic.txt +++ b/TESTS/ShearTemplate/NonLinearSimpleshearIsotropic.txt @@ -89,7 +89,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 @@ -116,7 +116,7 @@ aniso_angle = 30.0 ID = 1 rho = 2750.00 / inclusion G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 diff --git a/TESTS/ShearTemplate_original.txt b/TESTS/ShearTemplate_original.txt index 6cf996fd..09e37e7b 100755 --- a/TESTS/ShearTemplate_original.txt +++ b/TESTS/ShearTemplate_original.txt @@ -86,7 +86,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 @@ -109,7 +109,7 @@ Qpwl = 0 ID = 1 rho = 2700.00 / inclusion G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 diff --git a/VISUAL_TESTS/PinchSwellGSE.txt b/VISUAL_TESTS/PinchSwellGSE.txt index b390e166..862f50cf 100644 --- a/VISUAL_TESTS/PinchSwellGSE.txt +++ b/VISUAL_TESTS/PinchSwellGSE.txt @@ -61,7 +61,7 @@ Nb_phases = 2 ID = 0 rho = 2700 / matrix G = 1e10 -Cv = 1000 +Cp = 1000 k = 2.5 Qr = 0 C = 1e90 @@ -83,7 +83,7 @@ gs_ref = 1e-5 ID = 1 rho = 2700 / matrix G = 1e10 -Cv = 1000 +Cp = 1000 k = 2.5 Qr = 0 C = 1e90 diff --git a/VISUAL_TESTS/RiftingChenin.txt b/VISUAL_TESTS/RiftingChenin.txt index d027db38..b772379e 100755 --- a/VISUAL_TESTS/RiftingChenin.txt +++ b/VISUAL_TESTS/RiftingChenin.txt @@ -83,7 +83,7 @@ rho = 2700.00 / ref. density alp = 32.0e-6 / thermal expansivity bet = 1e-11 / compressibility G = 1e10 / shear modulus -Cv = 1050 / heat capacity +Cp = 1050 / heat capacity k = 2 / thermal conductivity Qr = 1e-6 / radiogenic heat production C = 1e7 / cohesion @@ -97,7 +97,7 @@ expv = 0 / Pierls viscosity -> database flow_laws.c ID = 1 rho = 2800.00 / Crust - Maryland Diabase G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.5 Qr = 1.0e-6 C = 1.0e7 @@ -116,7 +116,7 @@ rho = 3330.00 / lithospheric mantle - Dry Olivine alp = 32.0e-6 bet = 1.5e-11 G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 3.0 Qr = 0.0 C = 1.0e7 @@ -133,7 +133,7 @@ rho = 3330.00 / asthenosphere (same as 2) alp = 32.0e-6 bet = 1.5e-11 G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 3.0 Qr = 0.0 C = 1.0e7 @@ -148,7 +148,7 @@ expv = 40 ID = 4 rho = 2300.00 / sediments G = 1e10 -Cv = 1050 +Cp = 1050 k = 2 Qr = 0.5e-6 C = 1e7 @@ -170,7 +170,7 @@ Qpwl = 0 ID = 5 rho = 2300.00 / sediments G = 1e10 -Cv = 1050 +Cp = 1050 k = 2 Qr = 0.5e-6 C = 1e7 @@ -194,7 +194,7 @@ rho = 3200.00 / impregnated asthenosphere (less dense and more conductive than alp = 32.0e-6 bet = 1.5e-11 G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 30.0 Qr = 0.0 C = 1.0e7 @@ -209,7 +209,7 @@ expv = 40 ID = 7 rho = 2800.00 / Crust - Dry Quartz G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.5 Qr = 1.0e-6 C = 1.0e7 @@ -226,7 +226,7 @@ expv = 0 ID = 8 rho = 2800.00 / Crust - Dry Quartz G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.5 Qr = 1.0e-6 C = 1.0e7 diff --git a/VISUAL_TESTS/ShearHeatingDuretz14.txt b/VISUAL_TESTS/ShearHeatingDuretz14.txt index 85e94f9f..3ca826ab 100644 --- a/VISUAL_TESTS/ShearHeatingDuretz14.txt +++ b/VISUAL_TESTS/ShearHeatingDuretz14.txt @@ -81,7 +81,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 plast = 0 @@ -106,7 +106,7 @@ tpwl = 5 ID = 1 rho = 2700.00 / inclusion G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 plast = 0 diff --git a/VISUAL_TESTS/Shrinking.txt b/VISUAL_TESTS/Shrinking.txt index bd2be664..1efd057a 100644 --- a/VISUAL_TESTS/Shrinking.txt +++ b/VISUAL_TESTS/Shrinking.txt @@ -91,7 +91,7 @@ Nb_phases = 4 ID = 0 rho = 2850.00 / matrix Granulite G = 4.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 1.0e70 @@ -123,7 +123,7 @@ density_model = 3 ID = 1 rho = 2850.00 / Dry CPX inclusion G = 4.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 1.0e70 @@ -155,7 +155,7 @@ density_model = 3 ID = 2 rho = 2850.00 / matrix Granulite G = 4.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 1.0e70 @@ -187,7 +187,7 @@ density_model = 3 ID = 3 rho = 3250.00 / keep granulite, only change in rho G = 4.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 1.0e70 diff --git a/VISUAL_TESTS/VEP_Duretz18.txt b/VISUAL_TESTS/VEP_Duretz18.txt index d18f6ba9..3a1e4b97 100644 --- a/VISUAL_TESTS/VEP_Duretz18.txt +++ b/VISUAL_TESTS/VEP_Duretz18.txt @@ -81,7 +81,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 plast = 1 @@ -108,7 +108,7 @@ Qpwl = 0 ID = 1 rho = 2700.00 / inclusion G = 2.5e9 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 plast = 1 diff --git a/misc/images/CrystallisationStuewe1995.png b/misc/images/CrystallisationStuewe1995.png new file mode 100644 index 0000000000000000000000000000000000000000..1862a15a56553796e2d12d59714111e47b85ccaf GIT binary patch literal 65187 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 literal 0 HcmV?d00001 diff --git a/misc/oldSets/ASR.txt b/misc/oldSets/ASR.txt index f1909786..0fd3f444 100644 --- a/misc/oldSets/ASR.txt +++ b/misc/oldSets/ASR.txt @@ -73,7 +73,7 @@ Nb_phases = 5 ID = 0 rho = 3325.00 G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.3 Qr = 1.5e-6 C = 1e70 @@ -95,7 +95,7 @@ Qpwl = 0 ID = 1 rho = 3300.00 G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.3 Qr = 1.5e-6 C = 1e70 @@ -118,7 +118,7 @@ Qpwl = 0.0 ID = 2 rho = 3325.00 G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.3 Qr = 1.5e-6 C = 1e70 @@ -140,7 +140,7 @@ Qpwl = 0 ID = 3 rho = 3325.00 G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.3 Qr = 1.5e-6 C = 1e70 @@ -162,7 +162,7 @@ Qpwl = 0 ID = 4 rho = 3310.00 G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.3 Qr = 1.5e-6 C = 1e70 diff --git a/misc/oldSets/ASR_SA.txt b/misc/oldSets/ASR_SA.txt index 89026731..a1025561 100644 --- a/misc/oldSets/ASR_SA.txt +++ b/misc/oldSets/ASR_SA.txt @@ -73,7 +73,7 @@ Nb_phases = 6 ID = 0 rho = 3325.00 G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.3 Qr = 1.5e-6 C = 1e70 @@ -95,7 +95,7 @@ Qpwl = 0 ID = 1 rho = 3300.00 G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.3 Qr = 1.5e-6 C = 1e70 @@ -118,7 +118,7 @@ Qpwl = 0.0 ID = 2 rho = 3325.00 G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.3 Qr = 1.5e-6 C = 1e70 @@ -140,7 +140,7 @@ Qpwl = 0 ID = 3 rho = 3325.00 G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.3 Qr = 1.5e-6 C = 1e70 @@ -162,7 +162,7 @@ Qpwl = 0 ID = 4 rho = 3310.00 G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.3 Qr = 1.5e-6 C = 1e70 @@ -184,7 +184,7 @@ Qpwl = 0 ID = 5 rho = 1.00 G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.3 Qr = 1.5e-6 C = 1e70 diff --git a/misc/oldSets/ASR_polar.txt b/misc/oldSets/ASR_polar.txt index 1e410900..2a7cf1eb 100644 --- a/misc/oldSets/ASR_polar.txt +++ b/misc/oldSets/ASR_polar.txt @@ -75,7 +75,7 @@ ID = 0 rho = 3325.00 density_model = 0 G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.3 Qr = 1.5e-6 C = 1e70 @@ -98,7 +98,7 @@ ID = 1 rho = 3300.00 density_model = 0 G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.3 Qr = 1.5e-6 C = 1e70 @@ -122,7 +122,7 @@ ID = 2 rho = 3325.00 density_model = 0 G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.3 Qr = 1.5e-6 C = 1e70 @@ -145,7 +145,7 @@ ID = 3 rho = 3325.00 density_model = 0 G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.3 Qr = 1.5e-6 C = 1e70 @@ -168,7 +168,7 @@ ID = 4 rho = 3310.00 density_model = 0 G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.3 Qr = 1.5e-6 C = 1e70 diff --git a/misc/oldSets/CindySmoothInclusion.txt b/misc/oldSets/CindySmoothInclusion.txt index 8735cb9a..f38fb1fc 100644 --- a/misc/oldSets/CindySmoothInclusion.txt +++ b/misc/oldSets/CindySmoothInclusion.txt @@ -75,7 +75,7 @@ ID = 0 / Matrix gsref = 1e-3 / reference grain size rho = 3300 G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e70 @@ -100,7 +100,7 @@ ID = 1 / Inclusion gsref = 1e-3 / reference grain size rho = 2700.00 G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e7 diff --git a/misc/oldSets/CindySmoothInclusionNonDim.txt b/misc/oldSets/CindySmoothInclusionNonDim.txt index 54a1d1a9..5e453547 100644 --- a/misc/oldSets/CindySmoothInclusionNonDim.txt +++ b/misc/oldSets/CindySmoothInclusionNonDim.txt @@ -72,7 +72,7 @@ Nb_phases = 2 ID = 0 rho = 3300 / matrix G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 @@ -97,7 +97,7 @@ Reac = 1 ID = 1 rho = 2700.00 / inclusion G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 diff --git a/misc/oldSets/ClemTest.txt b/misc/oldSets/ClemTest.txt index 007cab49..67263586 100644 --- a/misc/oldSets/ClemTest.txt +++ b/misc/oldSets/ClemTest.txt @@ -77,7 +77,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 20e6 @@ -102,7 +102,7 @@ Qpwl = 0 ID = 1 rho = 2700.00 / inclusion G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 2e90 diff --git a/misc/oldSets/CompFreeSurf.txt b/misc/oldSets/CompFreeSurf.txt index 9ad8eec6..1bc5b9f4 100644 --- a/misc/oldSets/CompFreeSurf.txt +++ b/misc/oldSets/CompFreeSurf.txt @@ -91,7 +91,7 @@ ID = 0 density_model = 3 rho = 3260.00 /lithos G = 3e10 /module de cisaillement -Cv = 1050 /heat capacity +Cp = 1050 /heat capacity k = 3.0 /conductivity Qr = 1e-10 /heat production C = 5e70 /cohesion @@ -117,7 +117,7 @@ ID = 1 density_model = 3 rho = 3260.00 /weak zone G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-10 C = 5e7 @@ -143,7 +143,7 @@ ID = 2 / astheno density_model = 3 rho = 3250.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-10 C = 5e7 @@ -169,7 +169,7 @@ ID = 3 / c density_model = 3 rho = 2800.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 2 Qr = 0.4e-6 C = 5e7 @@ -192,7 +192,7 @@ ID = 4 / c density_model = 3 rho = 2800.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 2 Qr = 0.4e-6 C = 5e7 @@ -215,7 +215,7 @@ ID = 5 / sed density_model = 3 rho = 2800.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 2 Qr = 0.4e-6 C = 5e7 diff --git a/misc/oldSets/CrustalShearBanding_Deform.txt b/misc/oldSets/CrustalShearBanding_Deform.txt index ba7f4e67..e888bf6f 100644 --- a/misc/oldSets/CrustalShearBanding_Deform.txt +++ b/misc/oldSets/CrustalShearBanding_Deform.txt @@ -78,7 +78,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 20e6 @@ -102,7 +102,7 @@ Qpwl = 0 ID = 1 rho = 2700.00 / inclusion G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 2e90 diff --git a/misc/oldSets/CrustalShearBanding_GRL.txt b/misc/oldSets/CrustalShearBanding_GRL.txt index bdc71f79..3744f149 100644 --- a/misc/oldSets/CrustalShearBanding_GRL.txt +++ b/misc/oldSets/CrustalShearBanding_GRL.txt @@ -77,7 +77,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 20e6 @@ -101,7 +101,7 @@ Qpwl = 0 ID = 1 rho = 2700.00 / inclusion G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 2e90 diff --git a/misc/oldSets/DrhoTest.txt b/misc/oldSets/DrhoTest.txt index bcaaaece..7eceed55 100644 --- a/misc/oldSets/DrhoTest.txt +++ b/misc/oldSets/DrhoTest.txt @@ -81,7 +81,7 @@ Nb_phases = 3 ID = 0 rho = 2800.00 / matrix that does not react G = 3.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 50.0e60 @@ -107,7 +107,7 @@ reac_soft = 0 ID = 1 rho = 2800.00 / Inclusion that reacts to phase 2 G = 3.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 50.0e60 @@ -139,7 +139,7 @@ tr = 3.1558e11 /equal 10000 ans ID = 2 rho = 3000.00 / Inclusion that reacts to phase 2 G = 3.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 50.0e60 diff --git a/misc/oldSets/Duretz14_SimpleShear.txt b/misc/oldSets/Duretz14_SimpleShear.txt index b0eb9785..70485aec 100644 --- a/misc/oldSets/Duretz14_SimpleShear.txt +++ b/misc/oldSets/Duretz14_SimpleShear.txt @@ -79,7 +79,7 @@ Nb_phases = 4 ID = 0 rho = 2800.00 /inclusions omphacite 0 G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.3 Qr = 0 C = 2e70 @@ -104,7 +104,7 @@ aniso_factor = 1 ID = 1 rho = 2800.00 /inclusions omphacite 1 G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.3 Qr = 0 C = 2e70 @@ -129,7 +129,7 @@ aniso_factor = 1 ID = 2 rho = 3300.00 /matrix garnet G = 1e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 0 C = 2e70 @@ -154,7 +154,7 @@ aniso_factor = 10 ID = 3 rho = 3300.00 /matrix garnet G = 1e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 0 C = 2e70 diff --git a/misc/oldSets/EcloShear_VEVP.txt b/misc/oldSets/EcloShear_VEVP.txt index 9063b644..ea00ab3f 100644 --- a/misc/oldSets/EcloShear_VEVP.txt +++ b/misc/oldSets/EcloShear_VEVP.txt @@ -79,7 +79,7 @@ Nb_phases = 7 ID = 0 rho = 2800.00 / matrix Granulite G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 50.0e6 @@ -107,7 +107,7 @@ treac = 3.1558e11 /equal 10000 ans ID = 1 rho = 3300.00 / Dry CPX inclusion G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 50.0e60 @@ -137,7 +137,7 @@ treac = 0.0 ID = 2 rho = 3300.00 / Dry CPX inclusion G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 50.0e6 @@ -165,7 +165,7 @@ treac = 0.0 ID = 3 rho = 2800.00 / matrix Granulite G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 50.0e6 @@ -193,7 +193,7 @@ treac = 3.1558e11 / /equal 10000 ans ID = 4 rho = 2600.00 /SALT no used right now G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 50.0e60 @@ -221,7 +221,7 @@ treac = 0.0 ID = 5 rho = 3300.00 /Omphacite => reaction G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 50.0e6 @@ -249,7 +249,7 @@ treac = 0.0 ID = 6 rho = 3300.00 /Omphacite => reaction G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 50.0e6 diff --git a/misc/oldSets/HomoVEPLoading_Yamato19.txt b/misc/oldSets/HomoVEPLoading_Yamato19.txt index 2591a177..d8610900 100755 --- a/misc/oldSets/HomoVEPLoading_Yamato19.txt +++ b/misc/oldSets/HomoVEPLoading_Yamato19.txt @@ -84,7 +84,7 @@ Nb_phases = 3 ID = 0 rho = 2750.00 / matrix Anorthite wet G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 50.0e6 @@ -110,7 +110,7 @@ gsref = 1e-7 ID = 1 rho = 2750.00 / matrix Anorthite Wet G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 50.0e6 @@ -136,7 +136,7 @@ gsref = 1e-7 ID = 2 rho = 2750.00 /reaction => Diffusion creep G = 3.5e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 50.0e6 diff --git a/misc/oldSets/Huismans.txt b/misc/oldSets/Huismans.txt index 91f65edc..aa0e3378 100644 --- a/misc/oldSets/Huismans.txt +++ b/misc/oldSets/Huismans.txt @@ -85,7 +85,7 @@ Nb_phases = 2 ID = 0 rho = 3000.00 / crust G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 20e6 @@ -114,7 +114,7 @@ eta_vp = 2e20 ID = 1 rho = 3000.00 / Lithosphere G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 2e90 diff --git a/misc/oldSets/Inc2Boules.txt b/misc/oldSets/Inc2Boules.txt index 3b4aadff..085e7894 100644 --- a/misc/oldSets/Inc2Boules.txt +++ b/misc/oldSets/Inc2Boules.txt @@ -76,7 +76,7 @@ Nb_phases = 4 ID = 0 rho = 2800.00 /inclusions G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.3 Qr = 0 C = 2e7 @@ -98,7 +98,7 @@ Qpwl = 0 ID = 1 rho = 2800.00 /inclusions G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.3 Qr = 0 C = 2e7 @@ -120,7 +120,7 @@ Qpwl = 0 ID = 2 rho = 3300.00 /matrix G = 1e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 0 C = 2e7 @@ -142,7 +142,7 @@ Qpwl = 0 ID = 3 rho = 3300.00 /matrix G = 1e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 0 C = 2e7 diff --git a/misc/oldSets/LithoScale.txt b/misc/oldSets/LithoScale.txt index d44b2e41..f6d16f08 100644 --- a/misc/oldSets/LithoScale.txt +++ b/misc/oldSets/LithoScale.txt @@ -77,7 +77,7 @@ ID = 0 density_model = 3 rho = 3260.00 /lithos G = 3e10 /module de cisaillement -Cv = 1050 /heat capacity +Cp = 1050 /heat capacity k = 3.0 /conductivity Qr = 1e-10 /heat production plast = 1 @@ -103,7 +103,7 @@ ID = 1 density_model = 3 rho = 3260.00 /weak zone G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-10 plast = 1 @@ -129,7 +129,7 @@ ID = 2 / astheno density_model = 3 rho = 3250.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-10 plast = 1 @@ -155,7 +155,7 @@ ID = 3 / uc density_model = 3 rho = 2700.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-6 plast = 1 @@ -182,7 +182,7 @@ ID = 4 / mc density_model = 3 rho = 2750.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-6 plast = 1 @@ -209,7 +209,7 @@ ID = 5 / lc density_model = 3 rho = 2800.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-6 plast = 1 diff --git a/misc/oldSets/LithoScale2.txt b/misc/oldSets/LithoScale2.txt index ca32777a..2e001937 100644 --- a/misc/oldSets/LithoScale2.txt +++ b/misc/oldSets/LithoScale2.txt @@ -85,7 +85,7 @@ ID = 0 density_model = 3 rho = 3260.00 /lithos G = 3e10 /module de cisaillement -Cv = 1050 /heat capacity +Cp = 1050 /heat capacity k = 3.0 /conductivity Qr = 1e-10 /heat production C = 1e7 /cohesion @@ -111,7 +111,7 @@ ID = 1 density_model = 3 rho = 3260.00 /weak zone G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-10 C = 1e6 @@ -137,7 +137,7 @@ ID = 2 / astheno density_model = 3 rho = 3250.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-10 C = 1e6 @@ -163,7 +163,7 @@ ID = 3 / uc density_model = 3 rho = 2700.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-6 C = 2e7 @@ -190,7 +190,7 @@ ID = 4 / mc density_model = 3 rho = 2750.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-6 C = 2e7 @@ -217,7 +217,7 @@ ID = 5 / lc density_model = 3 rho = 2800.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-6 C = 2e7 diff --git a/misc/oldSets/LithoScaleClement.txt b/misc/oldSets/LithoScaleClement.txt index cc988f41..0d960b70 100644 --- a/misc/oldSets/LithoScaleClement.txt +++ b/misc/oldSets/LithoScaleClement.txt @@ -88,7 +88,7 @@ ID = 0 density_model = 3 rho = 3260.00 /lithos G = 3e10 /module de cisaillement -Cv = 1050 /heat capacity +Cp = 1050 /heat capacity k = 3.0 /conductivity Qr = 1e-10 /heat production C = 5e7 /cohesion @@ -114,7 +114,7 @@ ID = 1 density_model = 3 rho = 3260.00 /weak zone G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-10 C = 5e7 @@ -140,7 +140,7 @@ ID = 2 / astheno density_model = 3 rho = 3250.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-10 C = 5e7 @@ -166,7 +166,7 @@ ID = 3 / c density_model = 3 rho = 2800.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 2 Qr = 0.4e-6 C = 5e7 @@ -189,7 +189,7 @@ ID = 4 / c density_model = 3 rho = 2800.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 2 Qr = 0.4e-6 C = 5e7 @@ -212,7 +212,7 @@ ID = 5 / unused density_model = 3 rho = 2800.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-6 C = 5e7 diff --git a/misc/oldSets/LithoScaleClement1.txt b/misc/oldSets/LithoScaleClement1.txt index 14a9e0e0..4b1fd1bf 100644 --- a/misc/oldSets/LithoScaleClement1.txt +++ b/misc/oldSets/LithoScaleClement1.txt @@ -91,7 +91,7 @@ ID = 0 density_model = 3 rho = 3260.00 /lithos G = 3e10 /module de cisaillement -Cv = 1050 /heat capacity +Cp = 1050 /heat capacity k = 3.0 /conductivity Qr = 1e-10 /heat production C = 5e7 /cohesion @@ -117,7 +117,7 @@ ID = 1 density_model = 3 rho = 3260.00 /weak zone G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-10 C = 5e7 @@ -143,7 +143,7 @@ ID = 2 / astheno density_model = 3 rho = 3250.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-10 C = 5e7 @@ -169,7 +169,7 @@ ID = 3 / c density_model = 3 rho = 2800.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 2 Qr = 0.4e-6 C = 5e7 @@ -192,7 +192,7 @@ ID = 4 / c density_model = 3 rho = 2800.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 2 Qr = 0.4e-6 C = 5e7 @@ -215,7 +215,7 @@ ID = 5 / sed density_model = 3 rho = 2800.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 2 Qr = 0.4e-6 C = 5e7 diff --git a/misc/oldSets/LithoScaleClement1b.txt b/misc/oldSets/LithoScaleClement1b.txt index c3cce4e5..d7fcc712 100644 --- a/misc/oldSets/LithoScaleClement1b.txt +++ b/misc/oldSets/LithoScaleClement1b.txt @@ -93,7 +93,7 @@ ID = 0 density_model = 3 rho = 3260.00 /lithos G = 3e20 /module de cisaillement -Cv = 1050 /heat capacity +Cp = 1050 /heat capacity k = 3.0 /conductivity Qr = 1e-10 /heat production C = 5e70 /cohesion @@ -119,7 +119,7 @@ ID = 1 density_model = 3 rho = 3260.00 /lithos G = 3e20 /module de cisaillement -Cv = 1050 /heat capacity +Cp = 1050 /heat capacity k = 3.0 /conductivity Qr = 1e-10 /heat production C = 5e70 /cohesion @@ -145,7 +145,7 @@ ID = 2 / astheno density_model = 3 rho = 3250.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-10 C = 5e7 @@ -171,7 +171,7 @@ ID = 3 / c density_model = 3 rho = 2800.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 2 Qr = 0.4e-6 C = 5e7 @@ -194,7 +194,7 @@ ID = 4 / c density_model = 3 rho = 2800.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 2 Qr = 0.4e-6 C = 5e7 @@ -217,7 +217,7 @@ ID = 5 / sed density_model = 3 rho = 2800.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 2 Qr = 0.4e-6 C = 5e7 diff --git a/misc/oldSets/LithoScaleClement1b_SA.txt b/misc/oldSets/LithoScaleClement1b_SA.txt index 229ce0ef..37505123 100644 --- a/misc/oldSets/LithoScaleClement1b_SA.txt +++ b/misc/oldSets/LithoScaleClement1b_SA.txt @@ -94,7 +94,7 @@ ID = 0 density_model = 3 rho = 3260.00 /lithos G = 3e20 /module de cisaillement -Cv = 1050 /heat capacity +Cp = 1050 /heat capacity k = 3.0 /conductivity Qr = 1e-10 /heat production C = 5e70 /cohesion @@ -120,7 +120,7 @@ ID = 1 density_model = 3 rho = 3260.00 /lithos G = 3e20 /module de cisaillement -Cv = 1050 /heat capacity +Cp = 1050 /heat capacity k = 3.0 /conductivity Qr = 1e-10 /heat production C = 5e70 /cohesion @@ -146,7 +146,7 @@ ID = 2 / astheno density_model = 3 rho = 3250.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-10 C = 5e7 @@ -172,7 +172,7 @@ ID = 3 / c density_model = 3 rho = 2800.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 2 Qr = 0.4e-6 C = 5e7 @@ -195,7 +195,7 @@ ID = 4 / c density_model = 3 rho = 2800.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 2 Qr = 0.4e-6 C = 5e7 @@ -218,7 +218,7 @@ ID = 5 / sed density_model = 3 rho = 2800.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 2 Qr = 0.4e-6 C = 5e7 diff --git a/misc/oldSets/LithoScaleClement2.txt b/misc/oldSets/LithoScaleClement2.txt index 5eec4f16..9312e58e 100644 --- a/misc/oldSets/LithoScaleClement2.txt +++ b/misc/oldSets/LithoScaleClement2.txt @@ -91,7 +91,7 @@ ID = 0 density_model = 3 rho = 3260.00 /lithos G = 3e10 /module de cisaillement -Cv = 1050 /heat capacity +Cp = 1050 /heat capacity k = 3.0 /conductivity Qr = 1e-10 /heat production C = 5e7 /cohesion @@ -117,7 +117,7 @@ ID = 1 density_model = 3 rho = 3260.00 /weak zone G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-10 C = 5e7 @@ -143,7 +143,7 @@ ID = 2 / astheno density_model = 3 rho = 3250.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-10 C = 5e7 @@ -169,7 +169,7 @@ ID = 3 / c density_model = 3 rho = 2800.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 2 Qr = 0.4e-6 C = 5e7 @@ -192,7 +192,7 @@ ID = 4 / c density_model = 3 rho = 2800.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 2 Qr = 0.4e-6 C = 5e7 @@ -215,7 +215,7 @@ ID = 5 / sed density_model = 3 rho = 2800.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 2 Qr = 0.4e-6 C = 5e7 diff --git a/misc/oldSets/LithoScaleClement3b.txt b/misc/oldSets/LithoScaleClement3b.txt index 9f90b2c1..f66aac05 100644 --- a/misc/oldSets/LithoScaleClement3b.txt +++ b/misc/oldSets/LithoScaleClement3b.txt @@ -93,7 +93,7 @@ ID = 0 density_model = 3 rho = 3260.00 /lithos G = 3e10 /module de cisaillement -Cv = 1050 /heat capacity +Cp = 1050 /heat capacity k = 3.0 /conductivity Qr = 1e-10 /heat production C = 5e7 /cohesion @@ -119,7 +119,7 @@ ID = 1 density_model = 3 rho = 3260.00 /lithos G = 3e20 /module de cisaillement -Cv = 1050 /heat capacity +Cp = 1050 /heat capacity k = 3.0 /conductivity Qr = 1e-10 /heat production C = 5e70 /cohesion @@ -145,7 +145,7 @@ ID = 2 / astheno density_model = 3 rho = 3250.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-10 C = 5e7 @@ -171,7 +171,7 @@ ID = 3 / c density_model = 3 rho = 2800.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 2 Qr = 0.4e-6 C = 5e7 @@ -194,7 +194,7 @@ ID = 4 / c density_model = 3 rho = 2800.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 2 Qr = 0.4e-6 C = 5e7 @@ -217,7 +217,7 @@ ID = 5 / sed density_model = 3 rho = 2800.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 2 Qr = 0.4e-6 C = 5e7 diff --git a/misc/oldSets/LithoScaleComp.txt b/misc/oldSets/LithoScaleComp.txt index cf91640f..bae4cd8e 100644 --- a/misc/oldSets/LithoScaleComp.txt +++ b/misc/oldSets/LithoScaleComp.txt @@ -83,7 +83,7 @@ ID = 0 density_model = 3 rho = 3260.00 /lithos G = 3e10 /module de cisaillement -Cv = 1050 /heat capacity +Cp = 1050 /heat capacity k = 3.0 /conductivity Qr = 1e-10 /heat production C = 1e7 /cohesion @@ -109,7 +109,7 @@ ID = 1 density_model = 3 rho = 3260.00 /weak zone G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-10 C = 1e6 @@ -135,7 +135,7 @@ ID = 2 / astheno density_model = 3 rho = 3250.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-10 C = 1e6 @@ -161,7 +161,7 @@ ID = 3 / uc density_model = 3 rho = 2700.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-6 C = 2e7 @@ -188,7 +188,7 @@ ID = 4 / mc density_model = 3 rho = 2750.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-6 C = 2e7 @@ -215,7 +215,7 @@ ID = 5 / lc density_model = 3 rho = 2800.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-6 C = 2e7 diff --git a/misc/oldSets/LithoScaleSymTest.txt b/misc/oldSets/LithoScaleSymTest.txt index 4e70ce4d..14d177e2 100644 --- a/misc/oldSets/LithoScaleSymTest.txt +++ b/misc/oldSets/LithoScaleSymTest.txt @@ -83,7 +83,7 @@ ID = 0 density_model = 3 rho = 3260.00 /lithos G = 3e10 /module de cisaillement -Cv = 1050 /heat capacity +Cp = 1050 /heat capacity k = 3.0 /conductivity Qr = 1e-10 /heat production C = 1e7 /cohesion @@ -109,7 +109,7 @@ ID = 1 density_model = 3 rho = 3260.00 /weak zone G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-10 C = 1e6 @@ -135,7 +135,7 @@ ID = 2 / astheno density_model = 3 rho = 3250.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-10 C = 1e6 @@ -161,7 +161,7 @@ ID = 3 / uc density_model = 3 rho = 2700.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-6 C = 2e7 @@ -189,7 +189,7 @@ ID = 4 / mc density_model = 3 rho = 2750.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-6 C = 2e7 @@ -216,7 +216,7 @@ ID = 5 / lc density_model = 3 rho = 2800.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-6 C = 2e7 @@ -240,7 +240,7 @@ ID = 6 / air density_model = 3 rho = 1.00 G = 3e100 -Cv = 1050 +Cp = 1050 k = 3000.0 Qr = 1e-6 C = 2e7 diff --git a/misc/oldSets/LithoScale_SA.txt b/misc/oldSets/LithoScale_SA.txt index e8484615..dd2bc2d1 100644 --- a/misc/oldSets/LithoScale_SA.txt +++ b/misc/oldSets/LithoScale_SA.txt @@ -84,7 +84,7 @@ ID = 0 density_model = 3 rho = 3260.00 /lithos G = 3e10 /module de cisaillement -Cv = 1050 /heat capacity +Cp = 1050 /heat capacity k = 3.0 /conductivity Qr = 1e-10 /heat production C = 1e7 /cohesion @@ -110,7 +110,7 @@ ID = 1 density_model = 3 rho = 3260.00 /weak zone G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-10 C = 1e6 @@ -136,7 +136,7 @@ ID = 2 / astheno density_model = 3 rho = 3250.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-10 C = 1e6 @@ -162,7 +162,7 @@ ID = 3 / uc density_model = 3 rho = 2700.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-6 C = 2e7 @@ -189,7 +189,7 @@ ID = 4 / mc density_model = 3 rho = 2750.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-6 C = 2e7 @@ -216,7 +216,7 @@ ID = 5 / lc density_model = 3 rho = 2800.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-6 C = 2e7 @@ -240,7 +240,7 @@ ID = 6 / sticky air density_model = 3 rho = 1.00 G = 3e100 -Cv = 1050 +Cp = 1050 k = 3000.0 Qr = 1e-6 C = 2e7 diff --git a/misc/oldSets/LithoScale_SA2.txt b/misc/oldSets/LithoScale_SA2.txt index a619d6a8..a31eaed6 100644 --- a/misc/oldSets/LithoScale_SA2.txt +++ b/misc/oldSets/LithoScale_SA2.txt @@ -84,7 +84,7 @@ ID = 0 density_model = 3 rho = 3260.00 /lithos G = 3e10 /module de cisaillement -Cv = 1050 /heat capacity +Cp = 1050 /heat capacity k = 3.0 /conductivity Qr = 1e-10 /heat production C = 1e7 /cohesion @@ -110,7 +110,7 @@ ID = 1 density_model = 3 rho = 3260.00 /weak zone G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-10 C = 1e6 @@ -136,7 +136,7 @@ ID = 2 / astheno density_model = 3 rho = 3250.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-10 C = 1e6 @@ -162,7 +162,7 @@ ID = 3 / uc density_model = 3 rho = 2700.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-6 C = 2e7 @@ -189,7 +189,7 @@ ID = 4 / mc density_model = 3 rho = 2750.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-6 C = 2e7 @@ -216,7 +216,7 @@ ID = 5 / lc density_model = 3 rho = 2800.00 G = 3e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 1e-6 C = 2e7 @@ -240,7 +240,7 @@ ID = 6 / sticky air density_model = 3 rho = 1.00 G = 3e100 -Cv = 1050 +Cp = 1050 k = 3000.0 Qr = 1e-6 C = 2e7 diff --git a/misc/oldSets/LorenzoWilsonEllipse.txt b/misc/oldSets/LorenzoWilsonEllipse.txt index 83c35297..166e3588 100644 --- a/misc/oldSets/LorenzoWilsonEllipse.txt +++ b/misc/oldSets/LorenzoWilsonEllipse.txt @@ -90,7 +90,7 @@ ID = 0 / Background Crust - EUROPE rho = 2800.00 / Anorthite - Rybacki & Dresen (2004) eta = 5e23 G = 2e10 -Cv = 1050 +Cp = 1050 k = 2.25 Qr = 1.02e-6 / Kelemen C = 1e7 @@ -118,7 +118,7 @@ ID = 1 / Quartzite Lenses - EUROPE rho = 2800.00 /Wet Quartzite - Ranalli (1995) eta = 5e21 G = 2e10 -Cv = 1050 +Cp = 1050 k = 2.25 Qr = 1.02e-6 / Kelemen C = 1e6 @@ -146,7 +146,7 @@ ID = 2 / Diabase Lenses - EUROPE rho = 2800.00 / Maryland Diabase - Mackwell et al. (1998) eta = 5e21 G = 2e10 -Cv = 1050 +Cp = 1050 k = 2.25 Qr = 1.02e-6 / Kelemen C = 1e7 @@ -174,7 +174,7 @@ ID = 3 / Strong Mantle Lithosphere - Standard rho = 3350.00 / Olivine Dry Dislocation creep - Hirth & Kohlstedt (2003) eta = 5e23 G = 2e10 -Cv = 1050 +Cp = 1050 k = 2.75 / Hofmeister 1999 - Science Qr = 2.1139e-8 C = 1e7 @@ -202,7 +202,7 @@ ID = 4 / Strong Mantle Asthenosphere - Standard rho = 3350.00 / Olivine Dry Dislocation creep - Hirth & Kohlstedt (2003) eta = 5e23 G = 2e10 -Cv = 1050 +Cp = 1050 k = 2.75 Qr = 2.1139e-8 C = 1e7 @@ -230,7 +230,7 @@ ID = 5 / Weak lithospheric lenses - Standard rho = 3350.00 / Olivine Wet Dislocation creep - Hirth & Kohlstedt (2003) eta = 5e23 G = 2e10 -Cv = 1050 +Cp = 1050 k = 2.75 Qr = 2.1139e-8 C = 1e7 @@ -258,7 +258,7 @@ ID = 6 / Sediments 1 rho = 2800.00 / Calcite - Schmid et al. (1977) eta = 5e21 G = 2e10 -Cv = 1050 +Cp = 1050 k = 2.37 / Taken from Book: Applied Geothermics Eppelbaum|Kutasov Table 2.5 Qr = 0.56e-6 / Taken from Hasterok - Gard (2017) - Limestone (Sediments) C = 1e7 @@ -287,7 +287,7 @@ ID = 7 / Sediments 2 rho = 2800.00 / Mica - Kronenberg et al. (1990) eta = 5e21 G = 2e10 -Cv = 1050 +Cp = 1050 k = 2.55 / Taken from Book: Applied Geothermics Eppelbaum|Kutasov Table 2.5 Qr = 2.9e-6 / Taken from Hasterok - Gard (2017) - Shale (Sediments) C = 1e7 @@ -315,7 +315,7 @@ ID = 8 / Serpentinite rho = 2585.00 / Antigorite Dislocation creep - Hilairet (2007) / Density taken from: Subduction factory 1 - Hacker, Abers, Peacock 2003 eta = 5e23 G = 1.81e10 / taken from Hacker Abers Peacock 2003 -Cv = 1050 +Cp = 1050 k = 2.75 Qr = 2.1139e-8 C = 1e7 @@ -344,7 +344,7 @@ ID = 9 / Background Crust - ADRIA rho = 2800.00 / Anorthite - Rybacki & Dresen (2004) eta = 5e23 G = 2e10 -Cv = 1050 +Cp = 1050 k = 2.25 Qr = 1.02e-6 / Kelemen C = 1e7 @@ -372,7 +372,7 @@ ID = 10 / Quartzite Lenses - ADRIA rho = 2800.00 / Wet Quartzite - Ranalli (1995) eta = 5e21 G = 2e10 -Cv = 1050 +Cp = 1050 k = 2.25 Qr = 1.02e-6 / Kelemen C = 1e6 @@ -400,7 +400,7 @@ ID = 11 / Diabase Lenses - ADRIA rho = 2800.00 / Maryland Diabase - Mackwell et al. (1998) eta = 5e21 G = 2e10 -Cv = 1050 +Cp = 1050 k = 2.25 Qr = 1.02e-6 / Kelemen C = 1e7 @@ -428,7 +428,7 @@ ID = 12 / Lower Crust - EUROPE rho = 2900.00 / Anorthite - Rybacki & Dresen (2004) eta = 5e23 G = 2e10 -Cv = 1050 +Cp = 1050 k = 2.25 Qr = 0.26e-6 C = 1e7 @@ -456,7 +456,7 @@ ID = 13 / Lower Crust - ADRIA rho = 2900.00 / Anorthite - Rybacki & Dresen (2004) eta = 5e23 G = 2e10 -Cv = 1050 +Cp = 1050 k = 2.25 Qr = 0.26e-6 C = 1e7 diff --git a/misc/oldSets/M2DiReacTest.txt b/misc/oldSets/M2DiReacTest.txt index 31202833..963137f7 100644 --- a/misc/oldSets/M2DiReacTest.txt +++ b/misc/oldSets/M2DiReacTest.txt @@ -83,7 +83,7 @@ Nb_phases = 7 ID = 0 rho = 2800.00 / matrix Granulite G = 3.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 1.0e70 @@ -113,7 +113,7 @@ tr = 20.0e11 ID = 1 rho = 2800.00 / Dry CPX inclusion G = 12.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 5.0e70 @@ -139,7 +139,7 @@ reac_soft = 0 ID = 2 rho = 2800.00 / Dry CPX inclusion G = 12.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 5.0e70 @@ -165,7 +165,7 @@ reac_soft = 0 ID = 3 rho = 2800.00 / matrix Granulite G = 3.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 1.0e70 @@ -195,7 +195,7 @@ tr = 20.0e11 ID = 4 rho = 2600.00 /SALT no used right now G = 3.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 50.0e60 @@ -221,7 +221,7 @@ reac_soft = 0 ID = 5 rho = 3000.00 / Omphacite G = 3.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 1.0e70 @@ -247,7 +247,7 @@ reac_soft = 0 ID = 6 rho = 3000.00 / Omphacite G = 3.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 1.0e70 diff --git a/misc/oldSets/M2DiReacTest_scale.txt b/misc/oldSets/M2DiReacTest_scale.txt index a8079d1b..d5ff85cc 100644 --- a/misc/oldSets/M2DiReacTest_scale.txt +++ b/misc/oldSets/M2DiReacTest_scale.txt @@ -83,7 +83,7 @@ Nb_phases = 7 ID = 0 rho = 2800.00 / matrix Granulite G = 3.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 1.0e70 @@ -113,7 +113,7 @@ tr = 20.0e11 ID = 1 rho = 2800.00 / Dry CPX inclusion G = 12.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 5.0e70 @@ -139,7 +139,7 @@ reac_soft = 0 ID = 2 rho = 2800.00 / Dry CPX inclusion G = 12.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 5.0e70 @@ -165,7 +165,7 @@ reac_soft = 0 ID = 3 rho = 2800.00 / matrix Granulite G = 3.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 1.0e70 @@ -195,7 +195,7 @@ tr = 20.0e11 ID = 4 rho = 2600.00 /SALT no used right now G = 3.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 50.0e60 @@ -221,7 +221,7 @@ reac_soft = 0 ID = 5 rho = 3000.00 / Omphacite G = 3.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 1.0e70 @@ -247,7 +247,7 @@ reac_soft = 0 ID = 6 rho = 3000.00 / Omphacite G = 3.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 1.0e70 diff --git a/misc/oldSets/MetamSoleBasic.txt b/misc/oldSets/MetamSoleBasic.txt index eb3c2cdf..6736cff7 100644 --- a/misc/oldSets/MetamSoleBasic.txt +++ b/misc/oldSets/MetamSoleBasic.txt @@ -83,7 +83,7 @@ Nb_phases = 4 ID = 0 rho = 2800.00 /inclusion G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -110,7 +110,7 @@ aniso_factor = 1 ID = 1 rho = 2800.00 /inclusion G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -137,7 +137,7 @@ aniso_factor = 1 ID = 2 rho = 2800.00 /matrix G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -164,7 +164,7 @@ aniso_factor = 10 ID = 3 rho = 2800.00 /matrix G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 diff --git a/misc/oldSets/MetamSoleLitho.txt b/misc/oldSets/MetamSoleLitho.txt index 79c6de77..5bdcfc77 100644 --- a/misc/oldSets/MetamSoleLitho.txt +++ b/misc/oldSets/MetamSoleLitho.txt @@ -82,7 +82,7 @@ Nb_phases = 9 ID = 0 rho = 2800.00 /inclusion G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -109,7 +109,7 @@ aniso_factor = 1 ID = 1 rho = 2800.00 /inclusion G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -136,7 +136,7 @@ aniso_factor = 1 ID = 2 rho = 2800.00 /matrix G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -163,7 +163,7 @@ aniso_factor = 10 ID = 3 rho = 2800.00 /matrix G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -190,7 +190,7 @@ aniso_factor = 10 ID = 4 rho = 2800.00 /basalt G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -223,7 +223,7 @@ Ce = 20.0e6 ID = 5 rho = 2800.00 /gabbro G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -256,7 +256,7 @@ Ce = 50.0e6 ID = 6 rho = 2800.00 /serpentine G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -284,7 +284,7 @@ aniso_factor = 10 ID = 7 rho = 2800.00 /sediments G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -311,7 +311,7 @@ aniso_factor = 10 ID = 8 rho = 2800.00 /asthenosphere G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 diff --git a/misc/oldSets/MetamSoleLitho_v2.txt b/misc/oldSets/MetamSoleLitho_v2.txt index 290a3426..8ba3c4c2 100644 --- a/misc/oldSets/MetamSoleLitho_v2.txt +++ b/misc/oldSets/MetamSoleLitho_v2.txt @@ -81,7 +81,7 @@ Nb_phases = 12 ID = 0 rho = 2800.00 /inclusion G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -108,7 +108,7 @@ aniso_factor = 1 ID = 1 rho = 2800.00 /inclusion G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -135,7 +135,7 @@ aniso_factor = 1 ID = 2 rho = 2800.00 /matrix G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -162,7 +162,7 @@ aniso_factor = 10 ID = 3 rho = 2800.00 /matrix G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -189,7 +189,7 @@ aniso_factor = 10 ID = 4 rho = 2800.00 /basalt G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -222,7 +222,7 @@ Ce = 20.0e6 ID = 5 rho = 2800.00 /gabbro G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -255,7 +255,7 @@ Ce = 50.0e6 ID = 6 rho = 2800.00 /serpentine G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -283,7 +283,7 @@ aniso_factor = 10 ID = 7 rho = 2800.00 /sediments G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -310,7 +310,7 @@ aniso_factor = 10 ID = 8 rho = 2800.00 /asthenosphere G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -338,7 +338,7 @@ aniso_factor = 10 ID = 9 rho = 2800.00 /basalt G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -371,7 +371,7 @@ Ce = 20.0e6 ID = 10 rho = 2800.00 /gabbro G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -404,7 +404,7 @@ Ce = 50.0e6 ID = 11 rho = 2800.00 /sediments G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 diff --git a/misc/oldSets/MetamSoleRidge.txt b/misc/oldSets/MetamSoleRidge.txt index a6abf842..84f58bff 100644 --- a/misc/oldSets/MetamSoleRidge.txt +++ b/misc/oldSets/MetamSoleRidge.txt @@ -82,7 +82,7 @@ Nb_phases = 12 ID = 0 rho = 2800.00 /inclusion G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -109,7 +109,7 @@ aniso_factor = 1 ID = 1 rho = 2800.00 /inclusion G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -136,7 +136,7 @@ aniso_factor = 1 ID = 2 rho = 2800.00 /matrix G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -169,7 +169,7 @@ Ce = 20.0e6 ID = 3 rho = 2800.00 /matrix G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -202,7 +202,7 @@ Ce = 20.0e6 ID = 4 rho = 2800.00 /basalt G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -235,7 +235,7 @@ Ce = 20.0e6 ID = 5 rho = 2800.00 /gabbro G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -268,7 +268,7 @@ Ce = 20.0e6 ID = 6 rho = 2800.00 /serpentine G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -296,7 +296,7 @@ aniso_factor = 10 ID = 7 rho = 2800.00 /sediments G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -323,7 +323,7 @@ aniso_factor = 10 ID = 8 rho = 2800.00 /asthenosphere G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -351,7 +351,7 @@ aniso_factor = 10 ID = 9 rho = 2800.00 /basalt G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -384,7 +384,7 @@ Ce = 20.0e6 ID = 10 rho = 2800.00 /gabbro G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -417,7 +417,7 @@ Ce = 20.0e6 ID = 11 rho = 2800.00 /sediments G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 diff --git a/misc/oldSets/MetamSoleRidge_v2.txt b/misc/oldSets/MetamSoleRidge_v2.txt index fbe8e4f6..14adc56d 100644 --- a/misc/oldSets/MetamSoleRidge_v2.txt +++ b/misc/oldSets/MetamSoleRidge_v2.txt @@ -85,7 +85,7 @@ Nb_phases = 12 ID = 0 rho = 1000.00 /inclusion G = 3e10 -Cv = 1050 +Cp = 1050 k = 200.0 Qr = 0 C = 5e20 @@ -112,7 +112,7 @@ aniso_factor = 1 ID = 1 rho = 2800.00 /inclusion G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -139,7 +139,7 @@ aniso_factor = 1 ID = 2 rho = 3200.00 /matrix G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -172,7 +172,7 @@ Ce = 20.0e6 ID = 3 rho = 3200.00 /matrix G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -205,7 +205,7 @@ Ce = 20.0e6 ID = 4 rho = 2800.00 /basalt G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -238,7 +238,7 @@ Ce = 20.0e6 ID = 5 rho = 2850.00 /gabbro G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -271,7 +271,7 @@ Ce = 20.0e6 ID = 6 rho = 2800.00 /serpentine G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -299,7 +299,7 @@ aniso_factor = 10 ID = 7 rho = 2800.00 /sediments G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -326,7 +326,7 @@ aniso_factor = 10 ID = 8 rho = 3200.00 /asthenosphere G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -354,7 +354,7 @@ aniso_factor = 10 ID = 9 rho = 2800.00 /basalt G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -387,7 +387,7 @@ Ce = 20.0e6 ID = 10 rho = 2850.00 /gabbro G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -420,7 +420,7 @@ Ce = 20.0e6 ID = 11 rho = 2800.00 /sediments G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 diff --git a/misc/oldSets/MetamSoleRidge_v3.txt b/misc/oldSets/MetamSoleRidge_v3.txt index 53f6d40f..9dd9399f 100644 --- a/misc/oldSets/MetamSoleRidge_v3.txt +++ b/misc/oldSets/MetamSoleRidge_v3.txt @@ -85,7 +85,7 @@ Nb_phases = 12 ID = 0 rho = 1000.00 /inclusion G = 3e10 -Cv = 1050 +Cp = 1050 k = 200.0 Qr = 0 C = 5e20 @@ -112,7 +112,7 @@ aniso_factor = 1 ID = 1 rho = 2800.00 /inclusion G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -139,7 +139,7 @@ aniso_factor = 1 ID = 2 rho = 3200.00 /matrix G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -172,7 +172,7 @@ Ce = 20.0e6 ID = 3 rho = 3200.00 /matrix G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -205,7 +205,7 @@ Ce = 20.0e6 ID = 4 rho = 2800.00 /basalt G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -238,7 +238,7 @@ Ce = 20.0e6 ID = 5 rho = 2850.00 /gabbro G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -271,7 +271,7 @@ Ce = 20.0e6 ID = 6 rho = 2800.00 /serpentine G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -299,7 +299,7 @@ aniso_factor = 10 ID = 7 rho = 2800.00 /sediments G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -326,7 +326,7 @@ aniso_factor = 10 ID = 8 rho = 3200.00 /asthenosphere G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -354,7 +354,7 @@ aniso_factor = 10 ID = 9 rho = 2800.00 /basalt G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -387,7 +387,7 @@ Ce = 20.0e6 ID = 10 rho = 2850.00 /gabbro G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 @@ -420,7 +420,7 @@ Ce = 20.0e6 ID = 11 rho = 2800.00 /sediments G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.0 Qr = 0 C = 5e7 diff --git a/misc/oldSets/PlateauPierre.txt b/misc/oldSets/PlateauPierre.txt index 98be5ff6..b6eaea36 100644 --- a/misc/oldSets/PlateauPierre.txt +++ b/misc/oldSets/PlateauPierre.txt @@ -87,7 +87,7 @@ density_model = 1 gs_ref = 2e-3 rho = 2800.00 / lower crust G = 2.5e10 -Cv = 1050 +Cp = 1050 k = 2.1 Qr = 0.2e-6 C = 5e6 @@ -111,7 +111,7 @@ density_model = 1 gs_ref = 2e-3 rho = 2506.00 / upper crust (right) G = 2.5e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 1.4e-6 C = 5e6 @@ -133,7 +133,7 @@ Qpwl = 186.5e3 ID = 0 rho = 2800.00 / upper crust India G = 2.5e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 1.4e-6 C = 5e6 @@ -157,7 +157,7 @@ density_model = 1 gs_ref = 2e-3 rho = 3230.00 / lithospheric mantle (right) G = 2.5e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 0e-10 C = 5e6 @@ -181,7 +181,7 @@ density_model = 1 gs_ref = 2e-3 rho = 2506 / lower crust (right) G = 2.5e10 -Cv = 1050 +Cp = 1050 k = 2.1 Qr = 0.2e-6 C = 5e6 @@ -205,7 +205,7 @@ density_model = 1 gs_ref = 2e-3 rho = 3300.00 / lithospheric mantle (left) G = 2.5e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 0e-10 C = 5e6 @@ -229,7 +229,7 @@ density_model = 1 gs_ref = 2e-3 rho = 3300.00 / asthenosphere (adiabatic) G = 2.5e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 0e-10 C = 5e6 diff --git a/misc/oldSets/PressureTemplate.txt b/misc/oldSets/PressureTemplate.txt index c41dceb9..3a65b8b8 100755 --- a/misc/oldSets/PressureTemplate.txt +++ b/misc/oldSets/PressureTemplate.txt @@ -79,7 +79,7 @@ Nb_phases = 3 ID = 0 rho = 3295.00 / matrix --- omphacite G = 6e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e7 @@ -106,7 +106,7 @@ density_model = 3 ID = 1 rho = 3577.00 / inclusion 1 - garnet G = 9e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e7 @@ -133,7 +133,7 @@ density_model = 3 ID = 2 rho = 2700.00 / inclusion G = 6e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e7 diff --git a/misc/oldSets/PureShear_Lithos_FS.txt b/misc/oldSets/PureShear_Lithos_FS.txt index 1fa370e4..f38e9bf6 100644 --- a/misc/oldSets/PureShear_Lithos_FS.txt +++ b/misc/oldSets/PureShear_Lithos_FS.txt @@ -78,7 +78,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 20e6 @@ -102,7 +102,7 @@ Qpwl = 0 ID = 1 rho = 2700.00 / inclusion G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 2e90 diff --git a/misc/oldSets/QuartzCoesite.txt b/misc/oldSets/QuartzCoesite.txt index 6c0d318a..d1d1e258 100644 --- a/misc/oldSets/QuartzCoesite.txt +++ b/misc/oldSets/QuartzCoesite.txt @@ -82,7 +82,7 @@ Nb_phases = 3 ID = 0 rho = 3295.00 / matrix --- omphacite G = 6e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e7 @@ -109,7 +109,7 @@ density_model = 3 ID = 1 rho = 3577.00 / inclusion 1 - garnet G = 9e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e6 @@ -136,7 +136,7 @@ density_model = 3 ID = 2 rho = 2700.00 / inclusion G = 6e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e7 diff --git a/misc/oldSets/Reaction.txt b/misc/oldSets/Reaction.txt index 3fcb9a52..db0d7e04 100644 --- a/misc/oldSets/Reaction.txt +++ b/misc/oldSets/Reaction.txt @@ -84,7 +84,7 @@ Nb_phases = 7 ID = 0 rho = 2800.00 / matrix Granulite G = 3.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 1.0e70 @@ -114,7 +114,7 @@ tr = 3.1558e8 ID = 1 rho = 2800.00 / Dry CPX inclusion G = 3.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 5.0e70 @@ -140,7 +140,7 @@ reac_soft = 0 ID = 2 rho = 2800.00 / Dry CPX inclusion G = 3.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 5.0e70 @@ -166,7 +166,7 @@ reac_soft = 0 ID = 3 rho = 2800.00 / matrix Granulite G = 3.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 1.0e70 @@ -196,7 +196,7 @@ tr = 3.1558e8 ID = 4 rho = 2600.00 /SALT no used right now G = 3.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 50.0e60 @@ -222,7 +222,7 @@ reac_soft = 0 ID = 5 rho = 3000.00 / Omphacite G = 3.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 1.0e70 @@ -248,7 +248,7 @@ reac_soft = 0 ID = 6 rho = 3000.00 / Omphacite G = 3.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 1.0e70 diff --git a/misc/oldSets/ReactionCentre.txt b/misc/oldSets/ReactionCentre.txt index 17b4352d..8d2d0742 100644 --- a/misc/oldSets/ReactionCentre.txt +++ b/misc/oldSets/ReactionCentre.txt @@ -84,7 +84,7 @@ Nb_phases = 7 ID = 0 rho = 2800.00 / matrix Granulite G = 3.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 1.0e70 @@ -115,7 +115,7 @@ density_model = 3 ID = 1 rho = 2800.00 / Dry CPX inclusion G = 3.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 5.0e70 @@ -142,7 +142,7 @@ density_model = 3 ID = 2 rho = 2800.00 / Dry CPX inclusion G = 3.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 5.0e70 @@ -169,7 +169,7 @@ density_model = 3 ID = 3 rho = 2800.00 / matrix Granulite G = 3.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 1.0e70 @@ -200,7 +200,7 @@ density_model = 3 ID = 4 rho = 2600.00 /SALT no used right now G = 3.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 50.0e60 @@ -227,7 +227,7 @@ density_model = 3 ID = 5 rho = 3000.00 / Omphacite G = 3.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 1.0e70 @@ -254,7 +254,7 @@ density_model = 3 ID = 6 rho = 3000.00 / Omphacite G = 3.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 1.0e70 diff --git a/misc/oldSets/ReactionM2Di.txt b/misc/oldSets/ReactionM2Di.txt index 1f7a85ac..c907d9c8 100644 --- a/misc/oldSets/ReactionM2Di.txt +++ b/misc/oldSets/ReactionM2Di.txt @@ -87,7 +87,7 @@ Nb_phases = 7 ID = 0 rho = 2800.00 / matrix Granulite G = 3.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 1.0e70 @@ -119,7 +119,7 @@ density_model = 3 ID = 1 rho = 2800.00 / Dry CPX inclusion G = 3.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 5.0e70 @@ -151,7 +151,7 @@ density_model = 3 ID = 2 rho = 2800.00 / Dry CPX inclusion G = 3.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 5.0e70 @@ -183,7 +183,7 @@ density_model = 3 ID = 3 rho = 2800.00 / matrix Granulite G = 3.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 1.0e70 @@ -215,7 +215,7 @@ density_model = 3 ID = 4 rho = 2600.00 /SALT no used right now G = 3.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 50.0e60 @@ -247,7 +247,7 @@ density_model = 3 ID = 5 rho = 2800.00 / Omphacite G = 3.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 1.0e70 @@ -279,7 +279,7 @@ density_model = 3 ID = 6 rho = 2800.00 / Omphacite G = 3.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 1.0e70 diff --git a/misc/oldSets/Rift_PhaseChanges.txt b/misc/oldSets/Rift_PhaseChanges.txt index 8710ec52..d8524497 100755 --- a/misc/oldSets/Rift_PhaseChanges.txt +++ b/misc/oldSets/Rift_PhaseChanges.txt @@ -160,7 +160,7 @@ bet = 1e-11 / compressibility G = 1e10 / shear modulus -Cv = 1050 / heat capacity +Cp = 1050 / heat capacity k = 2 / thermal conductivity @@ -190,7 +190,7 @@ rho = 2800.00 / Crust - Maryland Diabase G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.5 @@ -230,7 +230,7 @@ bet = 1.5e-11 G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 3.0 @@ -266,7 +266,7 @@ bet = 1.5e-11 G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 3.0 @@ -298,7 +298,7 @@ rho = 2300.00 / sediments G = 1e10 -Cv = 1050 +Cp = 1050 k = 2 @@ -343,7 +343,7 @@ rho = 2300.00 / sediments G = 1e10 -Cv = 1050 +Cp = 1050 k = 2 @@ -393,7 +393,7 @@ bet = 1.5e-11 G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 30.0 @@ -423,7 +423,7 @@ rho = 2800.00 / Crust - Dry Quartz G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.5 @@ -457,7 +457,7 @@ rho = 2800.00 / Crust - Dry Quartz G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.5 diff --git a/misc/oldSets/RiftingPaulineMD6.txt b/misc/oldSets/RiftingPaulineMD6.txt index a264bcb9..dbafb24a 100755 --- a/misc/oldSets/RiftingPaulineMD6.txt +++ b/misc/oldSets/RiftingPaulineMD6.txt @@ -83,7 +83,7 @@ rho = 2700.00 / ref. density alp = 32.0e-6 / thermal expansivity bet = 1e-11 / compressibility G = 1e10 / shear modulus -Cv = 1050 / heat capacity +Cp = 1050 / heat capacity k = 2 / thermal conductivity Qr = 1e-6 / radiogenic heat production C = 1e7 / cohesion @@ -97,7 +97,7 @@ expv = 0 / Pierls viscosity -> database flow_laws.c ID = 1 rho = 2800.00 / Crust - Maryland Diabase G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.5 Qr = 1.0e-6 C = 1.0e7 @@ -116,7 +116,7 @@ rho = 3330.00 / lithospheric mantle - Dry Olivine alp = 32.0e-6 bet = 1.5e-11 G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 3.0 Qr = 0.0 C = 1.0e7 @@ -133,7 +133,7 @@ rho = 3330.00 / asthenosphere (same as 2) alp = 32.0e-6 bet = 1.5e-11 G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 3.0 Qr = 0.0 C = 1.0e7 @@ -148,7 +148,7 @@ expv = 40 ID = 4 rho = 2300.00 / sediments G = 1e10 -Cv = 1050 +Cp = 1050 k = 2 Qr = 0.5e-6 C = 1e7 @@ -170,7 +170,7 @@ Qpwl = 0 ID = 5 rho = 2300.00 / sediments G = 1e10 -Cv = 1050 +Cp = 1050 k = 2 Qr = 0.5e-6 C = 1e7 @@ -194,7 +194,7 @@ rho = 3200.00 / impregnated asthenosphere (less dense and more conductive than alp = 32.0e-6 bet = 1.5e-11 G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 30.0 Qr = 0.0 C = 1.0e7 @@ -209,7 +209,7 @@ expv = 40 ID = 7 rho = 2800.00 / Crust - Dry Quartz G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.5 Qr = 1.0e-6 C = 1.0e7 @@ -226,7 +226,7 @@ expv = 0 ID = 8 rho = 2800.00 / Crust - Dry Quartz G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.5 Qr = 1.0e-6 C = 1.0e7 diff --git a/misc/oldSets/RiftingPaulineMD6_VALGRIND.txt b/misc/oldSets/RiftingPaulineMD6_VALGRIND.txt index a38d701f..304d4cca 100755 --- a/misc/oldSets/RiftingPaulineMD6_VALGRIND.txt +++ b/misc/oldSets/RiftingPaulineMD6_VALGRIND.txt @@ -83,7 +83,7 @@ rho = 2700.00 / ref. density alp = 32.0e-6 / thermal expansivity bet = 1e-11 / compressibility G = 1e10 / shear modulus -Cv = 1050 / heat capacity +Cp = 1050 / heat capacity k = 2 / thermal conductivity Qr = 1e-6 / radiogenic heat production C = 1e7 / cohesion @@ -97,7 +97,7 @@ expv = 0 / Pierls viscosity -> database flow_laws.c ID = 1 rho = 2800.00 / Crust - Maryland Diabase G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.5 Qr = 1.0e-6 C = 1.0e7 @@ -116,7 +116,7 @@ rho = 3330.00 / lithospheric mantle - Dry Olivine alp = 32.0e-6 bet = 1.5e-11 G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 3.0 Qr = 0.0 C = 1.0e7 @@ -133,7 +133,7 @@ rho = 3330.00 / asthenosphere (same as 2) alp = 32.0e-6 bet = 1.5e-11 G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 3.0 Qr = 0.0 C = 1.0e7 @@ -148,7 +148,7 @@ expv = 40 ID = 4 rho = 2300.00 / sediments G = 1e10 -Cv = 1050 +Cp = 1050 k = 2 Qr = 0.5e-6 C = 1e7 @@ -170,7 +170,7 @@ Qpwl = 0 ID = 5 rho = 2300.00 / sediments G = 1e10 -Cv = 1050 +Cp = 1050 k = 2 Qr = 0.5e-6 C = 1e7 @@ -194,7 +194,7 @@ rho = 3200.00 / impregnated asthenosphere (less dense and more conductive than alp = 32.0e-6 bet = 1.5e-11 G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 30.0 Qr = 0.0 C = 1.0e7 @@ -209,7 +209,7 @@ expv = 40 ID = 7 rho = 2800.00 / Crust - Dry Quartz G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.5 Qr = 1.0e-6 C = 1.0e7 @@ -226,7 +226,7 @@ expv = 0 ID = 8 rho = 2800.00 / Crust - Dry Quartz G = 1.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.5 Qr = 1.0e-6 C = 1.0e7 diff --git a/misc/oldSets/SH_Duretz14.txt b/misc/oldSets/SH_Duretz14.txt index f8bed874..21ab247a 100644 --- a/misc/oldSets/SH_Duretz14.txt +++ b/misc/oldSets/SH_Duretz14.txt @@ -66,7 +66,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 @@ -90,7 +90,7 @@ tpwl = 5 ID = 1 rho = 2700.00 / inclusion G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 diff --git a/misc/oldSets/Setup03_strongCircleAnisoConst.txt b/misc/oldSets/Setup03_strongCircleAnisoConst.txt index 1bf80929..399e6a05 100644 --- a/misc/oldSets/Setup03_strongCircleAnisoConst.txt +++ b/misc/oldSets/Setup03_strongCircleAnisoConst.txt @@ -77,7 +77,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1e3 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 @@ -102,7 +102,7 @@ aniso_factor = 10.0 ID = 1 rho = 2700.00 / inclusion G = 1e3 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 / cohesion (->plasticité pas allumée) diff --git a/misc/oldSets/ShearInclusionAniso.txt b/misc/oldSets/ShearInclusionAniso.txt index 2cfd6359..2efd66d7 100644 --- a/misc/oldSets/ShearInclusionAniso.txt +++ b/misc/oldSets/ShearInclusionAniso.txt @@ -78,7 +78,7 @@ Nb_phases = 4 ID = 0 rho = 2800.00 /inclusions omphacite 0 G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.3 Qr = 0 C = 2e7 @@ -103,7 +103,7 @@ aniso_factor = 1 ID = 1 rho = 2800.00 /inclusions omphacite 1 G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.3 Qr = 0 C = 2e7 @@ -128,7 +128,7 @@ aniso_factor = 1 ID = 2 rho = 3300.00 /matrix garnet G = 1e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 0 C = 2e7 @@ -153,7 +153,7 @@ aniso_factor = 10 ID = 3 rho = 3300.00 /matrix garnet G = 1e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 0 C = 2e7 diff --git a/misc/oldSets/ShearInclusionAniso2.txt b/misc/oldSets/ShearInclusionAniso2.txt index 68ff52af..e706c5e2 100755 --- a/misc/oldSets/ShearInclusionAniso2.txt +++ b/misc/oldSets/ShearInclusionAniso2.txt @@ -80,7 +80,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1e3 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 @@ -105,7 +105,7 @@ aniso_factor = 10.0 ID = 1 rho = 2700.00 / inclusion G = 1e3 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 diff --git a/misc/oldSets/ShearLayerAniso.txt b/misc/oldSets/ShearLayerAniso.txt index e9981bcc..6a6ea065 100644 --- a/misc/oldSets/ShearLayerAniso.txt +++ b/misc/oldSets/ShearLayerAniso.txt @@ -79,7 +79,7 @@ Nb_phases = 4 ID = 0 rho = 2800.00 /inclusions omphacite 0 G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.3 Qr = 0 C = 2e7 @@ -104,7 +104,7 @@ aniso_factor = 1 ID = 1 rho = 2800.00 /inclusions omphacite 1 G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.3 Qr = 0 C = 2e7 @@ -129,7 +129,7 @@ aniso_factor = 1 ID = 2 rho = 3300.00 /matrix garnet G = 1e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 0 C = 2e7 @@ -154,7 +154,7 @@ aniso_factor = 2 ID = 3 rho = 3300.00 /matrix garnet G = 1e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 0 C = 2e7 diff --git a/misc/oldSets/ShearTemplate.txt b/misc/oldSets/ShearTemplate.txt index 332c1e19..317fa31b 100755 --- a/misc/oldSets/ShearTemplate.txt +++ b/misc/oldSets/ShearTemplate.txt @@ -85,7 +85,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 @@ -108,7 +108,7 @@ Qpwl = 0 ID = 1 rho = 2700.00 / inclusion G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 diff --git a/misc/oldSets/Shear_VEP_aniso.txt b/misc/oldSets/Shear_VEP_aniso.txt index f24b3a36..75b5bcb5 100755 --- a/misc/oldSets/Shear_VEP_aniso.txt +++ b/misc/oldSets/Shear_VEP_aniso.txt @@ -77,7 +77,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 @@ -102,7 +102,7 @@ aniso_factor = 2 ID = 1 rho = 2700.00 / inclusion G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 diff --git a/misc/oldSets/Shear_VEVP.txt b/misc/oldSets/Shear_VEVP.txt index 9d1734b1..109f4fc1 100644 --- a/misc/oldSets/Shear_VEVP.txt +++ b/misc/oldSets/Shear_VEVP.txt @@ -74,7 +74,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 2.35e0 @@ -99,7 +99,7 @@ Qpwl = 0 ID = 1 rho = 2700.00 / inclusion G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 diff --git a/misc/oldSets/Shear_VEVP_comp.txt b/misc/oldSets/Shear_VEVP_comp.txt index 6ca2c2ea..8d19b185 100644 --- a/misc/oldSets/Shear_VEVP_comp.txt +++ b/misc/oldSets/Shear_VEVP_comp.txt @@ -75,7 +75,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 2.35e0 @@ -101,7 +101,7 @@ Qpwl = 0 ID = 1 rho = 2700.00 / inclusion G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 diff --git a/misc/oldSets/Shear_lin_aniso.txt b/misc/oldSets/Shear_lin_aniso.txt index e876a1ea..9e96f673 100644 --- a/misc/oldSets/Shear_lin_aniso.txt +++ b/misc/oldSets/Shear_lin_aniso.txt @@ -77,7 +77,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1e3 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 @@ -102,7 +102,7 @@ aniso_factor = 10.0 ID = 1 rho = 2700.00 / inclusion G = 1e3 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 diff --git a/misc/oldSets/Shear_pwl.txt b/misc/oldSets/Shear_pwl.txt index cae90efd..c916cd12 100755 --- a/misc/oldSets/Shear_pwl.txt +++ b/misc/oldSets/Shear_pwl.txt @@ -73,7 +73,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 @@ -96,7 +96,7 @@ Qpwl = 0 ID = 1 rho = 2700.00 / inclusion G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 diff --git a/misc/oldSets/Shear_pwl_FD.txt b/misc/oldSets/Shear_pwl_FD.txt index 48e87268..8362d0e8 100755 --- a/misc/oldSets/Shear_pwl_FD.txt +++ b/misc/oldSets/Shear_pwl_FD.txt @@ -73,7 +73,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 @@ -96,7 +96,7 @@ Qpwl = 0 ID = 1 rho = 2700.00 / inclusion G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 diff --git a/misc/oldSets/Shear_pwl_VE.txt b/misc/oldSets/Shear_pwl_VE.txt index 79ab3738..6b3e796c 100644 --- a/misc/oldSets/Shear_pwl_VE.txt +++ b/misc/oldSets/Shear_pwl_VE.txt @@ -76,7 +76,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e20 @@ -100,7 +100,7 @@ Qpwl = 0 ID = 1 rho = 2700.00 / inclusion G = 10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 diff --git a/misc/oldSets/Shear_pwl_aniso.txt b/misc/oldSets/Shear_pwl_aniso.txt index 3e8c43a7..2994fe5f 100755 --- a/misc/oldSets/Shear_pwl_aniso.txt +++ b/misc/oldSets/Shear_pwl_aniso.txt @@ -76,7 +76,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 @@ -101,7 +101,7 @@ aniso_factor = 2 ID = 1 rho = 2700.00 / inclusion G = 10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 diff --git a/misc/oldSets/SimpleShearAnisoHomo.txt b/misc/oldSets/SimpleShearAnisoHomo.txt index aa186307..fcdf1b30 100644 --- a/misc/oldSets/SimpleShearAnisoHomo.txt +++ b/misc/oldSets/SimpleShearAnisoHomo.txt @@ -80,7 +80,7 @@ Nb_phases = 4 ID = 0 rho = 2800.00 /inclusions omphacite 0 G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.3 Qr = 0 C = 2e7 @@ -105,7 +105,7 @@ aniso_factor = 10 ID = 1 rho = 2800.00 /inclusions omphacite 1 G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.3 Qr = 0 C = 2e7 @@ -130,7 +130,7 @@ aniso_factor = 10 ID = 2 rho = 3300.00 /matrix garnet G = 1e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 0 C = 2e7 @@ -155,7 +155,7 @@ aniso_factor = 10 ID = 3 rho = 3300.00 /matrix garnet G = 1e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 0 C = 2e7 diff --git a/misc/oldSets/SimpleShearNecking.txt b/misc/oldSets/SimpleShearNecking.txt index ebf72059..9dfbd3e2 100644 --- a/misc/oldSets/SimpleShearNecking.txt +++ b/misc/oldSets/SimpleShearNecking.txt @@ -78,7 +78,7 @@ Nb_phases = 4 ID = 0 rho = 2800.00 /inclusions G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.3 Qr = 0 C = 2e7 @@ -100,7 +100,7 @@ Qpwl = 0 ID = 1 rho = 2800.00 /inclusions G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.3 Qr = 0 C = 2e7 @@ -122,7 +122,7 @@ Qpwl = 0 ID = 2 rho = 3300.00 /matrix G = 1e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 0 C = 2e7 @@ -144,7 +144,7 @@ Qpwl = 0 ID = 3 rho = 3300.00 /matrix G = 1e10 -Cv = 1050 +Cp = 1050 k = 3.0 Qr = 0 C = 2e7 diff --git a/misc/oldSets/StefanBending.txt b/misc/oldSets/StefanBending.txt index 4f826eb3..d4fbad53 100644 --- a/misc/oldSets/StefanBending.txt +++ b/misc/oldSets/StefanBending.txt @@ -84,7 +84,7 @@ Nb_phases = 3 ID = 0 rho = 2800.00 / Crust G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 1e-6 C = 5e7 @@ -108,7 +108,7 @@ Qpwl = 0 ID = 1 rho = 3300.00 / Mantle lithosphere G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 5e7 @@ -132,7 +132,7 @@ Qpwl = 0 ID = 2 rho = 3300.00 / Astehenosphere G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 5e7 diff --git a/misc/oldSets/StefanBending_Cartesian.txt b/misc/oldSets/StefanBending_Cartesian.txt index c557bcea..1bf21f6d 100644 --- a/misc/oldSets/StefanBending_Cartesian.txt +++ b/misc/oldSets/StefanBending_Cartesian.txt @@ -84,7 +84,7 @@ Nb_phases = 3 ID = 0 rho = 2800.00 / Crust G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 1e-6 C = 5e7 @@ -108,7 +108,7 @@ Qpwl = 0 ID = 1 rho = 3300.00 / Mantle lithosphere G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 5e7 @@ -132,7 +132,7 @@ Qpwl = 0 ID = 2 rho = 3300.00 / Astehenosphere G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 5e7 diff --git a/misc/oldSets/StefanBending_debug.txt b/misc/oldSets/StefanBending_debug.txt index e60c3b29..1f1d7e13 100644 --- a/misc/oldSets/StefanBending_debug.txt +++ b/misc/oldSets/StefanBending_debug.txt @@ -85,7 +85,7 @@ Nb_phases = 3 ID = 0 rho = 2800.00 / Crust G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 1e-6 C = 5e7 @@ -109,7 +109,7 @@ Qpwl = 0 ID = 1 rho = 3300.00 / Mantle lithosphere G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 5e7 @@ -133,7 +133,7 @@ Qpwl = 0 ID = 2 rho = 3300.00 / Astehenosphere G = 3e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 5e7 diff --git a/misc/oldSets/VEP_Duretz18.txt b/misc/oldSets/VEP_Duretz18.txt index e2fe6db1..e5af3246 100644 --- a/misc/oldSets/VEP_Duretz18.txt +++ b/misc/oldSets/VEP_Duretz18.txt @@ -82,7 +82,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 plast = 1 @@ -109,7 +109,7 @@ Qpwl = 0 ID = 1 rho = 2700.00 / inclusion G = 2.5e9 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 plast = 1 diff --git a/misc/oldSets/VE_rebound.txt b/misc/oldSets/VE_rebound.txt index 6dd37a36..33d7d526 100644 --- a/misc/oldSets/VE_rebound.txt +++ b/misc/oldSets/VE_rebound.txt @@ -68,7 +68,7 @@ Nb_phases = 2 ID = 0 rho = 1 / matrix G = 1e20 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 @@ -91,7 +91,7 @@ Qpwl = 0 ID = 1 rho = 4000.00 / matrix G = 1e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 diff --git a/misc/oldSets/Wedge.txt b/misc/oldSets/Wedge.txt index 63d3d606..dacea7a9 100644 --- a/misc/oldSets/Wedge.txt +++ b/misc/oldSets/Wedge.txt @@ -68,7 +68,7 @@ Nb_phases = 2 ID = 0 rho = 2500.00 / frictional sediments G = 2e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 1e-20 C = 5e7 @@ -99,7 +99,7 @@ plse = 0.5 ID = 1 rho = 2500.00 / viscous sediments G = 2e10 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 1e-20 C = 1e20 diff --git a/misc/oldSets/WhatEverWeWant.txt b/misc/oldSets/WhatEverWeWant.txt index 03074087..0d8c6f0f 100644 --- a/misc/oldSets/WhatEverWeWant.txt +++ b/misc/oldSets/WhatEverWeWant.txt @@ -78,7 +78,7 @@ Nb_phases = 2 ID = 0 rho = 2700.00 / matrix G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 @@ -101,7 +101,7 @@ Qpwl = 0 ID = 1 rho = 2700.00 / inclusion G = 1 -Cv = 1050 +Cp = 1050 k = 2.5 Qr = 0 C = 1e90 diff --git a/misc/oldSets/set_Wedge.c b/misc/oldSets/set_Wedge.c index f2ff4854..5413702a 100755 --- a/misc/oldSets/set_Wedge.c +++ b/misc/oldSets/set_Wedge.c @@ -312,7 +312,7 @@ void SetBCs( grid *mesh, params *model, scale scaling, markers* particles, mat_p else { if ((mesh->BCt.type[c] == -1 || mesh->BCt.type[c] == 1 || mesh->BCt.type[c] == 0) && mesh->BCt.type[c+NCX] == 30) { mesh->BCt.type[c] = 1; - mesh->BCt.val[c] = (Ttop*mesh->rho_n[c] * mesh->Cv[c]) / (mesh->rho_n[c] * mesh->Cv[c]); + mesh->BCt.val[c] = (Ttop*mesh->rho_n[c] * mesh->Cp[c]) / (mesh->rho_n[c] * mesh->Cp[c]); } } diff --git a/misc/oldSets/shrinking.txt b/misc/oldSets/shrinking.txt index 051a6967..01a63d73 100644 --- a/misc/oldSets/shrinking.txt +++ b/misc/oldSets/shrinking.txt @@ -88,7 +88,7 @@ Nb_phases = 4 ID = 0 rho = 2850.00 / matrix Granulite G = 4.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 1.0e70 @@ -120,7 +120,7 @@ density_model = 3 ID = 1 rho = 2850.00 / Dry CPX inclusion G = 4.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 1.0e70 @@ -152,7 +152,7 @@ density_model = 3 ID = 2 rho = 2850.00 / matrix Granulite G = 4.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 1.0e70 @@ -184,7 +184,7 @@ density_model = 3 ID = 3 rho = 3250.00 / keep granulite, only change in rho G = 4.0e10 -Cv = 1050.0 +Cp = 1050.0 k = 2.3 Qr = 0.0 C = 1.0e70 From bce7c0a06313ffbda3ec42b3637ddd8ba5b29213 Mon Sep 17 00:00:00 2001 From: Thibault Duretz <48455309+tduretz@users.noreply.github.com> Date: Fri, 24 May 2024 15:28:42 +0200 Subject: [PATCH 09/21] Update README.md --- SETS/README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/SETS/README.md b/SETS/README.md index 6b52cde9..95a8dcb1 100644 --- a/SETS/README.md +++ b/SETS/README.md @@ -66,11 +66,15 @@ - `polar`: Activate polar-Cartesian coordinates. Default: 0 - `finite_strain`: Integrates finite strain and saves deformation gradient tensor. Default: 0 - `compressible`: Turns on compressible formulation. Default: 0 +- `density_variations`: Turns on volume change due to reaction if 1. Default: 0 +- `melting`: Activates melting. Default: 0 - `out_of_plane`: Out-of-plane strain. Default: 0 +- `balance_boundaries`: Automatic balancing of mass flux through boundaries. Default: 0 +- `zero_mean_topo`: ensures 0.0 mean topography. Default: 0 ## Numerics: linear solver - `lin_solver`: 1: Powell-Hestenes, 2: Powell-Hestenes augmented (killer solver). Default: 2 -- `model.penalty`: Penalty factor. Default: 1.0e3 +- `penalty`: Penalty factor. Default: 1.0e3 - `auto_penalty`: Activates automatic penalty factor computation. Default: 0.0 - `diag_scaling`: Activates diagonal scaling. Default: 1 - `preconditioner`: Preconditoner type for Newton.iterations, 0: Picard preconditionner. Default: 0 From 33791e955ca3a7adeeacdadf7f544ec47fb0ac3b Mon Sep 17 00:00:00 2001 From: Lorenzo Candioti Date: Fri, 24 May 2024 16:07:53 +0200 Subject: [PATCH 10/21] Added new suite sparse homebrew location. --- FindSuiteSparse.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FindSuiteSparse.cmake b/FindSuiteSparse.cmake index cc598087..237fdb11 100644 --- a/FindSuiteSparse.cmake +++ b/FindSuiteSparse.cmake @@ -177,7 +177,7 @@ macro(SuiteSparse_FIND_COMPONENTS ) /usr/local/include/suitesparse /usr/include/${suitesparseComp} /usr/local/include/${suitesparseComp} - /opt/homebrew/Cellar/suite-sparse/7.6.1/include/suitesparse + /opt/homebrew/Cellar/suite-sparse/7.7.0/include/suitesparse ${SuiteSparse_DIR}/include ${SuiteSparse_DIR}/include/suitesparse ${SuiteSparse_DIR}/suitesparse/include From 6c70638ddaddd9a23a381ac3ba26ba719ecc2fd8 Mon Sep 17 00:00:00 2001 From: tduretz Date: Sun, 9 Jun 2024 11:34:04 +0200 Subject: [PATCH 11/21] dhro negative (lighter) - melt weakening - thermoelasticity --- ...Main_Visualisation_Makie_ExtractDensity.jl | 52 +++--- .../Main_Visualisation_Makie_MD7.jl | 60 +++---- MDLIB/AdvectionRoutines.c | 21 ++- MDLIB/FlowLaws.c | 3 + MDLIB/FreeSurface.c | 11 +- MDLIB/InputOutput.c | 2 + MDLIB/Main_DOODZ.c | 129 ++++++++------ MDLIB/MeltingRoutines.c | 45 +++++ MDLIB/MemoryAllocFree.c | 2 + MDLIB/RheologyDensity.c | 50 ++++-- MDLIB/RheologyParticles.c | 33 ++++ MDLIB/StokesAssemblyDecoupled.c | 35 +++- MDLIB/StokesRoutines.c | 14 +- MDLIB/include/mdoodz.h | 4 +- MDLIB/mdoodz-private.h | 4 +- SETS/CoolingChamber.c | 101 +++++++++++ SETS/CoolingChamber.txt | 163 ++++++++++++++++++ SETS/MeltingOverpressure.txt | 2 +- SETS/{RifingMelting.c => RiftingMelting.c} | 0 SETS/RiftingMelting.txt | 87 +++++----- 20 files changed, 625 insertions(+), 193 deletions(-) create mode 100644 SETS/CoolingChamber.c create mode 100644 SETS/CoolingChamber.txt rename SETS/{RifingMelting.c => RiftingMelting.c} (100%) diff --git a/JuliaVisualisation/Main_Visualisation_Makie_ExtractDensity.jl b/JuliaVisualisation/Main_Visualisation_Makie_ExtractDensity.jl index c1d00963..1fe80e5b 100644 --- a/JuliaVisualisation/Main_Visualisation_Makie_ExtractDensity.jl +++ b/JuliaVisualisation/Main_Visualisation_Makie_ExtractDensity.jl @@ -34,8 +34,8 @@ function main() # File numbers file_start = 00 - file_step = 20 - file_end = 500 + file_step = 10 + file_end = 50 # Select field to visualise # field = :Phases @@ -55,8 +55,8 @@ function main() # field = :AnisotropyFactor # Switches - printfig = false # print figures to disk - printvid = false + printfig = true # print figures to disk + printvid = true framerate = 10 ph_contours = false # add phase contours T_contours = false # add temperature contours @@ -116,21 +116,24 @@ function main() - filenamenk = string(pathnk, @sprintf("Output%05d.gzip.h5", istep)) - ρcnk = Float64.(reshape(ExtractData( filenamenk, "/Centers/rho_n"), ncx, ncz)); ρc[mask_air] .= NaN + # filenamenk = string(pathnk, @sprintf("Output%05d.gzip.h5", istep)) + # ρcnk = Float64.(reshape(ExtractData( filenamenk, "/Centers/rho_n"), ncx, ncz)); ρc[mask_air] .= NaN - filename000 = string(path000, @sprintf("Output%05d.gzip.h5", istep)) - ρc000 = Float64.(reshape(ExtractData( filename000, "/Centers/rho_n"), ncx, ncz)); ρc[mask_air] .= NaN + # filename000 = string(path000, @sprintf("Output%05d.gzip.h5", istep)) + # ρc000 = Float64.(reshape(ExtractData( filename000, "/Centers/rho_n"), ncx, ncz)); ρc[mask_air] .= NaN - filename020 = string(path020, @sprintf("Output%05d.gzip.h5", istep)) - ρc020 = Float64.(reshape(ExtractData( filename020, "/Centers/rho_n"), ncx, ncz)); ρc[mask_air] .= NaN + # filename020 = string(path020, @sprintf("Output%05d.gzip.h5", istep)) + # ρc020 = Float64.(reshape(ExtractData( filename020, "/Centers/rho_n"), ncx, ncz)); ρc[mask_air] .= NaN - filename005 = string(path005, @sprintf("Output%05d.gzip.h5", istep)) - ρc005 = Float64.(reshape(ExtractData( filename005, "/Centers/rho_n"), ncx, ncz)); ρc[mask_air] .= NaN + # filename005 = string(path005, @sprintf("Output%05d.gzip.h5", istep)) + # ρc005 = Float64.(reshape(ExtractData( filename005, "/Centers/rho_n"), ncx, ncz)); ρc[mask_air] .= NaN - filename0e10 = string(path0e10, @sprintf("Output%05d.gzip.h5", istep)) - ρc0e10 = Float64.(reshape(ExtractData( filename0e10, "/Centers/rho_n"), ncx, ncz)); ρc[mask_air] .= NaN + # filename0e10 = string(path0e10, @sprintf("Output%05d.gzip.h5", istep)) + # ρc0e10 = Float64.(reshape(ExtractData( filename0e10, "/Centers/rho_n"), ncx, ncz)); ρc[mask_air] .= NaN + tau0e10 = Extractρ("/Users/tduretz/REPO/MDOODZ7.0/MDLIB/qcoe_simp_tau0e10/", istep, ncx, ncz) + tau1e9 = Extractρ("/Users/tduretz/REPO/MDOODZ7.0/MDLIB/qcoe_simp_tau1e9/" , istep, ncx, ncz) + tau5e9 = Extractρ("/Users/tduretz/REPO/MDOODZ7.0/MDLIB/qcoe_simp_tau5e9/" , istep, ncx, ncz) tau1e10 = Extractρ("/Users/tduretz/REPO/MDOODZ7.0/MDLIB/qcoe_simp_tau1e10/", istep, ncx, ncz) P = Float64.(reshape(ExtractData( filename, "/Centers/P"), ncx, ncz)); P[mask_air] .= NaN @@ -233,31 +236,18 @@ function main() end if field==:DensityProfs - ρ1D = zeros(size(ρc,1)) - ρ1D000 = zeros(size(ρc,1)) - ρ1D005 = zeros(size(ρc,1)) - ρ1D020 = zeros(size(ρc,1)) - ρ1D0e10 = zeros(size(ρc,1)) - ρ1Dnk = zeros(size(ρc,1)) - for i=1:size(ρc,1) - ρ1D[i] = ρc[i,i] - ρ1D000[i] = ρc000[i,i] - ρ1D005[i] = ρc005[i,i] - ρ1D020[i] = ρc020[i,i] - ρ1D0e10[i] = ρc0e10[i,i] - end ax1 = Axis(f[1, 1], title = L"$ρ$ at $t$ = %$(tMy) Ma", xlabel = L"$x$ [m]", ylabel = L"$y$ [m]") # l1=lines!(ax1, xc./Lc, ρ1D000) # l2=lines!(ax1, xc./Lc, ρ1Dnk) + l1=lines!(ax1, xc./Lc, tau0e10.ρ1D) l2=lines!(ax1, xc./Lc, tau1e9.ρ1D) - l3=lines!(ax1, xc./Lc, tau1e10.ρ1D) + l3=lines!(ax1, xc./Lc, tau5e9.ρ1D) + l4=lines!(ax1, xc./Lc, tau1e10.ρ1D) # l2=lines!(ax1, xc./Lc, ρ1D005, label="nsm005") # l3=lines!(ax1, xc./Lc, ρ1D, label="nsm010") # l4=lines!(ax1, xc./Lc, ρ1D020, label="nsm020") - # Legend(f[1, 2], - # [l1, l2, l3], - # ["tk0", "tk0e10", "tk1e10"]) + Legend(f[1, 2], [l1, l2, l3, l4], ["tk0", "tk1e9", "tk5e9", "tk1e10"]) # Legend(f[1, 2], # [l1, l2, l3, l4], diff --git a/JuliaVisualisation/Main_Visualisation_Makie_MD7.jl b/JuliaVisualisation/Main_Visualisation_Makie_MD7.jl index 7406fee7..359c82cf 100644 --- a/JuliaVisualisation/Main_Visualisation_Makie_MD7.jl +++ b/JuliaVisualisation/Main_Visualisation_Makie_MD7.jl @@ -56,21 +56,21 @@ function main() # path ="/Users/tduretz/REPO/MDOODZ7.0/RUNS/1_NR09/" # File numbers - file_start = 1000 - file_step = 100 - file_end = 1000 + file_start = 00 + file_step = 50 + file_end = 200 # Select field to visualise # field = :Phases # field = :Cohesion # field = :Density - # field = :Viscosity + field = :Viscosity # field = :PlasticStrainrate # field = :Stress # field = :StrainRate # field = :Pressure # field = :Divergence - field = :Temperature + # field = :Temperature # field = :Velocity_x # field = :Velocity_z # field = :Velocity @@ -86,15 +86,15 @@ function main() framerate = 3 PlotOnTop = ( ph_contours = false, # add phase contours - T_contours = true, # add temperature contours + T_contours = false, # add temperature contours fabric = false, # add fabric quiver (normal to director) - topo = true, + topo = false, σ1_axis = false, vel_vec = false, ) α_heatmap = 1.0 #0.85 # transparency of heatmap vel_arrow = 5 - vel_scale = 3 + vel_scale = 300000 nap = 0.3 # pause for animation resol = 1000 mov_name = "$(path)/_$(field)/$(field)" # Name of the movie @@ -112,20 +112,24 @@ function main() cm_yr = 100.0*3600.0*24.0*365.25 # Time loop + f = Figure(resolution = (Lx/Lz*resol*1.2, resol), fontsize=25) + for istep=file_start:file_step:file_end - filename = string(path, @sprintf("Output%05d.gzip.h5", istep)) - model = ExtractData( filename, "/Model/Params") - xc = ExtractData( filename, "/Model/xc_coord") - zc = ExtractData( filename, "/Model/zc_coord") - xv = ExtractData( filename, "/Model/xg_coord") - zv = ExtractData( filename, "/Model/zg_coord") - xvz = ExtractData( filename, "/Model/xvz_coord") - zvx = ExtractData( filename, "/Model/zvx_coord") - xv_hr = ExtractData( filename, "/VizGrid/xviz_hr") - zv_hr = ExtractData( filename, "/VizGrid/zviz_hr") - # τxz_t = ExtractData( filename, "TimeSeries/sxz_mean_time") - # t_t = ExtractData( filename, "TimeSeries/Time_time") + name = @sprintf("Output%05d.gzip.h5", istep) + @info "Reading $(name)" + filename = string(path, name) + model = ExtractData( filename, "/Model/Params") + xc = ExtractData( filename, "/Model/xc_coord") + zc = ExtractData( filename, "/Model/zc_coord") + xv = ExtractData( filename, "/Model/xg_coord") + zv = ExtractData( filename, "/Model/zg_coord") + xvz = ExtractData( filename, "/Model/xvz_coord") + zvx = ExtractData( filename, "/Model/zvx_coord") + xv_hr = ExtractData( filename, "/VizGrid/xviz_hr") + zv_hr = ExtractData( filename, "/VizGrid/zviz_hr") + # τxz_t = ExtractData( filename, "TimeSeries/sxz_mean_time") + # t_t = ExtractData( filename, "TimeSeries/Time_time") xc_hr = 0.5.*(xv_hr[1:end-1] .+ xv_hr[2:end]) zc_hr = 0.5.*(zv_hr[1:end-1] .+ zv_hr[2:end]) @@ -184,6 +188,7 @@ function main() Fabx ./= nrm Fabz ./= nrm end + height = 0. if PlotOnTop.topo height = Float64.(ExtractData( filename, "/Topo/z_grid")); Vx_grid = Float64.(ExtractData( filename, "/Topo/Vx_grid")); @@ -220,9 +225,8 @@ function main() # group_phases[ ph_hr.==3 ] .= 3 ##################################### - f = Figure(resolution = (Lx/Lz*resol, resol), fontsize=25) empty!(f) - f = Figure(resolution = (Lx/Lz*resol, resol), fontsize=25) + f = Figure(resolution = (Lx/Lz*resol*1.2, resol), fontsize=25) if field==:Phases ax1 = Axis(f[1, 1], title = L"Phases at $t$ = %$(tMy) Ma", xlabel = L"$x$ [m]", ylabel = L"$y$ [m]") @@ -256,16 +260,6 @@ function main() if printfig Print2Disk( f, path, string(field), istep) end end - if field==:Density - ax1 = Axis(f[1, 1], title = L"$ρ$ at $t$ = %$(tMy) Ma", xlabel = L"$x$ [km]", ylabel = L"$y$ [km]") - hm = heatmap!(ax1, xc./Lc, zc./Lc, ρc, colormap = (:turbo, α_heatmap)) - AddCountourQuivers!(PlotOnTop, ax1, xc, xv, zc, V, T, σ1, Fab, height, Lc, cm_y, group_phases, Δ) - colsize!(f.layout, 1, Aspect(1, Lx/Lz)) - Mak.Colorbar(f[1, 2], hm, label = L"$ρ$ [kg.m$^3$]", width = 20, labelsize = 25, ticklabelsize = 14 ) - Mak.colgap!(f.layout, 20) - if printfig Print2Disk( f, path, string(field), istep) end - end - if field==:Stress ax1 = Axis(f[1, 1], title = L"$\tau_\textrm{II}$ at $t$ = %$(tMy) Ma", xlabel = L"$x$ [km]", ylabel = L"$y$ [km]") hm = heatmap!(ax1, xc./Lc, zc./Lc, τII./1e6, colormap = (:turbo, α_heatmap)) @@ -281,7 +275,7 @@ function main() hm = heatmap!(ax1, xc./Lc, zc./Lc, P./1e9, colormap = (:turbo, α_heatmap)) #, colorrange=(1,1.2)1e4*365*24*3600 AddCountourQuivers!(PlotOnTop, ax1, xc, xv, zc, V, T, σ1, Fab, height, Lc, cm_y, group_phases, Δ) colsize!(f.layout, 1, Aspect(1, Lx/Lz)) - Mak.Colorbar(f[1, 2], hm, label = L"$P$ [s$^{-1}$]", width = 20, labelsize = 25, ticklabelsize = 14 ) + Mak.Colorbar(f[1, 2], hm, label = L"$P$ [GPa]", width = 20, labelsize = 25, ticklabelsize = 14 ) Mak.colgap!(f.layout, 20) if printfig Print2Disk( f, path, string(field), istep) end end diff --git a/MDLIB/AdvectionRoutines.c b/MDLIB/AdvectionRoutines.c index 20b50e32..d505709e 100755 --- a/MDLIB/AdvectionRoutines.c +++ b/MDLIB/AdvectionRoutines.c @@ -568,6 +568,8 @@ void EvaluateCourantCriterion( double* Vx, double* Vz, params *model, scale scal double Vinc = model->surf_Vinc, dt_surf = 0.0; double min_tau_kin = model->user1/scaling.t; double dt_reac = min_tau_kin/model->user2; + double dTmax = 0.0, dT, dt_therm = model->dt_max, max_dT_allowed = 5.0/scaling.T; + const int Ncx = model->Nx-1; for (k=0; kNx; k++) { for (l=0; lNz+1; l++) { @@ -584,6 +586,18 @@ void EvaluateCourantCriterion( double* Vx, double* Vz, params *model, scale scal minVz = MINV(minVz, (Vz[c])); } } + + if (model->thermal==1) { + for (k=0; kNx+1; k++) { + for (l=0; lNz; l++) { + c = k + l*Ncx; + dT = mesh->T[c] - mesh->T0_n[c]; + if (fabs(dT) > dTmax) dTmax = dT; + } + } + dt_therm = max_dT_allowed/dTmax*model->dt; + } + if (quiet==0) printf("Min Vxm = %2.2e m/s / Max Vxm = %2.2e m/s\n", minVx * scaling.V, maxVx * scaling.V); if (quiet==0) printf("Min Vzm = %2.2e m/s / Max Vzm = %2.2e m/s\n", minVz * scaling.V, maxVz * scaling.V); @@ -654,7 +668,12 @@ void EvaluateCourantCriterion( double* Vx, double* Vz, params *model, scale scal model->dt = model->dt_min; } - if (quiet==0) printf("Current dt = %2.2e s / Courant dt = %2.2e s\n", model->dt * scaling.t, dtc * scaling.t ); + if ( model->dt>dt_therm ) { + printf("Setting dt to dt_therm\n"); + model->dt = dt_therm; + } + + if (quiet==0) printf("Current dt = %2.2e s / Courant dt = %2.2e s, dt_therm = %2.2e\n", model->dt * scaling.t, dtc * scaling.t, dt_therm * scaling.t ); } else { model->dt = model->dt_start; diff --git a/MDLIB/FlowLaws.c b/MDLIB/FlowLaws.c index d322466e..e69e9f8d 100755 --- a/MDLIB/FlowLaws.c +++ b/MDLIB/FlowLaws.c @@ -525,6 +525,9 @@ void ReadDataPowerLaw( mat_prop* mat, params* model, int k, int number, scale* s } + // Force melt weakening factor for all phases + if ( model->force_melt_weak == 1 ) mat->apwl[k] = model->melt_weak; + // Scaling mat->tpwl[k] /= 1.0; mat->npwl[k] /= 1.0; diff --git a/MDLIB/FreeSurface.c b/MDLIB/FreeSurface.c index 4365b7c5..863112f3 100755 --- a/MDLIB/FreeSurface.c +++ b/MDLIB/FreeSurface.c @@ -901,22 +901,21 @@ void DiffuseAlongTopography( grid *mesh, params model, scale scaling, double *ar double Wvalley = model.surf_Winc; double Vinc = -model.surf_Vinc, Vinc_num; - printf("****** Surface processes ******"); + printf("****** Surface processes ******\n"); printf("Going to make %03d substeps for surface processes\n", nstep); - printf("W valley = %2.2e m\n", Wvalley*scaling.L); - printf("Vincision = %2.2e m.s-1\n", Vinc*scaling.V); printf("Kero = %2.2e m2.s-1\n", diff*(pow(scaling.L,2.0)/scaling.t)); - printf("Sed. rate = %2.2e m/y with base level: %2.2e m\n", model.surf_sedirate*scaling.V*3600.0*365.0*24.0, base_level*scaling.L); if ( model.surface_processes == 1 || model.surface_processes == 5 ) { if ( model.surface_processes == 5 ) { + printf("W valley = %2.2e m\n", Wvalley*scaling.L); + printf("Vincision = %2.2e m.s-1\n", Vinc*scaling.V); // Compute volume of cells in the valley region int ncell = 0; for (i=1; ixg_coord[i]) < 0.5*Wvalley){ - ncell = ncell + 1; + ncell += 1; } } @@ -962,7 +961,7 @@ void DiffuseAlongTopography( grid *mesh, params model, scale scaling, double *ar // Instantaneous basin filling if (model.surface_processes == 2) { - + printf("Sed. rate = %2.2e m/y with base level: %2.2e m\n", model.surf_sedirate*scaling.V*3600.0*365.0*24.0, base_level*scaling.L); for (i=0; i p0_n , p0_s P2Mastah( &input.model, particles, particles.P, &mesh, mesh.p0_n, mesh.BCp.type, 1, 0, interp, cent, input.model.interp_stencil); + // Interpolate Melt fraction + P2Mastah( &input.model, particles, particles.phi, &mesh, mesh.phi0_n , mesh.BCp.type, 1, 0, interp, cent, input.model.interp_stencil); + // Allocate and initialise solution and RHS vectors UpdateDensity( &mesh, &particles, &input.materials, &input.model, &input.scaling ); + // P2Mastah( &input.model, particles, particles.rho, &mesh, mesh.rho0_n , mesh.BCp.type, 1, 0, interp, cent, input.model.interp_stencil); // Free surface - subgrid density correction if (input.model.free_surface == 1 ) { // TODO: include into UpdateDensity @@ -520,9 +528,6 @@ void RunMDOODZ(char *inputFileName, MdoodzSetup *setup) { P2Mastah( &input.model, particles, particles.d, &mesh, mesh.d0_n , mesh.BCp.type, 1, 0, interp, cent, input.model.interp_stencil); ArrayEqualArray( mesh.d_n, mesh.d0_n, Ncx*Ncz ); - // Interpolate Melt fraction - P2Mastah( &input.model, particles, particles.phi, &mesh, mesh.phi0_n , mesh.BCp.type, 1, 0, interp, cent, input.model.interp_stencil); - //------------------------------------------------------------------------------------------------------------- // Compute cohesion and friction angle on the grid @@ -532,53 +537,55 @@ void RunMDOODZ(char *inputFileName, MdoodzSetup *setup) { if (input.model.compressible == 1 ) DetectCompressibleCells ( &mesh, &input.model ); // Get physical properties that are constant throughout each timestep - UpdateDensity( &mesh, &particles, &input.materials, &input.model, &input.scaling ); + // UpdateDensity( &mesh, &particles, &input.materials, &input.model, &input.scaling ); + // P2Mastah( &input.model, particles, particles.rho, &mesh, mesh.rho0_n , mesh.BCp.type, 1, 0, interp, cent, input.model.interp_stencil); + // P2Mastah( &input.model, particles, particles.rho, &mesh, mesh.rho_s, mesh.BCg.type, 1, 0, interp, vert, input.model.interp_stencil); - // Free surface - subgrid density correction - if (input.model.free_surface == 1 ) SurfaceDensityCorrection( &mesh, input.model, topo, input.scaling ); + // // Free surface - subgrid density correction + // if (input.model.free_surface == 1 ) SurfaceDensityCorrection( &mesh, input.model, topo, input.scaling ); // Update anisotropy factor (function of accumulated strain and phase) if ( input.model.anisotropy == 1 ) UpdateAnisoFactor( &mesh, &input.materials, &input.model, &input.scaling); // Min/Max interpolated fields if (input.model.noisy == 1 ) { - MinMaxArrayTag( mesh.d0_n, input.scaling.L, (mesh.Nx-1)*(mesh.Nz-1), "d0 ", mesh.BCp.type ); - MinMaxArrayTag( mesh.d_n, input.scaling.L, (mesh.Nx-1)*(mesh.Nz-1), "d ", mesh.BCp.type ); - MinMaxArray(particles.sxxd, input.scaling.S, particles.Nb_part, "sxxd part "); - MinMaxArray(particles.T, input.scaling.T, particles.Nb_part, "T part "); - MinMaxArrayTag( mesh.p0_n, input.scaling.S, (mesh.Nx-1)*(mesh.Nz-1), "p0_n", mesh.BCp.type ); - MinMaxArrayTag( mesh.sxz0, input.scaling.S, (mesh.Nx)*(mesh.Nz), "sxz0 ", mesh.BCg.type ); - MinMaxArrayTag( mesh.sxxd0, input.scaling.S, (mesh.Nx-1)*(mesh.Nz-1), "sxx0 ", mesh.BCp.type ); - MinMaxArrayTag( mesh.szzd0, input.scaling.S, (mesh.Nx-1)*(mesh.Nz-1), "szz0 ", mesh.BCp.type ); - MinMaxArrayTag( mesh.mu_s, input.scaling.S, (mesh.Nx)*(mesh.Nz), "mu_s ", mesh.BCg.type ); - MinMaxArrayTag( mesh.mu_n, input.scaling.S, (mesh.Nx-1)*(mesh.Nz-1), "mu_n ", mesh.BCp.type ); - MinMaxArrayTag( mesh.C_s, input.scaling.S, (mesh.Nx)*(mesh.Nz), "C_s ", mesh.BCg.type ); - MinMaxArrayTag( mesh.C_n, input.scaling.S, (mesh.Nx-1)*(mesh.Nz-1), "C_n ", mesh.BCp.type ); - MinMaxArrayTag( mesh.fric_s, 180.0/M_PI, (mesh.Nx)*(mesh.Nz), "fric_s ", mesh.BCg.type ); - MinMaxArrayTag( mesh.fric_n, 180.0/M_PI, (mesh.Nx-1)*(mesh.Nz-1), "fric_n ", mesh.BCp.type ); - MinMaxArrayTag( mesh.dil_s, 180.0/M_PI, (mesh.Nx)*(mesh.Nz), "dil_s ", mesh.BCg.type ); - MinMaxArrayTag( mesh.dil_n, 180.0/M_PI, (mesh.Nx-1)*(mesh.Nz-1), "dil_n ", mesh.BCp.type ); - MinMaxArrayTag( mesh.strain_s, 1.0, (mesh.Nx)*(mesh.Nz), "strain_s", mesh.BCg.type ); - MinMaxArrayTag( mesh.strain_n, 1.0, (mesh.Nx-1)*(mesh.Nz-1), "strain_n", mesh.BCp.type ); - MinMaxArrayTag( mesh.bet_s, 1.0/ input.scaling.S, (mesh.Nx)*(mesh.Nz), "beta_s ", mesh.BCg.type ); - MinMaxArrayTag( mesh.bet_n, 1.0/ input.scaling.S, (mesh.Nx-1)*(mesh.Nz-1), "beta_n ", mesh.BCp.type ); - MinMaxArrayTag( mesh.T0_n, input.scaling.T, (mesh.Nx-1)*(mesh.Nz-1), "T0 ", mesh.BCt.type ); - MinMaxArrayTag( mesh.T, input.scaling.T, (mesh.Nx-1)*(mesh.Nz-1), "T ", mesh.BCt.type ); - MinMaxArrayTag( mesh.p_in, input.scaling.S, (mesh.Nx-1)*(mesh.Nz-1), "P ", mesh.BCt.type ); - MinMaxArrayI ( mesh.comp_cells, 1.0, (mesh.Nx-1)*(mesh.Nz-1), "comp_cells" ); - MinMaxArrayTag( mesh.rho_s, input.scaling.rho, (mesh.Nx)*(mesh.Nz), "rho_s ", mesh.BCg.type ); - MinMaxArrayTag( mesh.rho_n, input.scaling.rho, (mesh.Nx-1)*(mesh.Nz-1), "rho_n ", mesh.BCp.type ); - MinMaxArrayTag( mesh.rho0_n, input.scaling.rho, (mesh.Nx-1)*(mesh.Nz-1), "rho0_n ", mesh.BCp.type ); - MinMaxArrayTag( mesh.X0_s, 1.0, (mesh.Nx)*(mesh.Nz), "X0_s ", mesh.BCg.type ); - MinMaxArrayTag( mesh.X0_n, 1.0, (mesh.Nx-1)*(mesh.Nz-1), "X0_n ", mesh.BCp.type ); - MinMaxArrayTag( mesh.phi0_n, 1.0, (mesh.Nx-1)*(mesh.Nz-1), "phi0_n ", mesh.BCp.type ); - MinMaxArrayTag( mesh.phi_n, 1.0, (mesh.Nx-1)*(mesh.Nz-1), "phi_n ", mesh.BCp.type ); - - for (int p=0; p< input.model.Nb_phases; p++) { - printf("Phase number %d:\n", p); - MinMaxArrayTag( mesh.phase_perc_n[p], 1.0, (mesh.Nx-1)*(mesh.Nz-1), "ph_n ", mesh.BCp.type ); - MinMaxArrayTag( mesh.phase_perc_s[p], 1.0, (mesh.Nx-0)*(mesh.Nz-0), "ph_s ", mesh.BCg.type ); - } + MinMaxArrayTag( mesh.d0_n, input.scaling.L, (mesh.Nx-1)*(mesh.Nz-1), "d0 ", mesh.BCp.type ); + MinMaxArrayTag( mesh.d_n, input.scaling.L, (mesh.Nx-1)*(mesh.Nz-1), "d ", mesh.BCp.type ); + MinMaxArray(particles.sxxd, input.scaling.S, particles.Nb_part, "sxxd p. "); + MinMaxArray(particles.T, input.scaling.T, particles.Nb_part, "T p. "); + MinMaxArrayTag( mesh.p0_n, input.scaling.S, (mesh.Nx-1)*(mesh.Nz-1), "p0_n ", mesh.BCp.type ); + MinMaxArrayTag( mesh.sxz0, input.scaling.S, (mesh.Nx)*(mesh.Nz), "sxz0 ", mesh.BCg.type ); + MinMaxArrayTag( mesh.sxxd0, input.scaling.S, (mesh.Nx-1)*(mesh.Nz-1), "sxx0 ", mesh.BCp.type ); + MinMaxArrayTag( mesh.szzd0, input.scaling.S, (mesh.Nx-1)*(mesh.Nz-1), "szz0 ", mesh.BCp.type ); + MinMaxArrayTag( mesh.mu_s, input.scaling.S, (mesh.Nx)*(mesh.Nz), "mu_s ", mesh.BCg.type ); + MinMaxArrayTag( mesh.mu_n, input.scaling.S, (mesh.Nx-1)*(mesh.Nz-1), "mu_n ", mesh.BCp.type ); + MinMaxArrayTag( mesh.C_s, input.scaling.S, (mesh.Nx)*(mesh.Nz), "C_s ", mesh.BCg.type ); + MinMaxArrayTag( mesh.C_n, input.scaling.S, (mesh.Nx-1)*(mesh.Nz-1), "C_n ", mesh.BCp.type ); + MinMaxArrayTag( mesh.fric_s, 180.0/M_PI, (mesh.Nx)*(mesh.Nz), "fric_s ", mesh.BCg.type ); + MinMaxArrayTag( mesh.fric_n, 180.0/M_PI, (mesh.Nx-1)*(mesh.Nz-1), "fric_n ", mesh.BCp.type ); + MinMaxArrayTag( mesh.dil_s, 180.0/M_PI, (mesh.Nx)*(mesh.Nz), "dil_s ", mesh.BCg.type ); + MinMaxArrayTag( mesh.dil_n, 180.0/M_PI, (mesh.Nx-1)*(mesh.Nz-1), "dil_n ", mesh.BCp.type ); + MinMaxArrayTag( mesh.strain_s, 1.0, (mesh.Nx)*(mesh.Nz), "strain_s", mesh.BCg.type ); + MinMaxArrayTag( mesh.strain_n, 1.0, (mesh.Nx-1)*(mesh.Nz-1), "strain_n", mesh.BCp.type ); + MinMaxArrayTag( mesh.bet_s, 1.0/ input.scaling.S, (mesh.Nx)*(mesh.Nz), "beta_s ", mesh.BCg.type ); + MinMaxArrayTag( mesh.bet_n, 1.0/ input.scaling.S, (mesh.Nx-1)*(mesh.Nz-1), "beta_n ", mesh.BCp.type ); + MinMaxArrayTag( mesh.T0_n, input.scaling.T, (mesh.Nx-1)*(mesh.Nz-1), "T0 ", mesh.BCt.type ); + MinMaxArrayTag( mesh.T, input.scaling.T, (mesh.Nx-1)*(mesh.Nz-1), "T ", mesh.BCt.type ); + MinMaxArrayTag( mesh.p_in, input.scaling.S, (mesh.Nx-1)*(mesh.Nz-1), "P ", mesh.BCt.type ); + MinMaxArrayTag( mesh.rho_s, input.scaling.rho, (mesh.Nx)*(mesh.Nz), "rho_s ", mesh.BCg.type ); + MinMaxArrayTag( mesh.rho_n, input.scaling.rho, (mesh.Nx-1)*(mesh.Nz-1), "rho_n ", mesh.BCp.type ); + MinMaxArrayTag( mesh.rho0_n, input.scaling.rho, (mesh.Nx-1)*(mesh.Nz-1), "rho0_n ", mesh.BCp.type ); + MinMaxArrayTag( mesh.X0_s, 1.0, (mesh.Nx)*(mesh.Nz), "X0_s ", mesh.BCg.type ); + MinMaxArrayTag( mesh.X0_n, 1.0, (mesh.Nx-1)*(mesh.Nz-1), "X0_n ", mesh.BCp.type ); + MinMaxArrayTag( mesh.phi0_n, 1.0, (mesh.Nx-1)*(mesh.Nz-1), "phi0_n ", mesh.BCp.type ); + MinMaxArrayTag( mesh.phi_n, 1.0, (mesh.Nx-1)*(mesh.Nz-1), "phi_n ", mesh.BCp.type ); + MinMaxArrayTag( mesh.divth0_n, input.scaling.E, (mesh.Nx-1)*(mesh.Nz-1), "divth0_n ", mesh.BCp.type ); + + // for (int p=0; p< input.model.Nb_phases; p++) { + // printf("Phase number %d:\n", p); + // MinMaxArrayTag( mesh.phase_perc_n[p], 1.0, (mesh.Nx-1)*(mesh.Nz-1), "ph_n ", mesh.BCp.type ); + // MinMaxArrayTag( mesh.phase_perc_s[p], 1.0, (mesh.Nx-0)*(mesh.Nz-0), "ph_s ", mesh.BCg.type ); + // } if ( input.model.anisotropy == 1 ) { MinMaxArrayTag( mesh.FS_AR_n, 1.0, (mesh.Nx-1)*(mesh.Nz-1), "FS_AR_n ", mesh.BCp.type ); @@ -879,6 +886,9 @@ void RunMDOODZ(char *inputFileName, MdoodzSetup *setup) { // Update pressure on markers UpdateParticlePressure( &mesh, input.scaling, input.model, &particles, &input.materials ); + // // Update density on markers + // UpdateParticleDensity( &mesh, input.scaling, input.model, &particles, &input.materials ); + // Grain size evolution UpdateParticleGrainSize( &mesh, input.scaling, input.model, &particles, &input.materials ); @@ -891,8 +901,8 @@ void RunMDOODZ(char *inputFileName, MdoodzSetup *setup) { if (input.model.melting == 1 ) { MeltFractionGrid( &mesh, &particles, &input.materials, &input.model, &input.scaling ); UpdateAlphaCp( &mesh, &particles, &input.materials, &input.model, &input.scaling ); - MinMaxArrayTag( mesh.Cp, input.scaling.Cp, (mesh.Nx-1)*(mesh.Nz-1), "Cp ", mesh.BCp.type ); - MinMaxArrayTag( mesh.alp, 1/input.scaling.T, (mesh.Nx-1)*(mesh.Nz-1), "alp ", mesh.BCp.type ); + MinMaxArrayTag( mesh.Cp, input.scaling.Cp, (mesh.Nx-1)*(mesh.Nz-1), "Cp ", mesh.BCp.type ); + MinMaxArrayTag( mesh.alp, 1.0/input.scaling.T, (mesh.Nx-1)*(mesh.Nz-1), "alp ", mesh.BCp.type ); } // Update phi on the particles @@ -920,6 +930,22 @@ void RunMDOODZ(char *inputFileName, MdoodzSetup *setup) { // Update energy on particles UpdateParticleEnergy( &mesh, input.scaling, input.model, &particles, &input.materials ); + // Grain size evolution + UpdateParticleGrainSize( &mesh, input.scaling, input.model, &particles, &input.materials ); + + if (input.model.noisy == 1 ) { + MinMaxArrayTag( mesh.d0_n , input.scaling.L, (mesh.Nx-1)*(mesh.Nz-1), "d0", mesh.BCp.type ); + MinMaxArrayTag( mesh.d_n , input.scaling.L, (mesh.Nx-1)*(mesh.Nz-1), "d ", mesh.BCp.type ); + MinMaxArrayPart( particles.d, input.scaling.L, particles.Nb_part, "d on markers", particles.phase ) ; + } + + if (input.model.melting == 1 ) { + MeltFractionGrid( &mesh, &particles, &input.materials, &input.model, &input.scaling ); + } + UpdateDensity( &mesh, &particles, &input.materials, &input.model, &input.scaling ); + // Update density on markers + UpdateParticleDensity( &mesh, input.scaling, input.model, &particles, &input.materials ); + //--------------------------------------------------------------------------------------------------------------------------------// if (input.model.chemical_diffusion == 1) { @@ -936,9 +962,14 @@ void RunMDOODZ(char *inputFileName, MdoodzSetup *setup) { } UpdateParticleX( &mesh, input.scaling, input.model, &particles, &input.materials ); - // ArrayEqualArray( mesh.X_n, mesh.X0_n, (mesh.Nx-1)*(mesh.Nz-1) ); - // UpdateParticleXpips( &mesh, input.scaling, input.model, &particles, &input.materials ); + //--------------------------------------------------------------------------------------------------------------------------------// + // Explicit mass source terms + if (input.model.compressible==1) { + MassSourceTerm( &mesh, &particles, &input.materials, &input.model, &input.scaling ); + UpdateParticleDivThermal( &mesh, input.scaling, input.model, &particles, &input.materials ); + MinMaxArrayTag( mesh.divth_n, input.scaling.E, (mesh.Nx-1)*(mesh.Nz-1), "divth_n", mesh.BCp.type ); + } //--------------------------------------------------------------------------------------------------------------------------------// @@ -977,7 +1008,7 @@ void RunMDOODZ(char *inputFileName, MdoodzSetup *setup) { input.model.dt = dt_solve; } - if (nsub>5) error = 1; + // if (nsub>5) error = 1; // Loop on substeps for (isub=0; isubNx; Ncx = Nx-1; + Nz = mesh->Nz; Ncz = Nz-1; + + for ( c0=0; c0divth_n[c0] = 0.0; + + for ( p=0; pNb_phases; p++) { + + if ( fabs(mesh->phase_perc_n[p][c0])>1.0e-13 ) { + + // Compute only if below free surface + if ( mesh->BCp.type[0] != 30 && mesh->BCp.type[0] != 31) { + + const double divth = materials->alp[p]*materials->rho[p]/mesh->rho_n[c0]*(mesh->T[c0] - mesh->T0_n[c0])/model->dt; + + // Update centroid values + mesh->divth_n[c0] += mesh->phase_perc_n[p][c0]*divth; + } + } + } + } +} + +/*--------------------------------------------------------------------------------------------------------------------*/ +/*------------------------------------------------------ M-Doodz -----------------------------------------------------*/ +/*--------------------------------------------------------------------------------------------------------------------*/ \ No newline at end of file diff --git a/MDLIB/MemoryAllocFree.c b/MDLIB/MemoryAllocFree.c index 5a8b7f57..b4cb0579 100755 --- a/MDLIB/MemoryAllocFree.c +++ b/MDLIB/MemoryAllocFree.c @@ -553,6 +553,7 @@ grid GridAlloc(params *model) { mesh.T = DoodzCalloc((Nx - 1) * (Nz - 1), sizeof(double)); mesh.T0_n = DoodzCalloc((Nx - 1) * (Nz - 1), sizeof(double)); + mesh.divth_n = DoodzCalloc((Nx - 1) * (Nz - 1), sizeof(double)); mesh.divth0_n = DoodzCalloc((Nx - 1) * (Nz - 1), sizeof(double)); mesh.eII_el = DoodzCalloc((Nx - 1) * (Nz - 1), sizeof(double)); mesh.comp_cells = DoodzCalloc((Nx - 1) * (Nz - 1), sizeof(double)); @@ -877,6 +878,7 @@ void GridFree(grid *mesh, params *model) { DoodzFree(mesh->T); DoodzFree(mesh->T0_n); + DoodzFree(mesh->divth_n); DoodzFree(mesh->divth0_n); DoodzFree(mesh->eII_el); diff --git a/MDLIB/RheologyDensity.c b/MDLIB/RheologyDensity.c index 3e9a9e2b..8583abe6 100644 --- a/MDLIB/RheologyDensity.c +++ b/MDLIB/RheologyDensity.c @@ -891,7 +891,6 @@ void NonNewtonianViscosityGrid( grid *mesh, mat_prop *materials, params *model, if ( model->density_variations == 1 ) { mesh->rho_n[c0] = 0.0; - // mesh->drhodp_n[c0] = 0.0; } // Loop on grid nodes @@ -973,7 +972,7 @@ void NonNewtonianViscosityGrid( grid *mesh, mat_prop *materials, params *model, } mesh->d_n[c0] = 1.0/mesh->d_n[c0]; - // mesh->rho_n[c0] = 1.0/mesh->rho_n[c0]; + // if ( model->density_variations == 1 ) mesh->rho_n[c0] = 1.0/mesh->rho_n[c0]; // HARMONIC AVERAGE if ( average == 1 ) { @@ -1465,14 +1464,17 @@ double EvaluateDensity( int p, double T, double P, double X, double phi, params rho = rho_ref * exp(beta*P - alpha*T); } - // P-T dependent density: models used for Poh et al. (2021) + // P-T dependent density: models used for Poh et al. (2021) if ( materials->density_model[p] == 5 ) { const double rho_sol = materials->rho[p]; - const double rho_liq = materials->rho[p] - materials->drho[p]; + const double rho_liq = materials->rho[p] + materials->drho[p]; // !!!! Achtung: drho should be NEGATIVE to make liquid lighter const double beta = materials->bet[p]; const double alpha = materials->alp[p]; - rho = rho_sol * exp(beta*P - alpha*T); - rho = rho * (1 - phi + phi*rho_liq/rho_sol ); + const double rhos = rho_sol * exp(beta*P - alpha*T); + const double rhol = rho_liq * exp(beta*P - alpha*T); + // rho = rhos * (1 - phi + phi*rho_liq/rho_sol ); + rho = (1-phi)*rhos + phi*rhol; + // rho = rhos; // printf("rho_sol = %2.6e rho_liq = %2.6e drho = %2.6e\n", rho_sol, rho_liq, materials->drho[p]); } @@ -1491,37 +1493,57 @@ double EvaluateDensity( int p, double T, double P, double X, double phi, params void UpdateDensity( grid* mesh, markers* particles, mat_prop *materials, params *model, scale *scaling ) { int k, p, c0, Ncx=mesh->Nx-1, Ncz=mesh->Nz-1; - int phase_diag; - double rho, rho0, epsi = 1e-13; + int old = 1; + double rho, rho0, epsi = 1e-13, mean_rho, mean_rho0; // printf("Update density fields on mesh\n"); -#pragma omp parallel for shared( mesh, materials ) private( rho, rho0, c0, p) firstprivate(Ncx, Ncz, model, epsi) + // mean_rho = SumArray( mesh->rho_n, scaling->rho, Ncx*Ncz, "mean rho" ) /(Ncx*Ncz); + +#pragma omp parallel for shared( mesh, materials ) private( rho, rho0, c0, p) firstprivate(old, Ncx, Ncz, model, epsi) for ( c0=0; c0rho_n[c0] = 0.0; - mesh->rho0_n[c0] = 0.0; + if (old==1) mesh->rho0_n[c0] = 0.0; // Loop on phases for ( p=0; pNb_phases; p++) { if ( fabs(mesh->phase_perc_n[p][c0])>epsi) { // Call density evaluation - rho = EvaluateDensity( p, mesh->T[c0], mesh->p_in[c0], mesh->X_n[c0], mesh->phi_n[c0], model, materials ); - rho0 = EvaluateDensity( p, mesh->T0_n[c0], mesh->p0_n[c0], mesh->X0_n[c0], mesh->phi0_n[c0], model, materials ); + rho = EvaluateDensity( p, mesh->T[c0], mesh->p_in[c0], mesh->X_n[c0], mesh->phi_n[c0], model, materials ); + if (old==1) rho0 = EvaluateDensity( p, mesh->T0_n[c0], mesh->p0_n[c0], mesh->X0_n[c0], mesh->phi0_n[c0], model, materials ); // Average density base on phase density and phase volume fraction - if ( mesh->BCp.type[c0] != 30 ) mesh->rho_n[c0] += mesh->phase_perc_n[p][c0] * rho; - if ( mesh->BCp.type[c0] != 30 ) mesh->rho0_n[c0] += mesh->phase_perc_n[p][c0] * rho0; + if ( mesh->BCp.type[c0] != 30 ) mesh->rho_n[c0] += mesh->phase_perc_n[p][c0] * rho; + if (old==1) if ( mesh->BCp.type[c0] != 30 ) mesh->rho0_n[c0] += mesh->phase_perc_n[p][c0] * rho0; + // if ( mesh->BCp.type[c0] != 30 ) mesh->rho_n[c0] += mesh->phase_perc_n[p][c0] * 1./rho; + // if (old==1) if ( mesh->BCp.type[c0] != 30 ) mesh->rho0_n[c0] += mesh->phase_perc_n[p][c0] * 1./rho0; // if (mesh->BCp.type[c0] == -1 && mesh->BCp.type[c0+Ncx] == 31 ) { // printf("At the surface: rho = %2.2lf, phase = %d rho = %2.2lf X = %2.2lf density_model = %d\n", mesh->rho_n[c0]*scaling->rho, p, rho, mesh->phase_perc_n[p][c0], materials->density_model[p]); // } } } + // mesh->rho_n[c0] = 1.0/mesh->rho_n[c0]; + // if (old==1) mesh->rho0_n[c0] = 1.0/mesh->rho0_n[c0]; } + + // mean_rho0 = SumArray( mesh->rho0_n, scaling->rho, Ncx*Ncz, "mean rho" ) /(Ncx*Ncz); + + // for ( c0=0; c0rho0_n[c0] -= mean_rho0; + // mesh->rho0_n[c0] += mean_rho; + // } + + // Interpolate to vertices InterpCentroidsToVerticesDouble( mesh->rho_n, mesh->rho_s, mesh, model ); + + // double* rho0_s = DoodzCalloc((model->Nx)*(model->Nz), sizeof(double)); + // InterpCentroidsToVerticesDouble( mesh->rho0_n, rho0_s, mesh, model ); + // InterpVerticesToCentroidsDouble( mesh->rho0_n, rho0_s, mesh, model ); + // DoodzFree(rho0_s); } /*--------------------------------------------------------------------------------------------------------------------*/ diff --git a/MDLIB/RheologyParticles.c b/MDLIB/RheologyParticles.c index d0686280..c8c9a7fa 100644 --- a/MDLIB/RheologyParticles.c +++ b/MDLIB/RheologyParticles.c @@ -793,6 +793,10 @@ void UpdateParticleDensity( grid* mesh, scale scaling, params model, markers* pa DoodzFree(rho_inc_grid); DoodzFree(rho_inc_mark); + + // for (int k=0; kNb_part; k++ ) { + // particles->rho[k] = EvaluateDensity( particles->phase[k], particles->T[k], particles->P[k], particles->X[k], particles->phi[k], &model, materials ); + // } } /*--------------------------------------------------------------------------------------------------------------------*/ @@ -1645,6 +1649,35 @@ firstprivate( model ) DoodzFree(dudx_s); } +/*--------------------------------------------------------------------------------------------------------------------*/ +/*------------------------------------------------------ M-Doodz -----------------------------------------------------*/ +/*--------------------------------------------------------------------------------------------------------------------*/ + +void UpdateParticleDivThermal( grid* mesh, scale scaling, params model, markers* particles, mat_prop* materials ) { + + DoodzFP *inc_mark, *inc_grid; + int Nx, Nz, Ncx, Ncz, k; + Nx = mesh->Nx; Ncx = Nx-1; + Nz = mesh->Nz; Ncz = Nz-1; + + inc_mark = DoodzCalloc(particles->Nb_part, sizeof(DoodzFP)); + inc_grid = DoodzCalloc(Ncx*Ncz, sizeof(DoodzFP)); + + for (k=0;kBCp.type[k] != 30 && mesh->BCp.type[k] != 31) inc_grid[k] = mesh->divth_n[k] - mesh->divth0_n[k]; + } + + // Interp increments to particles + Interp_Grid2P_centroids2( *particles, inc_mark, mesh, inc_grid, mesh->xvz_coord, mesh->zvx_coord, Nx-1, Nz-1, mesh->BCt.type, &model ); + + // Increment temperature on particles + ArrayPlusArray( particles->divth, inc_mark, particles->Nb_part ); + + DoodzFree(inc_grid); + DoodzFree(inc_mark); +} + /*--------------------------------------------------------------------------------------------------------------------*/ /*------------------------------------------------------ M-Doodz -----------------------------------------------------*/ /*--------------------------------------------------------------------------------------------------------------------*/ \ No newline at end of file diff --git a/MDLIB/StokesAssemblyDecoupled.c b/MDLIB/StokesAssemblyDecoupled.c index 45dd8bf6..5a648467 100755 --- a/MDLIB/StokesAssemblyDecoupled.c +++ b/MDLIB/StokesAssemblyDecoupled.c @@ -825,6 +825,18 @@ void Zjacobian_InnerNodesDecoupled3( SparseMat *Stokes, SparseMat *StokesA, Spar void Continuity_InnerNodesDecoupled( SparseMat *Stokes, SparseMat *StokesC, SparseMat *StokesD, int Assemble, int lev, int stab, int comp, double om, int sign, params model, double one_dx, double one_dz, double one_dx_dx, double one_dz_dz, double one_dx_dz, double celvol, grid* mesh, int ith, int c1, int c2, int c3, int nx, int ncx, int nxvz, int eqn, double* u, double* v, double* p, int **JtempC, double **AtempC, int *nnzc2C, int **JtempD, double **AtempD, int *nnzc2D, int i, int j ) { double pc=0.0, uW=0.0, uE=0.0, vN=0.0, vS=0.0, oop_fact = 1.0, comp_fact = 0.0; + + const double rhoW = 0.5*(mesh->rho_n[c1] + mesh->rho_n[c1-nx]); + const double rhoE = 0.5*(mesh->rho_n[c1+1] + mesh->rho_n[c1-nx+1]); + const double rhoS = 0.5*(mesh->rho_n[c1-nx]+ mesh->rho_n[c1-nx+1]); + const double rhoN = 0.5*(mesh->rho_n[c1] + mesh->rho_n[c1+1]); + const double drhodx = (rhoE-rhoW)*one_dx; + const double drhody = (rhoN-rhoS)*one_dz; + const double VxC = 0.5*(mesh->u_in[c1] + mesh->u_in[c1+1]); + const double VzC = 0.5*(mesh->v_in[c3] + mesh->v_in[c3+nxvz]); + const double adv_rho = 1.0; // + model.dt*VxC*drhodx/mesh->rho_n[c2] + model.dt*VzC*drhodx/mesh->rho_n[c2]; + + // if (fabs(adv_rho)>1+1e-10) printf("%2.2e %2.2e\n ", model.dt*VxC*drhodx/mesh->rho_n[c2] + model.dt*VzC*drhodx/mesh->rho_n[c2], drhodx); // Non-zero out-of-plane strain if ( model.out_of_plane == 1 ) oop_fact = 3.0/2.0; @@ -834,10 +846,10 @@ void Continuity_InnerNodesDecoupled( SparseMat *Stokes, SparseMat *StokesC, Spar pc = comp_fact*mesh->bet_n[c2]/model.dt; // div u - if ( mesh->BCu.type[c1 ] != 13 ) uW = -one_dx * oop_fact; - if ( mesh->BCu.type[c1+1 ] != 13 ) uE = one_dx * oop_fact; - if ( mesh->BCv.type[c3 ] != 13 ) vS = -one_dz * oop_fact; - if ( mesh->BCv.type[c3+nxvz] != 13 ) vN = one_dz * oop_fact; + if ( mesh->BCu.type[c1 ] != 13 ) uW = -adv_rho*one_dx * oop_fact; + if ( mesh->BCu.type[c1+1 ] != 13 ) uE = adv_rho*one_dx * oop_fact; + if ( mesh->BCv.type[c3 ] != 13 ) vS = -adv_rho*one_dz * oop_fact; + if ( mesh->BCv.type[c3+nxvz] != 13 ) vN = adv_rho*one_dz * oop_fact; // Stencil assembly / residual if ( Assemble == 1 ) { @@ -850,9 +862,18 @@ void Continuity_InnerNodesDecoupled( SparseMat *Stokes, SparseMat *StokesC, Spar } else { - // d ln rho - if ( model.density_variations == 0 ) StokesC->F[eqn] = comp_fact*mesh->bet_n[c2]*(mesh->p_in[c2] - mesh->p0_n[c2] ) / model.dt + mesh->div_u[c2]; - if ( model.density_variations == 1 ) StokesC->F[eqn] = comp_fact*( log(mesh->rho_n[c2]) - log(mesh->rho0_n[c2]) ) / model.dt + mesh->div_u[c2]; + + if ( model.density_variations == 0 ) { + // beta * dP / dt + StokesC->F[eqn] = comp_fact*mesh->bet_n[c2]*(mesh->p_in[c2] - mesh->p0_n[c2] ) / model.dt + mesh->div_u[c2]; + } + if ( model.density_variations == 1 ) { + // d (ln(rho)) / dt + if ( model.density_variations == 1 ) StokesC->F[eqn] = comp_fact*( log(mesh->rho_n[c2]) - log(mesh->rho0_n[c2]) ) / model.dt + mesh->div_u[c2]; + // if ( model.density_variations == 1 ) StokesC->F[eqn] = comp_fact*( mesh->rho_n[c2] - mesh->rho0_n[c2] ) / model.dt + mesh->rho_n[c2]*mesh->div_u[c2]; + + } + StokesC->F[eqn]-= StokesC->b[eqn]; StokesC->F[eqn] *= celvol; StokesD->F[eqn] = StokesC->F[eqn] ; } diff --git a/MDLIB/StokesRoutines.c b/MDLIB/StokesRoutines.c index db4db62e..48a8f99c 100755 --- a/MDLIB/StokesRoutines.c +++ b/MDLIB/StokesRoutines.c @@ -793,9 +793,9 @@ void EvaluateStokesResidualDecoupled( SparseMat *Stokes, SparseMat *StokesA, Spa } if ( isnan(Nmodel->resx) || isnan(Nmodel->resz) || isnan(Nmodel->resp) ) { - printf("Fu = %2.6e\n", Nmodel->resx * scaling.S * scaling.L ); // Units of momentum - printf("Fv = %2.6e\n", Nmodel->resz * scaling.S * scaling.L ); // Units of momentum - printf("Fp = %2.6e\n", Nmodel->resp * scaling.E * scaling.L * scaling.L ); // Units of velocity gradient + printf("Fu = %2.6e\n", Nmodel->resx * scaling.S / scaling.L ); // Units of momentum + printf("Fv = %2.6e\n", Nmodel->resz * scaling.S / scaling.L ); // Units of momentum + printf("Fp = %2.6e\n", Nmodel->resp * scaling.V / scaling.L ); // Units of velocity gradient printf("Solve went wrong - Nan residuals...\nExiting...\n"); exit(122); } @@ -993,11 +993,9 @@ void EvaluateRHS( grid* mesh, params model, scale scaling, double RHO_REF ) { if (model.compressible == 1 ) { if (mesh->comp_cells[c] == 1) { - if ( model.density_variations == 0 ) mesh->rhs_p[c] += mesh->p0_n[c]*mesh->bet_n[c]/model.dt; - if ( model.density_variations == 1 ) mesh->rhs_p[c] += log(mesh->rho0_n[c])/model.dt; - if (model.adiab_heating > 0 ) { - mesh->rhs_p[c] += mesh->divth0_n[c]; - } + // if ( model.density_variations == 0 ) mesh->rhs_p[c] += mesh->p0_n[c]*mesh->bet_n[c]/model.dt; # This is already the residual + // if ( model.density_variations == 1 ) mesh->rhs_p[c] += log(mesh->rho0_n[c])/model.dt; # This is already the residual + mesh->rhs_p[c] = mesh->divth0_n[c]; } } } diff --git a/MDLIB/include/mdoodz.h b/MDLIB/include/mdoodz.h index 998cf5b8..10cd2cca 100644 --- a/MDLIB/include/mdoodz.h +++ b/MDLIB/include/mdoodz.h @@ -84,8 +84,8 @@ typedef struct { double therm_perturb_x0, therm_perturb_z0, therm_perturb_dT, therm_perturb_rad, cooling_duration; // For rheological database... - int force_act_vol_ast; - double act_vol_dis_ast, act_vol_dif_ast; + int force_act_vol_ast, force_melt_weak; + double act_vol_dis_ast, act_vol_dif_ast, melt_weak; // Phase diagrams int isPD, num_PD, *PDMnT, *PDMnP, *PD1DnP; double **PDMrho, *PDMTmin, *PDMTmax, *PDMPmin, *PDMPmax; diff --git a/MDLIB/mdoodz-private.h b/MDLIB/mdoodz-private.h index 54b2851f..5df3340a 100755 --- a/MDLIB/mdoodz-private.h +++ b/MDLIB/mdoodz-private.h @@ -70,7 +70,7 @@ typedef struct { *exxd, *ezzd, *exz, *wxz, *wxz_n, *VE_s, *VE_n, *sxxd0, *szzd0, *sxz0, *mu_s, *mu_n, *u_adv, *v_adv, *eta_phys_n, *kx, *kz, *Cp, *Qr, *eta_phys_s, *u_start, *v_start, - *p_start, *divth0_n; + *p_start, *divth_n, *divth0_n; int *iter_smooth; int *nb_part_cell, *nb_part_vert; BC BCu, BCv, BCp, BCp_exp, BCT_exp, BCt, BCg, BCC_exp, BCc; @@ -585,3 +585,5 @@ void TransmutateMarkers(markers *particles, mat_prop *materials, doub void PartialMelting( double*, double*, double, double T, double, double, double, int, scale* ); void UpdateAlphaCp( grid*, markers*, mat_prop*, params*, scale* ); void MeltFractionGrid( grid*, markers*, mat_prop*, params*, scale* ); +void MassSourceTerm( grid*, markers*, mat_prop*, params*, scale* ); +void UpdateParticleDivThermal( grid*, scale, params, markers*, mat_prop* ); \ No newline at end of file diff --git a/SETS/CoolingChamber.c b/SETS/CoolingChamber.c new file mode 100644 index 00000000..47a2ba66 --- /dev/null +++ b/SETS/CoolingChamber.c @@ -0,0 +1,101 @@ +#include "mdoodz.h" +#include "math.h" +#include +#include + +int SetPhase(MdoodzInput *input, Coordinates coordinates) { + int phase = 0; + const double x = coordinates.x, z = coordinates.z; + const double Tcountry = input->model.user0 / input->scaling.T; + const double Tintrusion = input->model.user1 / input->scaling.T; + const double radius = input->model.user2 / input->scaling.L; + if (x * x + z * z < radius * radius) { + phase = 1; + } + return phase; +} + +int SetDualPhase(MdoodzInput *input, Coordinates coordinate, int phase) { + + int dual_phase = phase; + double Lx = input->model.xmax - input->model.xmin; + double Lz = input->model.zmax - input->model.zmin; + double Ax, Az; + + // Set checkerboard for phase 0 + Ax = cos( 6.0*2.0*M_PI*coordinate.x / Lx ); + Az = sin( 6.0*2.0*M_PI*coordinate.z / Lz ); + if ( ( (Az<0.0 && Ax<0.0) || (Az>0.0 && Ax>0.0) ) && dual_phase==0 ) { + dual_phase += input->model.Nb_phases; + } + + // Set checkerboard for phase 1 + Ax = cos( 24.0*2.0*M_PI*coordinate.x / Lx ); + Az = sin( 24.0*2.0*M_PI*coordinate.z / Lz ); + if ( ( (Az<0.0 && Ax<0.0) || (Az>0.0 && Ax>0.0) ) && dual_phase==1 ) { + dual_phase += input->model.Nb_phases; + } + + return dual_phase; +} + +double SetDensity(MdoodzInput *input, Coordinates coordinates, int phase) { + const double T_init = (input->model.user0 + zeroC) / input->scaling.T; + const double P_init = (input->model.bkg_pressure ) / input->scaling.S; + return input->materials.rho[phase]; +} + +double SetTemperature(MdoodzInput *input, Coordinates coordinates) { + const double x = coordinates.x, z = coordinates.z; + const double Tcountry = input->model.user0 / input->scaling.T; + const double Tintrusion = input->model.user1 / input->scaling.T; + const double radius = input->model.user2 / input->scaling.L; + double T = Tcountry; + if (x * x + z * z < radius * radius) { + T = Tintrusion; + } + // if (fabs(x)model.user0 / input->scaling.T; + if (position == W || position == E) { + bc.type = constant_temperature; + bc.value = Tcountry; + } + if (position == S || position == N) { + bc.type = constant_heatflux; + bc.value = 0.0; + } + return bc; +} + +int main(int nargs, char *args[]) { + // Input file name + char *input_file; + if ( nargs < 2 ) { + asprintf(&input_file, "CoolingChamber.txt"); // Default + } + else { + asprintf(&input_file, "%s", args[1]); // Custom + } + printf("Running MDoodz7.0 using %s\n", input_file); + MdoodzSetup setup = { + .SetParticles = &(SetParticles_ff){ + .SetPhase = SetPhase, + .SetDualPhase = SetDualPhase, + .SetDensity = SetDensity, + .SetTemperature = SetTemperature, + }, + .SetBCs = &(SetBCs_ff){ + .SetBCVx = SetPureOrSimpleShearBCVx, + .SetBCVz = SetPureOrSimpleShearBCVz, + .SetBCT = SetBCT, + }, + }; + RunMDOODZ(input_file, &setup); + free(input_file); + +} diff --git a/SETS/CoolingChamber.txt b/SETS/CoolingChamber.txt new file mode 100644 index 00000000..bad15461 --- /dev/null +++ b/SETS/CoolingChamber.txt @@ -0,0 +1,163 @@ +/**** RESTART ****/ +istep = 001000 +irestart = 0 + +/**** OUTPUT FILES ****/ +writer = 1 +writer_step = 10 +writer_markers = 0 +writer_debug = 0 +writer_energies = 0 + +/**** SCALES ****/ +eta = 1e15 +L = 100.0 +V = 1.0e-10 +T = 700 + +/**** SPACE-TIME ****/ +Nx = 101 +Nz = 101 +Nt = 1000 +xmin =-1e5 +zmin =-1e5 +xmax = 1e5 +zmax = 1e5 +dt = 1e12 +constant_dt = 0 +Courant = 0.2 +dt_max = 1e12 + +/**** SWITCHES ****/ +melting = 1 +mechanical = 1 +thermal = 1 +shear_heating = 0 +adiab_heating = 0 +advection = 1 +eta_average = 1 +stress_rotation = 1 +compressible = 1 +elastic = 1 +RK = 4 +periodic_x = 0 +pure_shear_ALE = 0 +line_search = 1 +free_surface = 0 +free_surface_stab = 0 +initial_cooling = 0 +subgrid_diffusion = 2 / do not use subgrid diffusion if thermal solver is off! +finite_strain = 0 + +/*** CHEMICAL ***/ +chemical_diffusion = 0 / +no_return = 0 +density_variations = 1 / renamed in MD7.0 (VolChangeReac) +unsplit_diff_reac = 0 + +/**** LINEAR ITERATIONS ****/ +lin_solver = 2 +diag_scaling = 0 +penalty = 1e2 +preconditioner = 1 +lin_abs_div = 1e-8 +lin_abs_div = 1e-8 +lin_rel_div = 1e-8 +lin_abs_mom = 1e-8 / momentum tolerance (new in MD7.0) +lin_rel_mom = 1e-8 + +/**** NON-LINEAR ITERATIONS ****/ +Newton = 1 +let_res_grow = 0 +line_search_min = 0.0 +Picard2Newton = 1 +Picard2Newton_tol = 2e-1 +nit_max = 30 +rel_tol_KSP = 5e-4 +nonlin_abs_mom = 1e-8 +nonlin_abs_div = 1e-8 +nonlin_rel_mom = 1e-8 +nonlin_rel_div = 1e-8 +min_eta = 1e10 +max_eta = 1e30 +safe_mode = 1 +safe_dt_div = 2.0 +max_num_stag = 10 +IncrementalUpdateGrid = 1 +gnuplot_log_res = 0 + +/**** SETUP DEPENDANT ****/ +shear_style = 0 +bkg_strain_rate = 0.0 +bkg_pressure = 0.5e9 +user0 = 673.0 / country T [K] +user1 = 1273.0 / intrusion T [K] +user2 = 25e3 / radius [m] +user3 = 0 + +/**** GRAVITY ****/ +gx = 0.0000 +gz = 0.0000 + +/**** MAT PROPERTIES ****/ +Nb_phases = 2 + +/**** PHASE 1 ****/ +ID = 0 +melt = 0 +density_model = 1 +rho = 2900.00 / host +drho = -300.0 +alp = 3.2e-5 +bet = 5e-12 / (K=80e9) +G = 4.0e10 +Cp = 1050.0 +k = 2.3 +Qr = 0.0 +C = 50e60 +phi = 10.0 +eta_vp = 5.0e19 +Slim = 500e9 +cstv = 1 / constant visc law +pwlv = 0 / disloc. creep +linv = 0 / diff. creep +gbsv = 0 / grain boundary sliding +expv = 0 / peierls creep +gsel = 0 / grain size evo. +eta0 = 1.0e20 +npwl = 1.0 +Qpwl = 0 +Pr = 1.5e9 +dPr = 700.0e6 +tau_kin = 1e10 +k_chem = 5.0e-26 + +/**** PHASE 1 ****/ +ID = 1 +melt = 1 +density_model = 5 +rho = 2700.00 / intrusion +drho = -100.0 / density difference of the melt (lighter) +alp = 3.2e-5 +bet = 1.25e-10 / (K=80e9) +G = 4.0e9 +Cp = 1050.0 +k = 2.3 +Qr = 0.0 +C = 50e60 +phi = 10.0 +eta_vp = 5.0e19 +Slim = 500e9 +cstv = 1 / constant visc law +pwlv = 0 / disloc. creep +linv = 0 / diff. creep +gbsv = 0 / grain boundary sliding +expv = 0 / peierls creep +gsel = 0 / grain size evo. +eta0 = 1.0e17 +npwl = 1.0 +Qpwl = 0 +Pr = 1.5e9 +dPr = 700.0e6 +tau_kin = 0e10 +k_chem = 5.0e-26 \ No newline at end of file diff --git a/SETS/MeltingOverpressure.txt b/SETS/MeltingOverpressure.txt index c3247daa..3e015a9d 100644 --- a/SETS/MeltingOverpressure.txt +++ b/SETS/MeltingOverpressure.txt @@ -134,7 +134,7 @@ ID = 1 melt = 10 density_model = 5 rho = 2900.00 / migmatite -drho = 300.0 +drho = -300.0 alp = 3.2e-5 bet = 1.25e-11 / (K=80e9) G = 4.0e9 diff --git a/SETS/RifingMelting.c b/SETS/RiftingMelting.c similarity index 100% rename from SETS/RifingMelting.c rename to SETS/RiftingMelting.c diff --git a/SETS/RiftingMelting.txt b/SETS/RiftingMelting.txt index 5c1ce7ec..67381547 100755 --- a/SETS/RiftingMelting.txt +++ b/SETS/RiftingMelting.txt @@ -65,6 +65,9 @@ user4 = 25e3 /lateral shift of pertubation user5 = 0 user6 = 0 user7 = 0 +force_melt_weak = 1 +melt_weak = 30. +min_eta = 1e17 /**** GRAVITY ****/ gx = 0.0000 @@ -77,6 +80,7 @@ ID = 0 melt = 11 density_model = 5 rho = 2800.00 / Upper Crust - Westerly granite +drho = -200. G = 1.0e10 Cv = 1050.0 k = 2.5 @@ -103,6 +107,7 @@ ID = 1 melt = 11 density_model = 5 rho = 2800.00 / Lower crust +drho = -200. G = 1.0e10 Cv = 1050.0 k = 2.5 @@ -126,50 +131,52 @@ eta_vp = 2.5e20 ID = 2 melt = 41 density_model = 5 -rho = 3330.00 / lithospheric mantle - Dry Olivine -alp = 32.0e-6 -bet = 1.5e-11 -G = 1.0e10 -Cv = 1050.0 -k = 3.0 -Qr = 0.0 -C = 5.0e7 -phi = 30.0 -Slim = 500.0e9 -cstv = 0 -pwlv = 40 -linv = 40 -gbsv = 0 -expv = 40 -Ce = 1e6 -cohe = 1e6 -plss = 0.5 -plse = 1.5 -eta_vp = 2.5e20 +rho = 3330.00 / lithospheric mantle - Dry Olivine +drho = -200. +alp = 32.0e-6 +bet = 1.5e-11 +G = 1.0e10 +Cv = 1050.0 +k = 3.0 +Qr = 0.0 +C = 5.0e7 +phi = 30.0 +Slim = 500.0e9 +cstv = 0 +pwlv = 40 +linv = 40 +gbsv = 0 +expv = 40 +Ce = 1e6 +cohe = 1e6 +plss = 0.5 +plse = 1.5 +eta_vp = 2.5e20 ID = 3 melt = 41 density_model = 5 -rho = 3330.00 / asthenosphere -alp = 32.0e-6 -bet = 1.5e-11 -G = 1.0e10 -Cv = 1050.0 -k = 3.0 -Qr = 0.0 -C = 5.0e7 -phi = 30.0 -Slim = 500.0e9 -cstv = 0 -pwlv = 40 -linv = 40 -gbsv = 0 -expv = 40 -coh_soft = 1 -Ce = 1e6 -plss = 0.5 -plse = 1.5 -eta_vp = 2.5e20 +rho = 3330.00 / asthenosphere +drho = -200. +alp = 32.0e-6 +bet = 1.5e-11 +G = 1.0e10 +Cv = 1050.0 +k = 3.0 +Qr = 0.0 +C = 5.0e7 +phi = 30.0 +Slim = 500.0e9 +cstv = 0 +pwlv = 40 +linv = 40 +gbsv = 0 +expv = 40 +coh_soft = 1 +Ce = 1e6 +plss = 0.5 +plse = 1.5 +eta_vp = 2.5e20 /**** DEFMAPS ****/ nT = 200 / Temperature resolution [] From a596fed3108bb3bbd67f627e1adf4ab926080c22 Mon Sep 17 00:00:00 2001 From: Thibault Duretz <48455309+tduretz@users.noreply.github.com> Date: Tue, 11 Jun 2024 11:36:37 +0200 Subject: [PATCH 12/21] Add smearing setup (#130) * add new smearing setup * fix CI * modif smearing setup --- .../Main_Visualisation_FaultSmearing_MD7.jl | 226 ++++++++++++++++++ .../Main_Visualisation_Makie_MD7.jl | 51 ++-- MDLIB/InputOutput.c | 4 + MDLIB/RheologyDensity.c | 5 +- SETS/FaultSmearing.c | 186 ++++++++++++++ SETS/FaultSmearing.txt | 192 +++++++++++++++ .../LinearPureshearAnisotropic.txt | 4 +- .../LinearPureshearIsotropic.txt | 4 +- .../LinearSimpleshearAnisotropic.txt | 4 +- .../LinearSimpleshearIsotropic.txt | 4 +- .../NonLinearPureshearAnisotropic.txt | 4 +- .../NonLinearPureshearIsotropic.txt | 4 +- .../NonLinearSimpleshearAnisotropi.txt | 4 +- .../NonLinearSimpleshearIsotropic.txt | 4 +- 14 files changed, 664 insertions(+), 32 deletions(-) create mode 100644 JuliaVisualisation/Main_Visualisation_FaultSmearing_MD7.jl create mode 100644 SETS/FaultSmearing.c create mode 100644 SETS/FaultSmearing.txt diff --git a/JuliaVisualisation/Main_Visualisation_FaultSmearing_MD7.jl b/JuliaVisualisation/Main_Visualisation_FaultSmearing_MD7.jl new file mode 100644 index 00000000..24703553 --- /dev/null +++ b/JuliaVisualisation/Main_Visualisation_FaultSmearing_MD7.jl @@ -0,0 +1,226 @@ +import Pkg +Pkg.activate(normpath(joinpath(@__DIR__, "."))) +using HDF5, Printf, Colors, ColorSchemes, MathTeXEngine, LinearAlgebra, FFMPEG, Statistics +using CairoMakie, GLMakie +const Mak = GLMakie +Makie.update_theme!(fonts = (regular = texfont(), bold = texfont(:bold), italic = texfont(:italic))) + +const y = 365*24*3600 +const My = 1e6*y +const cm_y = y*100. + +function LoadField(path, istep) + name = @sprintf("Output%05d.gzip.h5", istep) + @info "Reading $(name)" + filename = string(path, name) + + model = ExtractData( filename, "/Model/Params") + nvx = Int(model[4]) + nvz = Int(model[5]) + ncx, ncz = nvx-1, nvz-1 + + fields = ( + model = ExtractData( filename, "/Model/Params"), + xc = ExtractData( filename, "/Model/xc_coord"), + zc = ExtractData( filename, "/Model/zc_coord"), + xv = ExtractData( filename, "/Model/xg_coord"), + zv = ExtractData( filename, "/Model/zg_coord"), + xvz = ExtractData( filename, "/Model/xvz_coord"), + zvx = ExtractData( filename, "/Model/zvx_coord"), + xv_hr = ExtractData( filename, "/VizGrid/xviz_hr"), + zv_hr = ExtractData( filename, "/VizGrid/zviz_hr"), + τzz_t = ExtractData( filename, "TimeSeries/szzd_mean_time"), + P_t = ExtractData( filename, "TimeSeries/P_mean_time"), + τxz_t = ExtractData( filename, "TimeSeries/sxz_mean_time"), + t_t = ExtractData( filename, "TimeSeries/Time_time"), + # ηc = ExtractField(filename, "/Centers/eta_n", centroids, true, mask_air), + ρc = Float64.(reshape(ExtractData( filename, "/Centers/rho_n"), ncx, ncz)), + P = Float64.(reshape(ExtractData( filename, "/Centers/P"), ncx, ncz)), + T = Float64.(reshape(ExtractData( filename, "/Centers/T"), ncx, ncz)) .- 273.15, + d = Float64.(reshape(ExtractData( filename, "/Centers/d"), ncx, ncz)), + ε̇pl = Float64.(reshape(ExtractData( filename, "/Centers/eII_pl"), ncx, ncz)), + Vx = Float64.(reshape(ExtractData( filename, "/VxNodes/Vx"), (ncx+1), (ncz+2))), + Vz = Float64.(reshape(ExtractData( filename, "/VzNodes/Vz"), (ncx+2), (ncz+1))), + τxx = Float64.(reshape(ExtractData( filename, "/Centers/sxxd"), ncx, ncz)), + τzz = Float64.(reshape(ExtractData( filename, "/Centers/szzd"), ncx, ncz)), + τxz = Float64.(reshape(ExtractData( filename, "/Vertices/sxz"), nvx, nvz)), + ε̇xx = Float64.(reshape(ExtractData( filename, "/Centers/exxd"), ncx, ncz)), + ε̇zz = Float64.(reshape(ExtractData( filename, "/Centers/ezzd"), ncx, ncz)), + ε̇xz = Float64.(reshape(ExtractData( filename, "/Vertices/exz"), nvx, nvz)), + ) + dummy = ( + t = fields.model[1], + τyy = -(fields.τzz .+ fields.τxx), + ε̇yy = -(fields.ε̇xx .+ fields.ε̇zz), + ) + fields = merge(fields, dummy) + dummy = ( + τII = sqrt.( 0.5*(fields.τxx.^2 .+ fields.τyy.^2 .+ fields.τzz.^2 .+ 0.5*(fields.τxz[1:end-1,1:end-1].^2 .+ fields.τxz[2:end,1:end-1].^2 .+ fields.τxz[1:end-1,2:end].^2 .+ fields.τxz[2:end,2:end].^2 ) ) ), + ε̇II = sqrt.( 0.5*(fields.ε̇xx.^2 .+ fields.ε̇yy.^2 .+ fields.ε̇zz.^2 .+ 0.5*(fields.ε̇xz[1:end-1,1:end-1].^2 .+ fields.ε̇xz[2:end,1:end-1].^2 .+ fields.ε̇xz[1:end-1,2:end].^2 .+ fields.ε̇xz[2:end,2:end].^2 ) ) ), + τxzc = 0.25*(fields.τxz[1:end-1,1:end-1] .+ fields.τxz[2:end,1:end-1] .+ fields.τxz[1:end-1,2:end] .+ fields.τxz[2:end,2:end]), + ) + return merge(fields, dummy) +end + +function ExtractField(filename, field, size, mask_air, mask) + field = try (Float64.(reshape(ExtractData( filename, field), size...))) + catch + @warn "$field not found" + end + mask_air ? field[mask] .= NaN : nothing + return field +end + +function main() + + # Set the path to your files + path = ( + "/Users/tduretz/REPO/MDOODZ7.0/MDLIB/_p10_e18_t3/", + "/Users/tduretz/REPO/MDOODZ7.0/MDLIB/_p10_e18_t3_nonconv/", + "/Users/tduretz/REPO/MDOODZ7.0/MDLIB/_p10_e18_t2_nonconv/", + ) + names = ( + "T3: Fully converged", + "T3: 1 iteration", + "T2: 1 iteration", + ) + n_files = length(path) + + # File numbers + file_start = 000 + file_step = 10 + file_end = 2000 + + # Select field to visualise + field = :Phases + # field = :Cohesion + # field = :Density + field = :Viscosity + # field = :PlasticStrainrate + # field = :Stress + # field = :StrainRate + # field = :Pressure + # field = :Divergence + # field = :Temperature + # field = :Velocity_x + # field = :Velocity_z + # field = :Velocity + # field = :GrainSize + # field = :Topography + # field = :TimeSeries + # field = :AnisotropyFactor + # field = :MeltFraction + # field = :TimeSeries + field = :EffectiveFrictionTime + + # Switches + printfig = false # print figures to disk + printvid = false + framerate = 3 + PlotOnTop = ( + ph_contours = false, # add phase contours + T_contours = false, # add temperature contours + fabric = false, # add fabric quiver (normal to director) + topo = false, + σ1_axis = false, + vel_vec = false, + ) + α_heatmap = 1.0 #0.85 # transparency of heatmap + vel_arrow = 5 + vel_scale = 300000 + nap = 0.1 # pause for animation + resol = 1000 + Lx, Lz = 1.0, 1.0 + + # Scaling + # Lc = 1000. + # tc = My + # Vc = 1e-9 + + Lc = 1.0 + tc = My + Vc = 1.0 + + probe = [] + for i_file=1:n_files + probe_data = (ϕeff = Float64.([]), t = Float64.([])) + push!(probe, probe_data) + end + cm_yr = 100.0*3600.0*24.0*365.25 + + # Time loop + f = Figure(resolution = (Lx/Lz*resol*1.2, resol), fontsize=25) + + for istep=file_start:file_step:file_end + + dat = [] + for i_file=1:n_files + data = LoadField(path[i_file], istep) + push!(dat, data) + end + + ##################################### + empty!(f) + f = Figure(resolution = (Lx/Lz*resol*1.2, resol), fontsize=25) + + if field==:EffectiveFrictionTime + for i_file=1:n_files + ϕ_eff = -mean(dat[i_file].τxzc[:,end] ./ (dat[i_file].τzz[:,end] .- dat[i_file].P[:,end]) ) + if istep==0 ϕ_eff = 0. end + push!(probe[i_file].ϕeff, ϕ_eff) + push!(probe[i_file].t, dat[i_file].t) + end + if istep==file_end + ax1 = Axis(f[1, 1], title = L"$ϕ_\mathrm{eff}$", xlabel = L"$t$", ylabel = L"$ϕ_\mathrm{eff}$") + for i_file=1:n_files + lines!(ax1, Float64.(probe[i_file].t), Float64.(probe[i_file].ϕeff), label=names[i_file]) + end + axislegend(ax1, position = :rb) + end + + end + + if field!=:EffectiveFrictionTime || istep==file_end + DataInspector(f) + display(f) + sleep(nap) + end + + end + + yscale = Lz/Lx + + if printfig && printvid + FFMPEG.ffmpeg_exe(`-framerate $(framerate) -f image2 -pattern_type glob -i $(path)_$(field)/'*'.png -vf "scale=1080:1080*$(yscale)" -c:v libx264 -pix_fmt yuv420p -y "$(mov_name).mov"`) + end + +end + +function PrincipalStress(τxx, τzz, τxz, P) + σ1 = (x=zeros(size(τxx)), z=zeros(size(τxx)) ) + τxzc = 0.25*(τxz[1:end-1,1:end-1] .+ τxz[2:end-0,1:end-1] .+ τxz[1:end-1,2:end-0] .+ τxz[2:end-0,2:end-0]) + for i in eachindex(τxzc) + if P[i]>1e-13 + σ = [-P[i]+τxx[i] τxzc[i]; τxzc[i] -P[i]+τzz[i]] + v = eigvecs(σ) + σ1.x[i] = v[1,1] + σ1.z[i] = v[2,1] + end + end + return σ1 +end + +function ExtractData( file_path, data_path) + data = h5open(file_path, "r") do file + read(file, data_path) + end + return data +end + +function Print2Disk( f, path, field, istep; res=4) + path1 = path*"/_$field/" + mkpath(path1) + save(path1*"$field"*@sprintf("%05d", istep)*".png", f, px_per_unit = res) +end + +main() \ No newline at end of file diff --git a/JuliaVisualisation/Main_Visualisation_Makie_MD7.jl b/JuliaVisualisation/Main_Visualisation_Makie_MD7.jl index 359c82cf..f1f02488 100644 --- a/JuliaVisualisation/Main_Visualisation_Makie_MD7.jl +++ b/JuliaVisualisation/Main_Visualisation_Makie_MD7.jl @@ -29,7 +29,7 @@ function AddCountourQuivers!(PlotOnTop, ax1, xc, xv, zc, V, T, σ1, Fab, height, arrows!(ax1, xc./Lc, zc./Lc, Fab.x, Fab.z, arrowsize = 0, lengthscale=Δ/1.5) end if PlotOnTop.σ1_axis - arrows!(ax1, xc./Lc, zc./Lc, σ1.x, σ1.z, arrowsize = 0, lengthscale=Δ/1.5) + arrows!(ax1, xc./Lc, zc./Lc, σ1.x, σ1.z, arrowsize = 0, lengthscale=Δ/1.5, color=:white) end if PlotOnTop.vel_vec arrows!(ax1, xc./Lc, zc./Lc, V.x*cm_y, V.z*cm_y, arrowsize = V.arrow, lengthscale = V.scale) @@ -43,7 +43,8 @@ function main() # Set the path to your files path ="/Users/tduretz/REPO/MDOODZ7.0/MDLIB/TEST_ROMAN_ANI3_00_MR/" - path ="/Users/tduretz/REPO/MDOODZ7.0/MDLIB//" + path ="/Users/tduretz/REPO/MDOODZ7.0/MDLIB/_p10_e18_t3/" + path ="/Users/tduretz/REPO/MDOODZ7.0/MDLIB/_p10_e18_t1_nonconv/" # path ="/Users/tduretz/Downloads/" # path ="/Users/tduretz/REPO/MDOODZ7.0/MDLIB/DoubleSubduction_OMP16/" @@ -56,15 +57,15 @@ function main() # path ="/Users/tduretz/REPO/MDOODZ7.0/RUNS/1_NR09/" # File numbers - file_start = 00 - file_step = 50 - file_end = 200 + file_start = 000 + file_step = 100 + file_end = 2000 # Select field to visualise - # field = :Phases + field = :Phases # field = :Cohesion # field = :Density - field = :Viscosity + # field = :Viscosity # field = :PlasticStrainrate # field = :Stress # field = :StrainRate @@ -79,6 +80,8 @@ function main() # field = :TimeSeries # field = :AnisotropyFactor # field = :MeltFraction + # field = :TimeSeries + # field = :EffectiveFrictionTime # Switches printfig = false # print figures to disk @@ -95,7 +98,7 @@ function main() α_heatmap = 1.0 #0.85 # transparency of heatmap vel_arrow = 5 vel_scale = 300000 - nap = 0.3 # pause for animation + nap = 0.1 # pause for animation resol = 1000 mov_name = "$(path)/_$(field)/$(field)" # Name of the movie Lx, Lz = 1.0, 1.0 @@ -109,6 +112,7 @@ function main() tc = My Vc = 1.0 + probe = (ϕeff = Float64.([]), t = Float64.([])) cm_yr = 100.0*3600.0*24.0*365.25 # Time loop @@ -128,8 +132,10 @@ function main() zvx = ExtractData( filename, "/Model/zvx_coord") xv_hr = ExtractData( filename, "/VizGrid/xviz_hr") zv_hr = ExtractData( filename, "/VizGrid/zviz_hr") - # τxz_t = ExtractData( filename, "TimeSeries/sxz_mean_time") - # t_t = ExtractData( filename, "TimeSeries/Time_time") + τzz_t = ExtractData( filename, "TimeSeries/szzd_mean_time") + P_t = ExtractData( filename, "TimeSeries/P_mean_time") + τxz_t = ExtractData( filename, "TimeSeries/sxz_mean_time") + t_t = ExtractData( filename, "TimeSeries/Time_time") xc_hr = 0.5.*(xv_hr[1:end-1] .+ xv_hr[2:end]) zc_hr = 0.5.*(zv_hr[1:end-1] .+ zv_hr[2:end]) @@ -174,6 +180,7 @@ function main() ε̇xz = Float64.(reshape(ExtractData( filename, "/Vertices/exz"), nvx, nvz)) τII = sqrt.( 0.5*(τxx.^2 .+ τyy.^2 .+ τzz.^2 .+ 0.5*(τxz[1:end-1,1:end-1].^2 .+ τxz[2:end,1:end-1].^2 .+ τxz[1:end-1,2:end].^2 .+ τxz[2:end,2:end].^2 ) ) ); τII[mask_air] .= NaN ε̇II = sqrt.( 0.5*(ε̇xx.^2 .+ ε̇yy.^2 .+ ε̇zz.^2 .+ 0.5*(ε̇xz[1:end-1,1:end-1].^2 .+ ε̇xz[2:end,1:end-1].^2 .+ ε̇xz[1:end-1,2:end].^2 .+ ε̇xz[2:end,2:end].^2 ) ) ); ε̇II[mask_air] .= NaN + τxzc = 0.25*(τxz[1:end-1,1:end-1] .+ τxz[2:end,1:end-1] .+ τxz[1:end-1,2:end] .+ τxz[2:end,2:end]) C = Float64.(reshape(ExtractData( filename, "/Centers/cohesion"), ncx, ncz)) ϕ = ExtractField(filename, "/Centers/phi", centroids, false, 0) divu = ExtractField(filename, "/Centers/divu", centroids, false, 0) @@ -425,12 +432,28 @@ function main() if field==:TimeSeries ax1 = Axis(f[1, 1], title = L"$τ_{xz}$", xlabel = L"$t$", ylabel = L"$\tau_{xz}$") - lines!(ax1, t_t, τxz_t) + τxz_t[1] = 0. + @show .-τxz_t + lines!(ax1, t_t, .-τxz_t./(.-P_t.+τzz_t)) end - DataInspector(f) - display(f) - sleep(nap) + if field==:EffectiveFrictionTime + ϕ_eff = -mean(τxzc[:,end] ./ (τzz[:,end] .- P[:,end]) ) + if istep==0 ϕ_eff = 0. end + push!(probe.ϕeff, ϕ_eff) + push!(probe.t, t) + if istep==file_end + ax1 = Axis(f[1, 1], title = L"$ϕ_\mathrm{eff}$", xlabel = L"$t$", ylabel = L"$ϕ_\mathrm{eff}$") + lines!(ax1, Float64.(probe.t), Float64.(probe.ϕeff)) + end + + end + + if field!=:EffectiveFrictionTime || istep!=file_end + DataInspector(f) + display(f) + sleep(nap) + end end diff --git a/MDLIB/InputOutput.c b/MDLIB/InputOutput.c index 225e65d7..fa7f05ad 100755 --- a/MDLIB/InputOutput.c +++ b/MDLIB/InputOutput.c @@ -1271,6 +1271,10 @@ Input ReadInputFile( char *fileName ) { materials.psi[k] = ReadMatProps( fin, "psi", k, 0.0 ) * M_PI/ 180.0; if (materials.psi[k]>0.0 && model.compressible==0) { printf("Set compressible=1 to activate dilation\n"); exit(1); } materials.Slim[k] = ReadMatProps( fin, "Slim" ,k, 1.0e90 ) / scaling.S; + if (materials.Slim[k]cstv[phase]); // Activate deformation mechanisms if ( materials->cstv[phase] !=0 ) constant = 1; @@ -628,7 +629,7 @@ double ViscosityConcise( int phase, double G, double T, double P, double d, doub // Check yield stress F_trial = Tii - Tyield; - // if (F_trial>0) printf("%2.2e %2.2e %2.2e %2.2e %2.2e\n", F_trial*scaling->S, C*scaling->S, cos_fric, P*scaling->S, sin_fric); + // if (F_trial>0) printf("F=%2.2e C=%2.2e cos_fric=%2.2e P=%2.2e sin_fric=%2.2e\n", F_trial*scaling->S, C*scaling->S, cos_fric, P*scaling->S, sin_fric); double Tiic; double Pc_chk; @@ -775,7 +776,7 @@ double ViscosityConcise( int phase, double G, double T, double P, double d, doub if (is_pl == 1) inv_eta_diss += (1.0/eta_pl ); eta = 1.0/(inv_eta_diss); // if (T*scaling->T<673.0) { - // printf("constant = %d %2.2e %2.2e %2.2e %2.2e\n", constant, eta*scaling->eta, eta_pwl*scaling->eta, eta_pl*scaling->eta, eta_cst*scaling->eta); + // printf("constant = %d eta = %2.2e eta_pl = %2.2e %2.2e %2.2e %2.2e\n", constant, eta*scaling->eta, eta_pl*scaling->eta, eta_pwl*scaling->eta, eta_pl*scaling->eta, eta_cst*scaling->eta); // } // Viscoplastic overstress diff --git a/SETS/FaultSmearing.c b/SETS/FaultSmearing.c new file mode 100644 index 00000000..88acd5f7 --- /dev/null +++ b/SETS/FaultSmearing.c @@ -0,0 +1,186 @@ +#include "math.h" +#include "mdoodz.h" +#include "stdio.h" +#include "stdlib.h" + +int SetDualPhase(MdoodzInput *input, Coordinates coordinate, int phase) { + + int dual_phase = phase; + double Lx = input->model.xmax - input->model.xmin; + double Lz = input->model.zmax - input->model.zmin; + double Ax, Az; + + // Set checkerboard for phase 0 + Ax = cos( 10.0*2.0*M_PI*coordinate.x / Lx ); + Az = cos( 10.0*2.0*M_PI*coordinate.z / Lz ); + if ( ( (Az<0.0 && Ax<0.0) || (Az>0.0 && Ax>0.0) ) && dual_phase==0 ) { + dual_phase += input->model.Nb_phases; + } + + // // Set checkerboard for phase 2 + // Ax = cos( 10.0*2.0*M_PI*coordinate.x / Lx ); + // Az = cos( 10.0*2.0*M_PI*coordinate.z / Lz ); + // if ( ( (Az<0.0 && Ax<0.0) || (Az>0.0 && Ax>0.0) ) && dual_phase==2 ) { + // dual_phase += input->model.Nb_phases; + // } + + return dual_phase; +} + +char *ReadGeometryFile(char *inputFile, int nb_elems) { + char *ph_hr = malloc((nb_elems) * sizeof(char)); + FILE *fid = fopen(inputFile, "rb"); + if (!fid) { + fprintf(stderr, "\nUnable to open file %s. I will exit here ... \n", inputFile); + exit(2); + } + fread(ph_hr, sizeof(char), nb_elems, fid); + fclose(fid); + return ph_hr; +} + +void MutateInput(MdoodzInput *input) { + if (input->model.user0 == 0) { + printf("Phase map to be drawn in a SetParticles\n"); + return; + } else if (input->model.user0 == 1) { + char *fileName = input->model.import_file; + char inputFilePath[255]; + sprintf(inputFilePath, "%s/%s", input->model.import_files_dir, input->model.import_file); + printf("Phase map will be built based on %s\n", fileName); + const int nx = (int) (input->model.user7); + const int nz = nx; + const int nb_elems = nx * nz; + input->geometry = malloc(sizeof(Geometry)); + input->geometry[0] = (Geometry){ + .nx = nx, + .nz = nz, + .nb_elems = nb_elems, + .ph_hr = ReadGeometryFile(inputFilePath, nb_elems), + }; + } +} + +int SetPhase(MdoodzInput *input, Coordinates coordinates) { + if (input->geometry) { + const int nx = input->geometry->nx+1; + const int nz = input->geometry->nz+1; + // ------------------------- // + // Locate markers in the image files + // Find index of minimum/west temperature node + double dx_hr = (input->model.xmax - input->model.xmin) / (nx-1); + double dz_hr = (input->model.zmax - input->model.zmin) / (nz-1); + double dstx = (coordinates.x - input->model.xmin); + int ix = (int) ceil(dstx / dx_hr) - 1; + // Find index of minimum/west pressure node + double dstz = (coordinates.z - input->model.zmin); + int iz = (int) ceil(dstz / dz_hr) - 1; + // Attribute phase + if (ix < 0) { + printf("sauceisse!!!\n"); + exit(1); + } + if (iz < 0) { + printf("puréee!!!\n"); + exit(1); + } + if (ix + iz * (nx-1) > input->geometry->nb_elems) { + printf("puréee!!!\n"); + exit(1); + } + // Default: phase from input file + int phase = input->geometry->ph_hr[ix + iz * (nx-1)]; + // Add seed + const double radius = input->model.user1 / input->scaling.L; + const double theta = -0.0 * M_PI / 180.0; + const double Xn = coordinates.x * cos(theta) - coordinates.z * sin(theta); + const double Zn = coordinates.x * sin(theta) + coordinates.z * cos(theta); + if ( (pow(Xn / radius / 1.0, 2) + pow(Zn / radius / 1.0, 2) - 1.0) < 0) { + phase = 1; + } + return phase; + } + else { + // Simple setup with only one seed + const double radius = input->model.user1 / input->scaling.L; + const double theta = -0.0 * M_PI / 180.0; + const double Xn = coordinates.x * cos(theta) - coordinates.z * sin(theta); + const double Zn = coordinates.x * sin(theta) + coordinates.z * cos(theta); + if ( (pow(Xn / radius / 1.0, 2) + pow(Zn / radius / 1.0, 2) - 1.0) < 0) { + return 1; + } else { + return 0; + } + } +} + +double SetNoise(MdoodzInput *input, Coordinates coordinates, int phase) { + // srand(69); + return ((double) rand() / (double) RAND_MAX) - 0.5; +} + +double SetPressure(MdoodzInput *input, Coordinates coordinates, int phase) { + return input->model.bkg_pressure; +} + +// SetBC SetBCVx(MdoodzInput *instance, POSITION position, Coordinates coordinates) { +// SetBC bc; +// const double x = coordinates.x; + +// // Assign BC values +// if (position == N || position == S || position == NW || position == SW || position == NE || position == SE) { +// bc.value = 0; +// bc.type = 13; +// } else if (position == W || position == E) { +// bc.value = -x * (instance->model.bkg_strain_rate - instance->model.bkg_div_rate/3.0); +// bc.type = 0; +// } else { +// bc.value = 0.0; +// bc.type = -1; +// } +// return bc; +// } + +// SetBC SetBCVz(MdoodzInput *instance, POSITION position, Coordinates coordinates) { +// SetBC bc; +// const double z = coordinates.z; + +// // Set boundary nodes types and values +// if (position == W || position == SW || position == NW || position == E || position == SE || position == NE ) { +// bc.value = 0.0; +// bc.type = 13; +// } else if (position == S || position == N) { +// bc.value = z * (instance->model.bkg_strain_rate + instance->model.bkg_div_rate/3.0); +// bc.type = 0; +// } else { +// bc.value = 0; +// bc.type = -1; +// } +// return bc; +// } + +int main(int nargs, char *args[]) { +// Input file name + char *input_file; + if ( nargs < 2 ) { + asprintf(&input_file, "FaultSmearing.txt"); // Default + } + else { + asprintf(&input_file, "%s", args[1]); // Custom + } + printf("Running MDoodz7.0 using %s\n", input_file); + MdoodzSetup setup = { + .SetParticles = &(SetParticles_ff){ + .SetPhase = SetPhase, + .SetNoise = SetNoise, + .SetPressure = SetPressure, + .SetDualPhase = SetDualPhase, + }, + .SetBCs = &(SetBCs_ff){ + .SetBCVx = SetPureOrSimpleShearBCVx, + .SetBCVz = SetPureOrSimpleShearBCVz, + }, + .MutateInput = MutateInput, + }; + RunMDOODZ(input_file, &setup); +} diff --git a/SETS/FaultSmearing.txt b/SETS/FaultSmearing.txt new file mode 100644 index 00000000..26ccdd0c --- /dev/null +++ b/SETS/FaultSmearing.txt @@ -0,0 +1,192 @@ +/**** RESTART ****/ +istep = 001600 +irestart = 0 + +/**** INPUT FILE ****/ +import_files_dir = ../IMPORT/FaultSmearing +import_file = Nx1501_P10_T1.bin /indicates the name in the input file for geometry + +/**** OUTPUT FILES ****/ +writer = 1 +writer_step = 10 +writer_markers = 0 +writer_debug = 0 +writer_energies = 0 +delete_breakpoints = 1 + +/**** SCALES ****/ +eta = 1e20 +L = 1e0 +V = 1e-10 +T = 600 + +/**** SPACE ****/ +Nx = 151 +Nz = 151 +xmin = -0.5 +zmin = -0.5 +xmax = 0.5 +zmax = 0.5 +dt = 1e9 + +/**** TIME ****/ +Nt = 2000 +constant_dt = 1 +Courant = 0.3 +penalty = 1e5 +RK = 4 + +/**** SWITCHES ****/ +mechanical = 1 +pure_shear_ALE = 0 +thermal = 0 +line_search = 1 +subgrid_diffusion = 2 +shear_heating = 0 +adiab_heating = 0 +finite_strain = 1 +advection = 1 +gnuplot_log_res = 0 +kinetics = 0 +density_variations = 0 +elastic = 1 +compressible = 0 +safe_mode = 0 +eta_average = 1 +marker_noise = 0 / noise beau-gosse +out_of_plane = 1 / non zeros total Eyy +preconditioner = 1 + +/**** SETUP DEPENDANT ****/ +shear_style = 1 +bkg_strain_rate = 1e-13 +bkg_div_rate = 0.0 +bkg_pressure = 1.0e9 / pressure [Pa] +bkg_temperature = 0.0 / temperature [K] +user0 = 1 / 0: simple setup (one seed) 1: read binary file with geometry +user1 = 0.025 / inclusion radius [m] +user7 = 1500 / size of pixel max + +/**** GRAVITY ****/ +gx = 0.0000 +gz = 0.000 + +/**** MAT PROPERTIES ****/ +Nb_phases = 4 + +/**** PHASE 0 ****/ +ID = 0 +G = 4e10 +C = 4e7 +Slim = 1e10 +phi = 35 +psi = 0 +eta_vp = 1e19 +Slim = 500e9 +density_model = 3 +alp = 10.0e-6 +bet = 1.890e-11 +cstv = 1 / constant visc law +pwlv = 0 / disloc. creep +linv = 0 / diff. creep +gbsv = 0 / grain boundary sliding +expv = 0 / peierls creep +gsel = 0 / grain size evo. +eta0 = 1e25 +npwl = 1 +Qpwl = 0 + +/**** PHASE 1 ****/ +ID = 1 +G = 4e10 +C = 1e7 +Slim = 1e10 +phi = 35 +psi = 0 +eta_vp = 1e19 +density_model = 3 +alp = 10.0e-6 +bet = 1.890e-11 +cstv = 1 / constant visc law +pwlv = 0 / disloc. creep +linv = 0 / diff. creep +gbsv = 0 / grain boundary sliding +expv = 0 / peierls creep +gsel = 0 / grain size evo. +eta0 = 1e25 +npwl = 1 +Qpwl = 0 + +/**** PHASE 2 ****/ +ID = 2 +G = 4e10 +C = 4e7 +Slim = 1e10 +phi = 35 +psi = 0 +eta_vp = 1e19 +density_model = 3 +alp = 10.0e-6 +bet = 1.890e-11 +cstv = 1 / constant visc law +pwlv = 0 / disloc. creep +linv = 0 / diff. creep +gbsv = 0 / grain boundary sliding +expv = 0 / peierls creep +gsel = 0 / grain size evo. +eta0 = 1e18 +npwl = 1 +Qpwl = 0 + +/**** PHASE 3 ****/ +ID = 3 +G = 4e10 +C = 4e7 +Slim = 1e10 +phi = 35 +psi = 0 +eta_vp = 1e19 +density_model = 3 +alp = 10.0e-6 +bet = 1.890e-11 +cstv = 1 / constant visc law +pwlv = 0 / disloc. creep +linv = 0 / diff. creep +gbsv = 0 / grain boundary sliding +expv = 0 / peierls creep +gsel = 0 / grain size evo. +eta0 = 1e18 +npwl = 1 +Qpwl = 0 + +/**** DEFMAPS ****/ +nT = 51 / Temperature resolution [] +nE = 51 / Strain rate resolution [] +nd = 2 / Grain size resolution [] +Tmin = 240 / Temperature minimum [°C] +Tmax = 2000 / Temperature maximum [°C] +Emin = -50 / Strain rate minimum log_10 [1/s] +Emax = 5 / Strain rate maximum log_10 [1/s] +dmin = -7 / Grain size minimum log_10 [m] +dmax = -2 / Grain size maximum log_10 [m] +Pn = 1e9 / Pressure [Pa] + +/**** PARTICLES ****/ +Nx_part = 4 +Nz_part = 4 +min_part_cell = 16 + +/**** NON-LINEAR ITERATIONS ****/ +Newton = 0 +Picard2Newton = 1 +Picard2Newton_tol = 1e-1 +nit_max = 1 +rel_tol_KSP = 1e-4 +nonlin_abs_mom = 1e-9 +nonlin_abs_div = 1e-9 +lin_abs_div = 1e-8 +lin_rel_div = 1e-8 +min_eta = 1e17 +max_eta = 1e25 + +/**** END OF INPUT FILE ****/ \ No newline at end of file diff --git a/TESTS/ShearTemplate/LinearPureshearAnisotropic.txt b/TESTS/ShearTemplate/LinearPureshearAnisotropic.txt index 2e63d10a..5ee62985 100755 --- a/TESTS/ShearTemplate/LinearPureshearAnisotropic.txt +++ b/TESTS/ShearTemplate/LinearPureshearAnisotropic.txt @@ -94,7 +94,7 @@ k = 2.5 Qr = 0 C = 1e90 phi = 30 -Slim = 500e9 +Slim = 1e100 alp = 10.0e-6 bet = 1e-11 drho = 0 @@ -121,7 +121,7 @@ k = 2.5 Qr = 0 C = 1e90 phi = 30 -Slim = 500e9 +Slim = 1e100 alp = 10.0e-6 bet = 1e-11 drho = 0 diff --git a/TESTS/ShearTemplate/LinearPureshearIsotropic.txt b/TESTS/ShearTemplate/LinearPureshearIsotropic.txt index d9283139..304c9a96 100755 --- a/TESTS/ShearTemplate/LinearPureshearIsotropic.txt +++ b/TESTS/ShearTemplate/LinearPureshearIsotropic.txt @@ -94,7 +94,7 @@ k = 2.5 Qr = 0 C = 1e90 phi = 30 -Slim = 500e9 +Slim = 1e100 alp = 10.0e-6 bet = 1e-11 drho = 0 @@ -121,7 +121,7 @@ k = 2.5 Qr = 0 C = 1e90 phi = 30 -Slim = 500e9 +Slim = 1e100 alp = 10.0e-6 bet = 1e-11 drho = 0 diff --git a/TESTS/ShearTemplate/LinearSimpleshearAnisotropic.txt b/TESTS/ShearTemplate/LinearSimpleshearAnisotropic.txt index 64646a1d..c1cd84a8 100755 --- a/TESTS/ShearTemplate/LinearSimpleshearAnisotropic.txt +++ b/TESTS/ShearTemplate/LinearSimpleshearAnisotropic.txt @@ -94,7 +94,7 @@ k = 2.5 Qr = 0 C = 1e90 phi = 30 -Slim = 500e9 +Slim = 1e100 alp = 10.0e-6 bet = 1e-11 drho = 0 @@ -121,7 +121,7 @@ k = 2.5 Qr = 0 C = 1e90 phi = 30 -Slim = 500e9 +Slim = 1e100 alp = 10.0e-6 bet = 1e-11 drho = 0 diff --git a/TESTS/ShearTemplate/LinearSimpleshearIsotropic.txt b/TESTS/ShearTemplate/LinearSimpleshearIsotropic.txt index 81fd575f..ad234b75 100755 --- a/TESTS/ShearTemplate/LinearSimpleshearIsotropic.txt +++ b/TESTS/ShearTemplate/LinearSimpleshearIsotropic.txt @@ -94,7 +94,7 @@ k = 2.5 Qr = 0 C = 1e90 phi = 30 -Slim = 500e9 +Slim = 1e100 alp = 10.0e-6 bet = 1e-11 drho = 0 @@ -121,7 +121,7 @@ k = 2.5 Qr = 0 C = 1e90 phi = 30 -Slim = 500e9 +Slim = 1e100 alp = 10.0e-6 bet = 1e-11 drho = 0 diff --git a/TESTS/ShearTemplate/NonLinearPureshearAnisotropic.txt b/TESTS/ShearTemplate/NonLinearPureshearAnisotropic.txt index 72263828..730c9d5c 100755 --- a/TESTS/ShearTemplate/NonLinearPureshearAnisotropic.txt +++ b/TESTS/ShearTemplate/NonLinearPureshearAnisotropic.txt @@ -94,7 +94,7 @@ k = 2.5 Qr = 0 C = 1e90 phi = 30 -Slim = 500e9 +Slim = 1e100 alp = 10.0e-6 bet = 1e-11 drho = 0 @@ -121,7 +121,7 @@ k = 2.5 Qr = 0 C = 1e90 phi = 30 -Slim = 500e9 +Slim = 1e100 alp = 10.0e-6 bet = 1e-11 drho = 0 diff --git a/TESTS/ShearTemplate/NonLinearPureshearIsotropic.txt b/TESTS/ShearTemplate/NonLinearPureshearIsotropic.txt index 57d053fc..fd4c5f7b 100755 --- a/TESTS/ShearTemplate/NonLinearPureshearIsotropic.txt +++ b/TESTS/ShearTemplate/NonLinearPureshearIsotropic.txt @@ -94,7 +94,7 @@ k = 2.5 Qr = 0 C = 1e90 phi = 30 -Slim = 500e9 +Slim = 1e100 alp = 10.0e-6 bet = 1e-11 drho = 0 @@ -121,7 +121,7 @@ k = 2.5 Qr = 0 C = 1e90 phi = 30 -Slim = 500e9 +Slim = 1e100 alp = 10.0e-6 bet = 1e-11 drho = 0 diff --git a/TESTS/ShearTemplate/NonLinearSimpleshearAnisotropi.txt b/TESTS/ShearTemplate/NonLinearSimpleshearAnisotropi.txt index 274902df..20dc9b28 100755 --- a/TESTS/ShearTemplate/NonLinearSimpleshearAnisotropi.txt +++ b/TESTS/ShearTemplate/NonLinearSimpleshearAnisotropi.txt @@ -94,7 +94,7 @@ k = 2.5 Qr = 0 C = 1e90 phi = 30 -Slim = 500e9 +Slim = 1e100 alp = 10.0e-6 bet = 1e-11 drho = 0 @@ -121,7 +121,7 @@ k = 2.5 Qr = 0 C = 1e90 phi = 30 -Slim = 500e9 +Slim = 1e100 alp = 10.0e-6 bet = 1e-11 drho = 0 diff --git a/TESTS/ShearTemplate/NonLinearSimpleshearIsotropic.txt b/TESTS/ShearTemplate/NonLinearSimpleshearIsotropic.txt index 1825e4e9..48e9b318 100755 --- a/TESTS/ShearTemplate/NonLinearSimpleshearIsotropic.txt +++ b/TESTS/ShearTemplate/NonLinearSimpleshearIsotropic.txt @@ -94,7 +94,7 @@ k = 2.5 Qr = 0 C = 1e90 phi = 30 -Slim = 500e9 +Slim = 1e100 alp = 10.0e-6 bet = 1e-11 drho = 0 @@ -121,7 +121,7 @@ k = 2.5 Qr = 0 C = 1e90 phi = 30 -Slim = 500e9 +Slim = 1e100 alp = 10.0e-6 bet = 1e-11 drho = 0 From 149a0b51ab5a5fc6989304b57651368d7fc92e5f Mon Sep 17 00:00:00 2001 From: tduretz Date: Tue, 11 Jun 2024 11:53:11 +0200 Subject: [PATCH 13/21] add RiverTomLowerCrustMelt.txt --- MDLIB/FlowLaws.c | 14 ++++ SETS/FaultSmearing.c | 1 + SETS/RiverTomLowerCrust.c | 15 +++- SETS/RiverTomLowerCrustMelt.txt | 135 ++++++++++++++++++++++++++++++++ 4 files changed, 163 insertions(+), 2 deletions(-) create mode 100644 SETS/RiverTomLowerCrustMelt.txt diff --git a/MDLIB/FlowLaws.c b/MDLIB/FlowLaws.c index e69e9f8d..34090c35 100755 --- a/MDLIB/FlowLaws.c +++ b/MDLIB/FlowLaws.c @@ -421,6 +421,20 @@ void ReadDataPowerLaw( mat_prop* mat, params* model, int k, int number, scale* s mat->apwl[k] = 0.0; success = 1; break; + + case 34: + printf("Westerly Granite + melt weakening (dry) - Hansen & Carter (1983):\n" ); + mat->tpwl[k] = 1; + mat->npwl[k] = 3.3; + mat->mpwl[k] = 0.0; + mat->rpwl[k] = 0.0; + mat->Qpwl[k] = 186.5e3; + mat->Vpwl[k] = 0.0e-6; + mat->Apwl[k] = 3.1623e-26; + mat->fpwl[k] = 0.0; + mat->apwl[k] = 50.0; + success = 1; + break; /******************************** Mantle flow laws ********************************/ diff --git a/SETS/FaultSmearing.c b/SETS/FaultSmearing.c index 88acd5f7..de7c5096 100644 --- a/SETS/FaultSmearing.c +++ b/SETS/FaultSmearing.c @@ -183,4 +183,5 @@ int main(int nargs, char *args[]) { .MutateInput = MutateInput, }; RunMDOODZ(input_file, &setup); + free(input_file); } diff --git a/SETS/RiverTomLowerCrust.c b/SETS/RiverTomLowerCrust.c index 03e53a36..443eca1d 100755 --- a/SETS/RiverTomLowerCrust.c +++ b/SETS/RiverTomLowerCrust.c @@ -2,6 +2,7 @@ #include "mdoodz.h" #include "stdbool.h" #include "stdlib.h" +#include "stdio.h" /*--------------------------------------------------------------------------------------------------------------------*/ /*------------------------------------------------------ M-Doodz -----------------------------------------------------*/ @@ -199,7 +200,16 @@ void AddCrazyConductivity(MdoodzInput *input) { /*------------------------------------------------------ M-Doodz -----------------------------------------------------*/ /*--------------------------------------------------------------------------------------------------------------------*/ -int main() { +int main(int nargs, char *args[]) { +// Input file name + char *input_file; + if ( nargs < 2 ) { + asprintf(&input_file, "RiverTomLowerCrust.txt"); // Default + } + else { + asprintf(&input_file, "%s", args[1]); // Custom + } + printf("Running MDoodz7.0 using %s\n", input_file); MdoodzSetup setup = { .BuildInitialTopography = &(BuildInitialTopography_ff){ .SetSurfaceZCoord = SetSurfaceZCoord, @@ -219,7 +229,8 @@ int main() { .MutateInput = AddCrazyConductivity, }; - RunMDOODZ("RiverTomLowerCrust.txt", &setup); + RunMDOODZ(input_file, &setup); + free(input_file); } /*--------------------------------------------------------------------------------------------------------------------*/ diff --git a/SETS/RiverTomLowerCrustMelt.txt b/SETS/RiverTomLowerCrustMelt.txt new file mode 100644 index 00000000..af073075 --- /dev/null +++ b/SETS/RiverTomLowerCrustMelt.txt @@ -0,0 +1,135 @@ +/**** RESTART ****/ +istep = 00020 +irestart = 0 + +/**** OUTPUT FILES ****/ +writer = 1 +writer_step = 10 +writer_markers = 0 + +/**** SCALES ****/ Scaling parameters for +eta = 1.e+22 /viscosity +L = 1.e4 /length +V = 1.0e-9 /velocity +T = 1.e+02 /temperature + +/**** SPACE****/ +Nx = 501 +Nz = 161 +xmin = -250.000000e3 +xmax = 250.000000e3 +zmin = -150.000000e3 +zmax = 10.000000e3 + +/**** TIME ****/ +Nt = 5000 +dt = 2.63e10 +constant_dt = 0 +Courant = 0.25 +RK = 4 + +/**** SWITCHES ****/ +mechanical = 1 +pure_shear_ALE = -1 /1: box stretched at constant strain rate; -1 box of constant size +elastic = 1 +thermal = 1 +free_surface = 1 +free_surface_stab = 1.0 +initial_cooling = 1 +subgrid_diffusion = 2 +shear_heating = 1 +adiab_heating = 0 +track_T_P_x_z = 1 / initial P and T field record +conserv_interp = 0 + +/**** SURFACE PROCESSES ****/ +surface_processes = 5 /0 = none; 1 = diffusion only; 2 = fills instantaneously the basin up to the base level; 3 = diffusion + source term +surf_diff = 3e-6 /topography diffusion coefficient +surf_Winc = 1e3 +surf_Vinc = 2.9e-9 +zero_mean_topo = 1 +melting = 1 + +/**** SETUP DEPENDANT ****/ +bkg_strain_rate = 1e-18 / Background strain rate [s-1] +user0 = 1330.0 / Mantle temperature +user1 = 60.0e3 / Crust thickness +user2 = 7e3 /Upper crust Thickness + + +/**** GRAVITY ****/ +gx = 0.0000 +gz = -9.81 + +/**** PHASE PROPERTIES ****/ +Nb_phases = 3 + +ID = 0 / upper Crust +melt = 10 +drho = -200.00 +rho = 2800.00 / ref. density +G = 3e10 / shear modulus +alp = 30.0e-6 / thermal expansivity +bet = 1e-11 / compressibility +Cp = 1050 / heat capacity +k = 2.0 / thermal conductivity +Qr = 1e-6 / radiogenic heat production +C = 5e7 / cohesion +phi = 30.00 / friction angle +eta_vp = 1e21 / viscoplastic viscosity +pwlv = 34 / power law viscosity -> database flow_laws.c +density_model = 5 + +ID = 1 / Lower Crust +melt = 10 +drho = -200.00 +rho = 2800.00 / ref. density +G = 3e10 / shear modulus +alp = 30.0e-6 / thermal expansivity +bet = 1e-11 / compressibility +Cp = 1050 / heat capacity +k = 2.0 / thermal conductivity +Qr = 1e-6 / radiogenic heat production +C = 5e7 / cohesion +phi = 30.00 / friction angle +eta_vp = 1e21 / viscoplastic viscosity +pwlv = 34 / power law viscosity -> database flow_laws.c +density_model = 5 + +ID = 2 / Mantle +rho = 3260.00 / ref. density +G = 3e10 / shear modulus +alp = 30.0e-6 / thermal expansivity +bet = 1e-11 / compressibility +Cp = 1050 / heat capacity +k = 3.0 / thermal conductivity +Qr = 1.0e-10 / radiogenic heat production +C = 5e7 / cohesion +phi = 30.00 / friction angle +eta_vp = 1e21 / viscoplastic viscosity +pwlv = 40 / power law viscosity -> database flow_laws.c +linv = 40 / linear creep viscosity -> database flow_laws.c +expv = 40 / exponential creep viscosity -> database flow_laws.c +density_model = 5 + +/**** PARTICLES ****/ +Nx_part = 4 +Nz_part = 4 +min_part_cell = 16 + +/**** LINEAR SOLVER ****/ +lin_abs_mom = 5.0e-8 +lin_abs_div = 5.0e-8 +lin_rel_mom = 5.0e-8 +lin_rel_div = 5.0e-8 +penalty = 1e3 + +/**** NON-LINEAR ITERATIONS ****/ +Newton = 1 +Newton2Picard = 1 +nit_max = 20 // for high resolution use from 10 to 20 +line_search = 0 +nonlin_abs_mom = 5.0e-8 +nonlin_abs_div = 5.0e-8 +min_eta = 1.0e18 +max_eta = 1.0e25 From 76e4a392d19ba312d25aa96feeb28c38898d5b59 Mon Sep 17 00:00:00 2001 From: tduretz Date: Tue, 11 Jun 2024 15:10:50 +0200 Subject: [PATCH 14/21] add Makefiles folder --- MDLIB/Makefiles/makefile_Physix | 23 +++++++++++++ MDLIB/Makefiles/makefile_Tib_M2 | 58 +++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 MDLIB/Makefiles/makefile_Physix create mode 100644 MDLIB/Makefiles/makefile_Tib_M2 diff --git a/MDLIB/Makefiles/makefile_Physix b/MDLIB/Makefiles/makefile_Physix new file mode 100644 index 00000000..4c9ebbd9 --- /dev/null +++ b/MDLIB/Makefiles/makefile_Physix @@ -0,0 +1,23 @@ +run-tests: + cd cmake-build && ctest --extra-verbose --output-on-failure + +run: + cd cmake-exec/$(SET) && ./$(SET) $(TXT) + +run-vis: + cd visualtests-out && ./visualtests + +build-dev: + cmake -B ./cmake-build -DOPT=$(OPT) -DOMP=$(OMP) -DVIS=$(VIS) -DSET=$(SET) -DTXT=$(TXT) -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ && cmake --build ./cmake-build + +build: + cmake -DOPT=ON -DOMP=ON -B ./cmake-build -DSET=$(SET) -DTXT=$(TXT) && cmake --build ./cmake-build + +clean: + rm -rf *build*/ && rm -rf *exec*/ + +deps: + rm -rf deps && git clone https://github.com/kulakovri/MDOODZ-dependencies deps && cd deps && make install-hdf5 && make install-suitesparse + +install-suitesparse: + rm -rf deps && git clone https://github.com/kulakovri/MDOODZ-dependencies deps && cd deps && make install-suitesparse \ No newline at end of file diff --git a/MDLIB/Makefiles/makefile_Tib_M2 b/MDLIB/Makefiles/makefile_Tib_M2 new file mode 100644 index 00000000..7e8d579e --- /dev/null +++ b/MDLIB/Makefiles/makefile_Tib_M2 @@ -0,0 +1,58 @@ +# MDOODZ 7.0 makefile +SHELL := /bin/bash + +# Compiler +CC = gcc-13 + +# Path to setup file folder +SET_PATH = ../SETS + +#---------------------------------------------------# +# C flags +CFLAGS = -std=c99 -D _UMFPACK_ -I ./include/ -I ./ + +ifeq ($(OPT),yes) + CFLAGS += -O3 -ftree-vectorize -funroll-loops -finline -fomit-frame-pointer -march=native +else + CFLAGS += -g -Wall -O0 -fno-inline -fno-omit-frame-pointer +endif + +ifeq ($(OMP),yes) + CFLAGS += -fopenmp -D _OMP_ +else + CFLAGS += -Wno-unknown-pragmas +endif + +ifeq ($(VG),yes) + CFLAGS += -D _VG_ -Wno-format-zero-length +endif + +ifeq ($(NEW_INPUT),yes) + CFLAGS += -D _NEW_INPUT_ +endif + +CFLAGS += -Wno-unused-variable -Wno-comment +#---------------------------------------------------# +# Libraries +LIBS = -lz -lhdf5 + +# Related to SuiteSparse +LIBS += -L /usr/lib/ -llapack -lcxsparse -lumfpack -lcblas -lamd -lcholmod -lcolamd -lbtf -lsuitesparseconfig -lblas + +# Link to openmp +ifeq ($(OMP),yes) + LIBS += -lgomp +endif + +#---------------------------------------------------# +# Rules +FILES = MeltingRoutines.o AnisotropyRoutines.o Main_DOODZ.o FD_Jacobian.o RheologyParticles.o ChemicalRoutines.o ParticleReseeding.o Solvers.o StokesRoutines.o StokesAssemblyDecoupled.o AdvectionRoutines.o RheologyDensity.o HDF5Output.o SparseTools.o ThermalRoutines.o ThermalSolver.o ParticleRoutines.o FreeSurface.o FlowLaws.o MemoryAllocFree.o InputOutput.o MiscFunctions.o GridRoutines.o Setup.o $(SET_PATH)/$(SET).o + + +all: Doodzi_$(SET) +Doodzi_$(SET): ${FILES} + $(CC) ${FILES} -o $(SET) ${LIBS} + +clean: + cp $(SET_PATH)/$(SET).txt . + rm -rf *o ./$(SET_PATH)/*.o $(SET) From b084854c890fa8a739c77935191c00be2e25c3d7 Mon Sep 17 00:00:00 2001 From: tduretz Date: Tue, 11 Jun 2024 17:29:17 +0200 Subject: [PATCH 15/21] comment dt thermal --- MDLIB/AdvectionRoutines.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/MDLIB/AdvectionRoutines.c b/MDLIB/AdvectionRoutines.c index d505709e..e2188448 100755 --- a/MDLIB/AdvectionRoutines.c +++ b/MDLIB/AdvectionRoutines.c @@ -668,10 +668,10 @@ void EvaluateCourantCriterion( double* Vx, double* Vz, params *model, scale scal model->dt = model->dt_min; } - if ( model->dt>dt_therm ) { - printf("Setting dt to dt_therm\n"); - model->dt = dt_therm; - } + // if ( model->dt>dt_therm ) { + // printf("Setting dt to dt_therm\n"); + // model->dt = dt_therm; + // } if (quiet==0) printf("Current dt = %2.2e s / Courant dt = %2.2e s, dt_therm = %2.2e\n", model->dt * scaling.t, dtc * scaling.t, dt_therm * scaling.t ); } From ede5039c6395994712863f78e575dc9cbbf11632 Mon Sep 17 00:00:00 2001 From: tduretz Date: Wed, 12 Jun 2024 11:58:52 +0200 Subject: [PATCH 16/21] define M_PI and makefile for Lara --- MDLIB/Makefiles/makefile_Lara_WSL | 58 +++++++++++++++++++++++++++++++ MDLIB/include/mdoodz.h | 5 ++- 2 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 MDLIB/Makefiles/makefile_Lara_WSL diff --git a/MDLIB/Makefiles/makefile_Lara_WSL b/MDLIB/Makefiles/makefile_Lara_WSL new file mode 100644 index 00000000..ec1fd194 --- /dev/null +++ b/MDLIB/Makefiles/makefile_Lara_WSL @@ -0,0 +1,58 @@ +# MDOODZ 7.0 makefile +SHELL := /bin/bash + +# Compiler +CC = gcc + +# Path to setup file folder +SET_PATH = ../SETS + +#---------------------------------------------------# +# C flags +CFLAGS = -std=c99 -D _UMFPACK_ -I ./include/ -I ./ + +ifeq ($(OPT),yes) +CFLAGS += -O3 -ftree-vectorize -funroll-loops -finline -fomit-frame-pointer -march=native +else +CFLAGS += -g -Wall -O0 -fno-inline -fno-omit-frame-pointer +endif + +ifeq ($(OMP),yes) +CFLAGS += -fopenmp -D _OMP_ +else +CFLAGS += -Wno-unknown-pragmas +endif + +ifeq ($(VG),yes) +CFLAGS += -D _VG_ -Wno-format-zero-length +endif + +ifeq ($(NEW_INPUT),yes) +CFLAGS += -D _NEW_INPUT_ +endif + +CFLAGS += -Wno-unused-variable -Wno-comment +#---------------------------------------------------# +# Libraries +LIBS = -lm -lz -lhdf5_serial + +# Related to SuiteSparse +LIBS += -L /usr/lib/ -llapack -lcxsparse -lumfpack -lamd -lcholmod -lcolamd -lbtf -lsuitesparseconfig -lblas + +# Link to openmp +ifeq ($(OMP),yes) + LIBS += -lgomp +endif + +#---------------------------------------------------# +# Rules +FILES = MeltingRoutines.o AnisotropyRoutines.o Main_DOODZ.o FD_Jacobian.o RheologyParticles.o ChemicalRoutines.o ParticleReseeding.o Solvers.o StokesRoutines.o StokesAssemblyDecoupled.o AdvectionRoutines.o RheologyDensity.o HDF5Output.o SparseTools.o ThermalRoutines.o ThermalSolver.o ParticleRoutines.o FreeSurface.o FlowLaws.o MemoryAllocFree.o InputOutput.o MiscFunctions.o GridRoutines.o Setup.o $(SET_PATH)/$(SET).o + + +all: Doodzi_$(SET) +Doodzi_$(SET): ${FILES} +$(CC) ${FILES} -o $(SET) ${LIBS} + +clean: +cp $(SET_PATH)/$(SET).txt . +rm -rf *o ./$(SET_PATH)/*.o $(SET) \ No newline at end of file diff --git a/MDLIB/include/mdoodz.h b/MDLIB/include/mdoodz.h index 149aa046..fd12801e 100644 --- a/MDLIB/include/mdoodz.h +++ b/MDLIB/include/mdoodz.h @@ -3,9 +3,12 @@ #define zeroC 273.15 #define Rg 8.314510 -#define PI 3.14159265359 +#define PI 3.14159265358979323846 #define Rad_Earth 6370000 #include "stdbool.h" +#ifndef M_PI + #define M_PI 3.14159265358979323846 +#endif #define RESET "\033[0m" #define BLACK "\033[30m" /* Black */ From be2f9fd18998b405877b2b823e1dcabab90fb734 Mon Sep 17 00:00:00 2001 From: tduretz Date: Wed, 12 Jun 2024 12:20:24 +0200 Subject: [PATCH 17/21] fix indent makefile_Lara_WSL --- MDLIB/Makefiles/makefile_Lara_WSL | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/MDLIB/Makefiles/makefile_Lara_WSL b/MDLIB/Makefiles/makefile_Lara_WSL index ec1fd194..ff503cb1 100644 --- a/MDLIB/Makefiles/makefile_Lara_WSL +++ b/MDLIB/Makefiles/makefile_Lara_WSL @@ -51,8 +51,8 @@ FILES = MeltingRoutines.o AnisotropyRoutines.o Main_DOODZ.o FD_Jacobian.o Rheol all: Doodzi_$(SET) Doodzi_$(SET): ${FILES} -$(CC) ${FILES} -o $(SET) ${LIBS} + $(CC) ${FILES} -o $(SET) ${LIBS} clean: -cp $(SET_PATH)/$(SET).txt . -rm -rf *o ./$(SET_PATH)/*.o $(SET) \ No newline at end of file + cp $(SET_PATH)/$(SET).txt . + rm -rf *o ./$(SET_PATH)/*.o $(SET) \ No newline at end of file From ffe1e29ccb968b5ff20122909c70471b9d55ccdd Mon Sep 17 00:00:00 2001 From: tduretz Date: Wed, 12 Jun 2024 12:22:01 +0200 Subject: [PATCH 18/21] edit makefile --- MDLIB/Makefiles/makefile_Lara_WSL | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MDLIB/Makefiles/makefile_Lara_WSL b/MDLIB/Makefiles/makefile_Lara_WSL index ff503cb1..23424304 100644 --- a/MDLIB/Makefiles/makefile_Lara_WSL +++ b/MDLIB/Makefiles/makefile_Lara_WSL @@ -55,4 +55,4 @@ Doodzi_$(SET): ${FILES} clean: cp $(SET_PATH)/$(SET).txt . - rm -rf *o ./$(SET_PATH)/*.o $(SET) \ No newline at end of file + rm -rf *o ./$(SET_PATH)/*.o $(SET) From 0a8c0d88308fc96dd768c06aba6498b68a8272c0 Mon Sep 17 00:00:00 2001 From: tduretz Date: Wed, 12 Jun 2024 12:23:41 +0200 Subject: [PATCH 19/21] indent makefile_Lara_WSL --- MDLIB/Makefiles/makefile_Lara_WSL | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/MDLIB/Makefiles/makefile_Lara_WSL b/MDLIB/Makefiles/makefile_Lara_WSL index 23424304..b43eb4ed 100644 --- a/MDLIB/Makefiles/makefile_Lara_WSL +++ b/MDLIB/Makefiles/makefile_Lara_WSL @@ -12,23 +12,23 @@ SET_PATH = ../SETS CFLAGS = -std=c99 -D _UMFPACK_ -I ./include/ -I ./ ifeq ($(OPT),yes) -CFLAGS += -O3 -ftree-vectorize -funroll-loops -finline -fomit-frame-pointer -march=native + CFLAGS += -O3 -ftree-vectorize -funroll-loops -finline -fomit-frame-pointer -march=native else -CFLAGS += -g -Wall -O0 -fno-inline -fno-omit-frame-pointer + CFLAGS += -g -Wall -O0 -fno-inline -fno-omit-frame-pointer endif ifeq ($(OMP),yes) -CFLAGS += -fopenmp -D _OMP_ + CFLAGS += -fopenmp -D _OMP_ else -CFLAGS += -Wno-unknown-pragmas + CFLAGS += -Wno-unknown-pragmas endif ifeq ($(VG),yes) -CFLAGS += -D _VG_ -Wno-format-zero-length + CFLAGS += -D _VG_ -Wno-format-zero-length endif ifeq ($(NEW_INPUT),yes) -CFLAGS += -D _NEW_INPUT_ + CFLAGS += -D _NEW_INPUT_ endif CFLAGS += -Wno-unused-variable -Wno-comment From d05944e89aff65c07e4019dbe04196c11b977974 Mon Sep 17 00:00:00 2001 From: tduretz Date: Wed, 12 Jun 2024 12:29:58 +0200 Subject: [PATCH 20/21] fix makefile_Lara_WSL --- MDLIB/Makefiles/makefile_Lara_WSL | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/MDLIB/Makefiles/makefile_Lara_WSL b/MDLIB/Makefiles/makefile_Lara_WSL index b43eb4ed..298e75e6 100644 --- a/MDLIB/Makefiles/makefile_Lara_WSL +++ b/MDLIB/Makefiles/makefile_Lara_WSL @@ -11,30 +11,30 @@ SET_PATH = ../SETS # C flags CFLAGS = -std=c99 -D _UMFPACK_ -I ./include/ -I ./ -ifeq ($(OPT),yes) - CFLAGS += -O3 -ftree-vectorize -funroll-loops -finline -fomit-frame-pointer -march=native +ifeq ($(OPT),yes) + CFLAGS += -O3 -ftree-vectorize -funroll-loops -finline -fomit-frame-pointer -march=native else - CFLAGS += -g -Wall -O0 -fno-inline -fno-omit-frame-pointer + CFLAGS += -g -Wall -O0 -fno-inline -fno-omit-frame-pointer endif ifeq ($(OMP),yes) - CFLAGS += -fopenmp -D _OMP_ + CFLAGS += -fopenmp -D _OMP_ else - CFLAGS += -Wno-unknown-pragmas + CFLAGS += -Wno-unknown-pragmas endif ifeq ($(VG),yes) - CFLAGS += -D _VG_ -Wno-format-zero-length + CFLAGS += -D _VG_ -Wno-format-zero-length endif ifeq ($(NEW_INPUT),yes) - CFLAGS += -D _NEW_INPUT_ + CFLAGS += -D _NEW_INPUT_ endif CFLAGS += -Wno-unused-variable -Wno-comment #---------------------------------------------------# # Libraries -LIBS = -lm -lz -lhdf5_serial +LIBS = -lz -lm -lhdf5_serial # Related to SuiteSparse LIBS += -L /usr/lib/ -llapack -lcxsparse -lumfpack -lamd -lcholmod -lcolamd -lbtf -lsuitesparseconfig -lblas @@ -51,8 +51,8 @@ FILES = MeltingRoutines.o AnisotropyRoutines.o Main_DOODZ.o FD_Jacobian.o Rheol all: Doodzi_$(SET) Doodzi_$(SET): ${FILES} - $(CC) ${FILES} -o $(SET) ${LIBS} + $(CC) ${FILES} -o $(SET) ${LIBS} clean: - cp $(SET_PATH)/$(SET).txt . - rm -rf *o ./$(SET_PATH)/*.o $(SET) + cp $(SET_PATH)/$(SET).txt . + rm -rf *o ./$(SET_PATH)/*.o $(SET) From 3a21e0e8f42b0a7b603e9606b663cf0742ea679d Mon Sep 17 00:00:00 2001 From: tduretz Date: Thu, 13 Jun 2024 16:31:37 +0200 Subject: [PATCH 21/21] replace resolution by size in julia viz --- .../Main_Visualisation_FaultSmearing_MD7.jl | 6 ++++-- JuliaVisualisation/Main_Visualisation_Makie_MD7.jl | 11 ++++++----- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/JuliaVisualisation/Main_Visualisation_FaultSmearing_MD7.jl b/JuliaVisualisation/Main_Visualisation_FaultSmearing_MD7.jl index 24703553..6f4f26bc 100644 --- a/JuliaVisualisation/Main_Visualisation_FaultSmearing_MD7.jl +++ b/JuliaVisualisation/Main_Visualisation_FaultSmearing_MD7.jl @@ -78,11 +78,13 @@ function main() "/Users/tduretz/REPO/MDOODZ7.0/MDLIB/_p10_e18_t3/", "/Users/tduretz/REPO/MDOODZ7.0/MDLIB/_p10_e18_t3_nonconv/", "/Users/tduretz/REPO/MDOODZ7.0/MDLIB/_p10_e18_t2_nonconv/", + "/Users/tduretz/REPO/MDOODZ7.0/MDLIB/_p10_e18_t1_nonconv/", ) names = ( "T3: Fully converged", "T3: 1 iteration", "T2: 1 iteration", + "T1: 1 iteration", ) n_files = length(path) @@ -149,7 +151,7 @@ function main() cm_yr = 100.0*3600.0*24.0*365.25 # Time loop - f = Figure(resolution = (Lx/Lz*resol*1.2, resol), fontsize=25) + f = Figure(size = (Lx/Lz*resol*1.2, resol), fontsize=25) for istep=file_start:file_step:file_end @@ -161,7 +163,7 @@ function main() ##################################### empty!(f) - f = Figure(resolution = (Lx/Lz*resol*1.2, resol), fontsize=25) + f = Figure(size = (Lx/Lz*resol*1.2, resol), fontsize=25) if field==:EffectiveFrictionTime for i_file=1:n_files diff --git a/JuliaVisualisation/Main_Visualisation_Makie_MD7.jl b/JuliaVisualisation/Main_Visualisation_Makie_MD7.jl index f1f02488..0d47fe47 100644 --- a/JuliaVisualisation/Main_Visualisation_Makie_MD7.jl +++ b/JuliaVisualisation/Main_Visualisation_Makie_MD7.jl @@ -45,6 +45,7 @@ function main() path ="/Users/tduretz/REPO/MDOODZ7.0/MDLIB/TEST_ROMAN_ANI3_00_MR/" path ="/Users/tduretz/REPO/MDOODZ7.0/MDLIB/_p10_e18_t3/" path ="/Users/tduretz/REPO/MDOODZ7.0/MDLIB/_p10_e18_t1_nonconv/" + path ="/Users/tduretz/REPO/MDOODZ7.0/MDLIB/" # path ="/Users/tduretz/Downloads/" # path ="/Users/tduretz/REPO/MDOODZ7.0/MDLIB/DoubleSubduction_OMP16/" @@ -57,9 +58,9 @@ function main() # path ="/Users/tduretz/REPO/MDOODZ7.0/RUNS/1_NR09/" # File numbers - file_start = 000 + file_start = 130 file_step = 100 - file_end = 2000 + file_end = 130 # Select field to visualise field = :Phases @@ -89,7 +90,7 @@ function main() framerate = 3 PlotOnTop = ( ph_contours = false, # add phase contours - T_contours = false, # add temperature contours + T_contours = true, # add temperature contours fabric = false, # add fabric quiver (normal to director) topo = false, σ1_axis = false, @@ -116,7 +117,7 @@ function main() cm_yr = 100.0*3600.0*24.0*365.25 # Time loop - f = Figure(resolution = (Lx/Lz*resol*1.2, resol), fontsize=25) + f = Figure(size = (Lx/Lz*resol*1.2, resol), fontsize=25) for istep=file_start:file_step:file_end @@ -233,7 +234,7 @@ function main() ##################################### empty!(f) - f = Figure(resolution = (Lx/Lz*resol*1.2, resol), fontsize=25) + f = Figure(size = (Lx/Lz*resol*1.2, resol), fontsize=25) if field==:Phases ax1 = Axis(f[1, 1], title = L"Phases at $t$ = %$(tMy) Ma", xlabel = L"$x$ [m]", ylabel = L"$y$ [m]")