[cig-commits] r13650 - in long/3D/Gale/trunk: . src/Underworld/Rheology/src
walter at geodynamics.org
walter at geodynamics.org
Thu Dec 11 03:21:21 PST 2008
Author: walter
Date: 2008-12-11 03:21:21 -0800 (Thu, 11 Dec 2008)
New Revision: 13650
Modified:
long/3D/Gale/trunk/
long/3D/Gale/trunk/src/Underworld/Rheology/src/MohrCoulomb.c
Log:
r2414 at dante: boo | 2008-12-11 03:15:53 -0800
Add in a hard coded hack for hydrostatic pressure in MohrCoulomb for tibet
Property changes on: long/3D/Gale/trunk
___________________________________________________________________
Name: svk:merge
- 3a629746-de10-0410-b17b-fd6ecaaa963e:/cig:2413
+ 3a629746-de10-0410-b17b-fd6ecaaa963e:/cig:2414
Modified: long/3D/Gale/trunk/src/Underworld/Rheology/src/MohrCoulomb.c
===================================================================
--- long/3D/Gale/trunk/src/Underworld/Rheology/src/MohrCoulomb.c 2008-12-11 11:21:16 UTC (rev 13649)
+++ long/3D/Gale/trunk/src/Underworld/Rheology/src/MohrCoulomb.c 2008-12-11 11:21:21 UTC (rev 13650)
@@ -282,6 +282,52 @@
return fabs(sigma_ns);
}
+double Pressure_Analytic(double density, double gravity, double h,
+ double alpha, double T_0, double A,
+ double B, double C)
+{
+ return density*gravity*h*(1-alpha*(T_0 + A*h/2 + B*(1+exp(-C*h)/(C*h))));
+}
+
+double PressureFunction(Coord coord)
+{
+ double T_0=273;
+ double A=0.0096667;
+ double B=93.333;
+ double C=1.0e-4;
+ double y_max=100000;
+ double material_boundary=68000;
+ double gravity=9.81;
+
+ double h=y_max-coord[1];
+ double upper_alpha=3.0e-5;
+ double lower_alpha=3.0e-5;
+ double upper_density=2800;
+ double lower_density=3300;
+ double T, p;
+
+ if(coord[1]>y_max)
+ {
+ p=0;
+ }
+ else if(coord[1]>material_boundary)
+ {
+ p=Pressure_Analytic(upper_density, gravity, h,
+ upper_alpha, T_0, A, B, C);
+ }
+ else
+ {
+ p=Pressure_Analytic(upper_density, gravity, y_max-material_boundary,
+ upper_alpha, T_0, A, B, C)
+ - Pressure_Analytic(lower_density, gravity,y_max-material_boundary,
+ lower_alpha, T_0, A, B, C)
+ + Pressure_Analytic(lower_density, gravity,h,
+ lower_alpha, T_0, A, B, C);
+ }
+ return p;
+}
+
+
double _MohrCoulomb_GetYieldCriterion(
void* rheology,
ConstitutiveMatrix* constitutiveMatrix,
@@ -300,9 +346,16 @@
double pressure;
double theta;
double factor;
+ Cell_Index cell_I;
+ Coord coord;
FeVariable_InterpolateWithinElement( pressureField, lElement_I, xi, &pressure );
+ cell_I=CellLayout_MapElementIdToCellId(materialPointsSwarm->cellLayout,
+ lElement_I );
+ FeMesh_CoordLocalToGlobal(pressureField->feMesh, cell_I, xi, coord);
+ pressure+=PressureFunction(coord);
+
/* Calculate frictional strength. We modify the friction and
cohesion because we have grouped terms from the normal
stresses and moved it to the yield indicator. */
More information about the CIG-COMMITS
mailing list