[CIG-LONG] Convergence issues with long-term extension models

John Naliboff jbnaliboff at ucdavis.edu
Tue Mar 16 09:51:29 PDT 2010


Hi Walter,

Thanks for the fix/tip and I also found that the model did behave somewhat better with the applied vertical basal velocity (apologies for missing that in the tibet example).  

I still did not convergence past 2 Myr, so I'll play around with the basal vertical velocity (or basal stress boundary condition) and a surface weak/compressible layer to see what combination leads to the best long-term convergence.

Thanks again for the input.

Cheers,
John

On Mar 15, 2010, at 4:23 PM, Walter Landry wrote:

> Hi John,
> 
> Sorry it took a while to get back to you.
> 
> John Naliboff <jbnaliboff at ucdavis.edu> wrote:
>> Hello all,
>> 
>> I'm hoping to get some input on convergence problems I'm having with
>> 2D long-term extension models.
>> 
>> The models are designed following Wijns et al. 2005 (EPSL), who
>> modeled extension of a brittle upper crust overlying a viscous lower
>> crust using Underworld.  The initial geometry is 160 km (width) x 60
>> km (depth) and the upper crust follows a yielding law similar to the
>> DruckerPrager yield criterion.  The boundary conditions are
>> free-slip on all sides, although a weak, low-density layer is
>> present above the upper crust (i.e. top of lithosphere should behave
>> in a similar fashion to a true free-surface).  Extension is driven
>> by a fixed velocity of 3 cm/yr applied to the right side of the 2D
>> box. The models in the paper are run up to roughly 80% extension (~
>> 4 Myr).
> 
> I think it may be because the hydrostatic term you are using assumes
> that the density profile stays more or less constant through time.  In
> your case, the whole region gets thinner as the material extends, so
> the StressBC is trying to pull up the material.  But the StressBC can
> not, because the bottom boundary does not move vertically.  This can,
> unfortunately, cause a numerical instability.
> 
> Since you have a prescribed horizontal velocity, the easiest way to
> solve this is to have the bottom move up as the material thins.  Then
> the StressBC will not be trying to pull as much on an immovable
> object.  Getting it to compensate exactly is not needed.  An
> approximate solution will work.
> 
> This is implemented in input/examples/tibet.xml.  I have implemented
> it in your input file (see attached, it is a one line change), and it
> seems to work better.
> 
> Cheers,
> Walter Landry
> walter at geodynamics.org
> <?xml version="1.0"?> <!-- Declaring version of xml to use -->
> 
> <!-- wijns05epsl_fig2_res0.5_ppc60_dtf1_030210.xml -->
> 
> <!-- Name index -->
> <!-- wijns05epsl = Wijns et al. 2005 EPSL paper -->
> <!-- fig2 = input file tries to reproduce figure 2 from Wijns et al. 2005 -->
> <!-- res0.5  => 0.5 resolution in x and y directions --> 
> <!-- ppc60 = 60 particles per cell --> 
> <!-- dtf1 = time step scaled by 1 (unscaled) -->
> <!-- 030210 = Mar 02, 2010 -->
> 
> <!-- Basic model setup -->
> <!-- - Geometry: 160 km wide, 60 km deep, unspecified resolution -->
> <!-- - Velocity Boundary Conditions: free-slip (left + bottom), free-surface -->
> <!-- - on top, velocity of 3.1 cm/yr on right side -->
> <!-- - Density structure: upper crust 2700 kg/m3 (20 km thick), lower crust -->
> <!--   3300 kg/m3 (40 km thick) -->
> <!-- - Rheology structure: plastic yield law with strain weakening in upper -->
> <!--   crust, fixed viscosity in lower crust -->
> <!-- - Gravity: 10 m/s2 -->
> 
> <!-- In the input file units are in SI, but but seconds have been scaled by -->
> <!-- 1e25 and kg have been scaled by 1e50 (after scaling a viscosity of -->
> <!-- 1e25 becomes 1) => velocities get large, viscosities get small. -->
> 
> <!-- Regarding plastic yielding rheology: -->
> <!-- 1) In this model I am using a Ducker-Prager yielding rheology that is -->
> <!--    not identical to the yielding rheology used in the Wijns paper.  I  -->
> <!--    will need to eventually add in a new rheology to Gale that duplicates-->
> <!--    their yielding law -->
> <!-- 2) In this input file the cohesion and coefficient of friction decrease -->
> <!--    by 0.8 after yielding(corresponds roughly to a = 0.8 for fig 2) -->
> <!-- 3) The integrated strength ratio in figure 2 of Wijns is 0.53.  This -->
> <!--    translates to a lower crustal viscosity of 1.4384e+22 which scales -->
> <!--    0.0014384. -->
> <!-- 4) Note that the upper crustal viscosity is rather arbitrary (10^24) -->
> <!--    and just really needs to be an order of magnitude or more higher -->
> <!--    than the lower crustal viscosity -->
> 
> <!-- ###################################################################### -->
> 
> <!-- Declaring that input file is placed within StGermain data structure-->
> <StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
> 
>  <!-- Components Section -->
>  <struct name="components">
> 
> 	<!-- Defining standard condition functions (functions used to specify -->
> 	<!-- initial and boundary conditions -->
>    <struct name="conditionFunctions">
>      <param name="Type">StgFEM_StandardConditionFunctions</param>
>    </struct>
> 	
> 	<!-- Begin basic components (rarely need to modify these) -->
>    <struct name="mesh-linear">
>      <param name="Type">FeMesh</param>
>      <param name="elementType">linear</param>
>    </struct>
> 	<!-- -->
>    <struct name="linearMesh-generator">
>      <param name="Type">CartesianGenerator</param>
>      <param name="mesh">mesh-linear</param>
>      <param name="dim">dim</param>
>      <param name="shadowDepth">shadowDepth</param>
>      <list name="size">
>        <param>elementResI</param>
>        <param>elementResJ</param>
>        <param>elementResK</param>
>      </list>
>      <list name="minCoord">
>        <param>minX</param>
>        <param>minY</param>
>        <param>minZ</param>
>      </list>
>      <list name="maxCoord">
>        <param>maxX</param>
>        <param>maxY</param>
>        <param>maxZ</param>
>      </list>
>    </struct>
> 	<!-- -->
>    <struct name="velocity">
>      <param name="Type">MeshVariable</param>
>      <param name="mesh">mesh-linear</param>
>      <param name="Rank">Vector</param>
>      <param name="DataType">Double</param>
>      <param name="VectorComponentCount">dim</param>
>      <list name="names">
>        <param>vx</param>
>        <param>vy</param>
>        <param>vz</param>
>      </list>
>    </struct>
> 	<!-- -->
>    <struct name="velocityBCs">
>      <param name="Type">CompositeVC</param>
>      <param name="Data">mesh-linear</param>
>    </struct>
> 	<!-- -->
>    <struct name="velocityICs">
>      <param name="Type">CompositeVC</param>
>      <param name="Data">mesh-linear</param>
>    </struct>
> 	<!-- -->
>    <struct name="velocityDofLayout">
>      <param name="Type">DofLayout</param>
>      <param name="mesh">mesh-linear</param>
>      <param name="BaseVariableCount">dim</param>
>      <list name="BaseVariables">
>        <param>vx</param>
>        <param>vy</param>
>        <param>vz</param>
>      </list>
>    </struct>
> 	<!-- -->
>    <struct name="VelocityField">
>      <param name="Type">FeVariable</param>
>      <param name="FEMesh">mesh-linear</param>
>      <param name="DofLayout">velocityDofLayout</param>
>      <param name="BC">velocityBCs</param>
>      <param name="IC">velocityICs</param>
>      <param name="LinkedDofInfo">velocityLinkedDofs</param>
>    </struct>
> 	<!-- -->
>    <struct name="VelocityMagnitudeField">
>      <param name="Type">OperatorFeVariable</param>
>      <param name="Operator">Magnitude</param>
>      <param name="FeVariable">VelocityField</param>
>    </struct>
> 	<!-- -->
>    <struct name="VelocityGradientsField">
>      <param name="Type">OperatorFeVariable</param>
>      <param name="Operator">Gradient</param>
>      <param name="FeVariable">VelocityField</param>
>    </struct>
> 	<!-- -->
>    <struct name="VelocityGradientsInvariantField">
>      <param name="Type">OperatorFeVariable</param>
>      <param name="Operator">TensorInvariant</param>
>      <param name="FeVariable">VelocityGradientsField</param>
>    </struct>
> 	<!-- -->
>    <struct name="StrainRateField">
>      <param name="Type">OperatorFeVariable</param>
>      <param name="Operator">TensorSymmetricPart</param>
>      <param name="FeVariable">VelocityGradientsField</param>
>    </struct>
> 	<!-- -->
>    <struct name="VorticityField">
>      <param name="Type">OperatorFeVariable</param>
>      <param name="Operator">TensorAntisymmetricPart</param>
>      <param name="FeVariable">VelocityGradientsField</param>
>    </struct>
> 	<!-- -->
>    <struct name="StrainRateInvariantField">
>      <param name="Type">OperatorFeVariable</param>
>      <param name="Operator">SymmetricTensor_Invariant</param>
>      <param name="FeVariable">StrainRateField</param>
>    </struct>
> 	<!-- -->
>    <struct name="pressure">
>      <param name="Type">MeshVariable</param>
>      <param name="mesh">mesh-linear</param>
>      <param name="Rank">Scalar</param>
>      <param name="DataType">Double</param>
>    </struct>
> 	<!-- -->
>    <struct name="pressureDofLayout">
>      <param name="Type">DofLayout</param>
>      <param name="mesh">mesh-linear</param>
>      <list name="BaseVariables">
>        <param>pressure</param>
>      </list>
>    </struct>
> 	<!-- -->
>    <struct name="PressureField">
>      <param name="Type">FeVariable</param>
>      <param name="FEMesh">mesh-linear</param>
>      <param name="DofLayout">pressureDofLayout</param>
>      <param name="LinkedDofInfo">pressureLinkedDofs</param>
>    </struct>
> 	<!-- -->
>    <struct name="StressField">
>      <param name="Type">StressField</param>
>      <param name="StrainRateField">StrainRateField</param>
>      <param name="Context">context</param>
>      <param name="ConstitutiveMatrix">constitutiveMatrix</param>
>      <param name="Swarm">picIntegrationPoints</param>
>      <param name="Mesh">mesh-linear</param>
>      <param name="IC">stressICs</param>
>    </struct>
> 	<!-- --> 
>    <struct name="ViscosityField">
>      <param name="Type">ViscosityField</param>
>      <param name="Context">context</param>
>      <param name="Swarm">picIntegrationPoints</param>
>      <param name="Mesh">mesh-linear</param>
>      <param name="ConstitutiveMatrix">constitutiveMatrix</param>
>    </struct>
> 	<!-- -->
>    <struct name="cellLayout">
>      <param name="Type">SingleCellLayout</param>
>    </struct>
> 	<!-- -->
>    <struct name="particleLayout">
>      <param name="Type">GaussParticleLayout</param>
>    </struct>
> 	<!-- -->
>    <struct name="gaussSwarm">
>      <param name="Type">IntegrationPointsSwarm</param>
>      <param name="CellLayout">cellLayout</param>
>      <param name="ParticleLayout">particleLayout</param>
>      <param name="FeMesh">mesh-linear</param>
>      <param name="TimeIntegrator">timeIntegrator</param>
>      <param name="IntegrationPointMapper">gaussMapper</param>
>    </struct>
> 	<!-- -->
>    <struct name="gaussMapper">
>      <param name="Type">GaussMapper</param>
>      <param name="IntegrationPointsSwarm">gaussSwarm</param>
>      <param name="MaterialPointsSwarm">gaussMaterialSwarm</param>
>    </struct>
> 	<!-- -->
>    <struct name="backgroundLayout">
>      <param name="Type">BackgroundParticleLayout</param>
>    </struct>
> 	<!-- -->
>    <struct name="gaussMaterialSwarm">
>      <param name="Type">MaterialPointsSwarm</param>
>      <param name="CellLayout">cellLayout</param>
>      <param name="ParticleLayout">backgroundLayout</param>
>      <param name="FeMesh">mesh-linear</param>
>    </struct>
> 	<!-- -->
>    <struct name="timeIntegrator">
>      <param name="Type">TimeIntegrator</param>
>      <param name="order">1</param>
>      <param name="simultaneous">t</param>
>      <param name="Context">context</param>
>    </struct>
> 	<!-- -->
>    <struct name="elementCellLayout">
>      <param name="Type">ElementCellLayout</param>
>      <param name="Mesh">mesh-linear</param>
>    </struct>
> 	<!-- -->
>    <struct name="weights">
>      <param name="Type">PCDVC</param>
>      <param name="resolutionX">10</param>
>      <param name="resolutionY">10</param>
>      <param name="resolutionZ">10</param>
>      <param name="lowerT">0.6</param>
>      <param name="upperT">25</param>
>      <param name="maxDeletions">3</param>
>      <param name="maxSplits">3</param>
>      <param name="MaterialPointsSwarm">materialSwarm</param>
>    </struct>
> 	<!-- -->
>    <struct name="localLayout">
>      <param name="Type">MappedParticleLayout</param>
>    </struct>
> 	<!-- -->
>    <struct name="picIntegrationPoints">
>      <param name="Type">IntegrationPointsSwarm</param>
>      <param name="CellLayout">elementCellLayout</param>
>      <param name="ParticleLayout">localLayout</param>
>      <param name="FeMesh">mesh-linear</param>
>      <param name="WeightsCalculator">weights</param>
>      <param name="TimeIntegrator">timeIntegrator</param>
>      <param name="IntegrationPointMapper">mapper</param>
>    </struct>
> 	<!-- -->
>    <struct name="mapper">
>      <param name="Type">CoincidentMapper</param>
>      <param name="IntegrationPointsSwarm">picIntegrationPoints</param>
>      <param name="MaterialPointsSwarm">materialSwarm</param>
>    </struct>
> 	<!-- -->
>    <struct name="materialSwarmParticleLayout">
>      <param name="Type">MeshParticleLayout</param>
>      <param name="mesh">mesh-linear</param>
>      <param name="cellParticleCount">particlesPerCell</param>
>    </struct>
> 	<!-- -->
>    <struct name="materialSwarm">
>      <param name="Type">MaterialPointsSwarm</param>
>      <param name="CellLayout">elementCellLayout</param>
>      <param name="ParticleLayout">materialSwarmParticleLayout</param>
>      <param name="FeMesh">mesh-linear</param>
>      <param name="SplittingRoutine">splittingRoutine</param>
>      <param name="RemovalRoutine">removalRoutine</param>
>      <param name="EscapedRoutine">escapedRoutine</param>
>    </struct>
> 	<!-- -->
>    <struct name="materialSwarmAdvector">
>      <param name="Type">SwarmAdvector</param>
>      <param name="Swarm">materialSwarm</param>
>      <param name="TimeIntegrator">timeIntegrator</param>
>      <param name="VelocityField">VelocityField</param>
>      <param name="PeriodicBCsManager">periodicBCsManager</param>
>      <param name="allowFallbackToFirstOrder">True</param>
>    </struct>
> 	<!-- Particle splitting routine needs to be modified if user specifies -->
> 	<!-- specific areas where new particles will be created (properties of  -->
> 	<!-- new particles don't depend on neighboring particles-->
>    <struct name="splittingRoutine">
>      <param name="Type">ReseedSplitting</param>
>      <param name="idealParticleCount">particlesPerCell</param>
>    </struct>
> 	<!-- -->
>    <struct name="solutionVelocity">
>      <param name="Type">SolutionVector</param>
>      <param name="FeVariable">VelocityField</param>
>    </struct>
> 	<!-- -->
>    <struct name="solutionPressure">
>      <param name="Type">SolutionVector</param>
>      <param name="FeVariable">PressureField</param>
>    </struct>
> 	<!-- -->
>    <struct name="mom_force">
>      <param name="Type">ForceVector</param>
>      <param name="FeVariable">VelocityField</param>
>      <param name="ExtraInfo">context</param>
>    </struct>
> 	<!-- -->
>    <struct name="cont_force">
>      <param name="Type">ForceVector</param>
>      <param name="FeVariable">PressureField</param>
>      <param name="ExtraInfo">context</param>
>    </struct>
> 	<!-- -->
>    <struct name="k_matrix">
>      <param name="Type">StiffnessMatrix</param>
>      <param name="RowVariable">VelocityField</param>
>      <param name="ColumnVariable">VelocityField</param>
>      <param name="RHS">mom_force</param>
>      <param name="allowZeroElementContributions">False</param>
>    </struct>
> 	<!-- -->
>    <struct name="constitutiveMatrix">
>      <param name="Type">ConstitutiveMatrixCartesian</param>
>      <param name="Swarm">picIntegrationPoints</param>
>      <param name="StiffnessMatrix">k_matrix</param>
>    </struct>
> 	<!-- -->
>    <struct name="g_matrix">
>      <param name="Type">StiffnessMatrix</param>
>      <param name="RowVariable">VelocityField</param>
>      <param name="ColumnVariable">PressureField</param>
>      <param name="RHS">cont_force</param>
>      <param name="allowZeroElementContributions">False</param>
>    </struct>
> 	<!-- -->
>    <struct name="gradientStiffnessMatrixTerm">
>      <param name="Type">GradientStiffnessMatrixTerm</param>
>      <param name="Swarm">gaussSwarm</param>
>      <param name="StiffnessMatrix">g_matrix</param>
>    </struct>
> 	<!-- -->
>    <struct name="preconditioner">
>      <param name="Type">StiffnessMatrix</param>
>      <param name="RowVariable">PressureField</param>
>      <param name="ColumnVariable">PressureField</param>
>      <param name="RHS">cont_force</param>
>      <param name="allowZeroElementContributions">True</param>
>    </struct>
> 	<!-- -->
>    <struct name="preconditionerTerm">
>      <param name="Type">UzawaPreconditionerTerm</param>
>      <param name="Swarm">picIntegrationPoints</param>
>      <param name="StiffnessMatrix">preconditioner</param>
>    </struct>
> 	<!-- -->
>    <struct name="uzawa">
>      <param name="Type">Stokes_SLE_UzawaSolver</param>
>      <param name="Preconditioner">preconditioner</param>
>      <param name="tolerance">linearTolerance</param>
>      <param name="maxIterations">5000</param>
>    </struct>
> 	<!-- -->
>    <struct name="stokesEqn">
>      <param name="Type">Stokes_SLE</param>
>      <param name="SLE_Solver">uzawa</param>
>      <param name="Context">context</param>
>      <param name="StressTensorMatrix">k_matrix</param>
>      <param name="GradientMatrix">g_matrix</param>
>      <param name="DivergenceMatrix"></param>
>      <param name="CompressibilityMatrix">c_matrix</param>
>      <param name="VelocityVector">solutionVelocity</param>
>      <param name="PressureVector">solutionPressure</param>
>      <param name="ForceVector">mom_force</param>
>      <param name="ContinuityForceVector">cont_force</param>
>      <param name="killNonConvergent">false</param>
>      <param name="nonLinearMaxIterations">nonLinearMaxIterations</param>
>      <param name="nonLinearTolerance">nonLinearTolerance</param>
>      <param name="makeConvergenceFile">false</param>
>    </struct>
> 	<!-- -->
>    <struct name="c_matrix">
>      <param name="Type">StiffnessMatrix</param>
>      <param name="RowVariable">PressureField</param>
>      <param name="ColumnVariable">PressureField</param>
>      <param name="RHS">cont_force</param>
>      <param name="allowZeroElementContributions">True</param>
>    </struct>
> 	<!-- -->
>    <struct name="mixedStabiliser">
>      <param name="Type">MixedStabiliserTerm</param>
>      <param name="Swarm">gaussSwarm</param>
>      <param name="picSwarm">picIntegrationPoints</param>
>      <param name="storeVisc">storeViscosity</param>
>      <param name="StiffnessMatrix">c_matrix</param>
>    </struct>
> 	<!-- Add hydrostatic term and define its components --> 
> 	<struct name="hydrostaticTerm"> 
> 	  <param name="Type">HydrostaticTerm</param> 
> 	  <param name="upperDensity">2700</param> 
> 				<!-- upper crust density -->
> 		<param name="lowerDensity">3300</param> 
> 				<!-- lower crust density -->
> 		<param name="height">maxY</param>
> 		<param name="materialBoundary">40000</param> 
> 				<!-- upper-lower crust boundary -->
> 		<param name="gravity">gravity</param>
> 	</struct>
> 	<!-- Define stress bc related to hydrostatic term --> 
> 	<struct name="stressBC">
> 		<param name="Type">StressBC</param> 
> 		<param name="ForceVector">mom_force</param> 
> 		<param name="Swarm">picIntegrationPoints</param> 
> 		<param name="wall">top</param> 
> 		<param name="y_type">HydrostaticTerm</param> 
> 		<param name="y_value">hydrostaticTerm</param>
> 	</struct>
> 	<!-- bouyancy force term will be modified when adding temperature -->
> 	<!-- dependent buoynacy or a hydrostatic sterm -->
>    <struct name="buoyancyForceTerm">
>      <param name="Type">BuoyancyForceTerm</param>
>      <param name="ForceVector">mom_force</param>
>      <param name="Swarm">picIntegrationPoints</param>
>      <param name="gravity">gravity</param>			 
> 			<param name="HydrostaticTerm">hydrostaticTerm</param> 
> 					<!-- specify that buoyancy force depends on hydrostatic term -->
>    </struct>
> 	<!-- -->
>    <struct name="background">
>      <param name="Type">Everywhere</param>
>    </struct>
> 	<!-- -->
>    <struct name="escapedRoutine">
>      <param name="Type">EscapedRoutine</param>
>      <param name="idealParticleCount">0</param>
>    </struct>
> 	<!-- -->
>    <struct name="velocityRemesher">
>      <param name="Type">StripRemesher</param>
>      <param name="mesh">mesh-linear</param>
>      <param name="meshType">regular</param>
>      <list name="dim">
>        <param>true</param>
>        <param>true</param>
>        <param>true</param>
>      </list>
>    </struct>
> 	<!-- -->
>    <struct name="storeViscosity">
>      <param name="Type">StoreVisc</param>
>      <param name="MaterialPointsSwarm">materialSwarm</param>
>    </struct>
> 	<!-- -->
>    <struct name="storeStress">
>      <param name="Type">StoreStress</param>
>      <param name="MaterialPointsSwarm">materialSwarm</param>
>    </struct>
> 	<!-- -->
>    <!-- End of basic components -->
> 
>    <!-- Create box that covers entire domain -->
> 	  <struct name="boxShape">
>      <param name="Type">Box</param>
>      <param name="startX">minX</param>
>      <param name="endX">maxX</param>
>      <param name="startY">minY</param>
>      <param name="endY">maxY</param>
>      <param name="startZ">minZ</param>
>      <param name="endZ">maxZ</param>
>    </struct>
> 
> 		<!-- Upper crust components section -->
>    <!-- Create box that defines upper crust shape -->
> 	  <struct name="upperShape">
>      <param name="Type">Box</param>
>      <param name="startX">minX</param>
>      <param name="endX">maxX</param>
>      <param name="startY">40000.0</param>
>      <param name="endY">60000.0</param>
>      <param name="startZ">minZ</param>
>      <param name="endZ">maxZ</param>
>    </struct>
>    <!-- Upper crust viscosity of 10^24 (scales to 0.1) -->
>    <struct name="upperViscous">
>      <param name="Type">MaterialViscosity</param>
>      <param name="eta0">0.1</param> 
>    </struct>
>    <!-- Upper crust strain weakening rheology parameters -->
>    <struct name="strainWeakening">
>      <param name="Type">StrainWeakening</param>
>      <param name="TimeIntegrator">timeIntegrator</param>
>      <param name="MaterialPointsSwarm">materialSwarm</param>
>      <param name="finalSofteningStrain">0.5</param>
>      <param name="initialDamageFraction">0.0</param>
>      <param name="initialDamageWavenumber">0.00000625</param> 
> 				<!-- Inverse of box length (see manual)-->
>      <param name="initialDamageFactor">0.5</param>
>      <param name="healingRate">0.0</param>
>    </struct>
>    <!-- Upper crust yielding rheology parameters --> 
> 	  <struct name="yielding">
>      <param name="Type">DruckerPrager</param>
>      <param name="PressureField">PressureField</param>
>      <param name="VelocityGradientsField">VelocityGradientsField</param>
>      <param name="MaterialPointsSwarm">materialSwarm</param>
>      <param name="Context">context</param>
>      <param name="StrainWeakening">strainWeakening</param>
>      <param name="cohesion">16.e6</param>
>      <param name="cohesionAfterSoftening">3.2e6</param> 
>      <param name="frictionCoefficient">0.44</param>
>      <param name="frictionCoefficientAfterSoftening">0.088</param>
>      <param name="HydrostaticTerm">hydrostaticTerm</param>
>    </struct>
>    <!-- Assign upper crust rheology to upper crust shape and define density -->
>    <struct name="upperCrust">
>      <param name="Type">RheologyMaterial</param>
>      <param name="Shape">upperShape</param>
>      <param name="density">2700</param>
>      <list name="Rheology">
> 			  <param>upperViscous</param>
>        <param>yielding</param>
>        <param>storeViscosity</param>
>        <param>storeStress</param>
>      </list>
>    </struct>
> 		
> 		<!-- Lower crust components section -->
>    <!-- Create shape that defines lower crust region -->
> 	  <struct name="lowerShape">
>      <param name="Type">Intersection</param>
>      <list name="shapes">
>        <param>boxShape</param>
>        <param>!upperShape</param>
>      </list>
>    </struct>
>    <!-- Lower crust viscosity -->
>    <struct name="lowerViscous">
>      <param name="Type">MaterialViscosity</param>
>      <param name="eta0">0.0014384</param>
>    </struct>
> 		<!-- Assign lower crust rheology to lower crust shape and define density -->
>    <struct name="lowerCrust">
>      <param name="Type">RheologyMaterial</param>
>      <param name="Shape">lowerShape</param>
>      <param name="density">3300.0</param>
>      <list name="Rheology">
>        <param>lowerViscous</param>
>        <param>storeViscosity</param> 
> 				<param>storeStress</param>  
>      </list>
>    </struct>
> 	
>  </struct>
>  <!-- End of Components -->
> 
>  <!-- Define which built-in plugins Gale should use -->
>  <list name="plugins">
> 	<param>Underworld_EulerDeform</param>
> 	<param>Underworld_VTKOutput</param>
>  </list>
> 
>  <!-- Defining key parameters -->
>  <param name="maxTimeSteps">500</param> 
> 			<!-- # time steps -->
>  <param name="outputEvery">1</param> 
> 			<!-- output frequency -->
>  <param name="dumpEvery">1</param>
>  <param name="outputPath">output</param> 
> 			<!-- location output folder -->
>  <param name="dim">2</param> 
> 			<!-- 2 = 2d model, 3 = 3d model -->
>  <param name="shadowDepth">1</param>
>  <param name="minX">0.0f</param> 
> 			<!-- min x coordinate -->
>  <param name="minY">0.0f</param> 
> 			<!-- min y coordinate -->
>  <param name="minZ">0.0f</param> 
> 			<!-- min z coordinate -->
>  <param name="maxX">160000.0f</param> 
> 			<!-- max x coordinate -->
>  <param name="maxY">60000.0f</param> 
> 			<!-- max y coordinate -->
>  <param name="maxZ">1000.0f</param> 
> 			<!-- max z coordinate -->
>  <param name="elementResI">320</param> 
> 			<!-- # elements x direction -->
>  <param name="elementResJ">120</param> 
> 			<!-- # elements y direction -->
>  <param name="elementResK">10</param> 
> 			<!-- # elements z direction -->
>  <param name="allowUnbalancing">True</param>
>  <param name="buildNodeNeighbourTbl">True</param>
>  <param name="buildElementNeighbourTbl">True</param>
>  <param name="particlesPerCell">60</param> 
> 			<!-- ideal # particles per element --> 
>  <param name="seed">13</param> 
> 			<!-- no need to ever change this variable -->
>  <param name="gaussParticlesX">2</param> 
> 			<!-- no need to ever change this variable -->
>  <param name="gaussParticlesY">2</param> 
> 			<!-- no need to ever change this variable -->
>  <param name="gaussParticlesZ">2</param> 
> 			<!-- no need to ever change this variable -->
> 
>  <!-- EulerDeform plugin allows upper surface to move freely or stay in place -->
>  <struct name="EulerDeform">
> 	<list name="systems">
> 	  <struct>
> 		<param name="mesh">mesh-linear</param>
> 		<param name="remesher">velocityRemesher</param>
> 		<param name="velocityField">VelocityField</param>
> 		<param name="wrapTop">True</param> 
> 				<!-- Makes top surface conform to simulation -->
> 		<list name="fields"> 
> 			<!-- Fields to interpolate onto new mesh -->
> 		  <struct>
> 			<param name="field">VelocityField</param>
> 			<param name="variable">velocity</param>
> 		  </struct>
> 		  <struct>
> 			<param name="field">PressureField</param>
> 			<param name="variable">pressure</param>
> 		  </struct>
> 		</list>
> 	  </struct>
> 	</list>
>  </struct>
> 
>  <!-- Velocity boundary conditions -->
>  <struct name="velocityBCs">
> 	<param name="type">CompositeVC</param>
> 	<!-- List of different locations (front,...) for velocity bc's -->
> 	<list name="vcList">
> 	 <!-- Front side of simulation  -->
> 	 <!-- back wall is free slip  -->
> 	  <struct>
> 		<param name="type">WallVC</param>
> 		<param name="wall">front</param>
> 		<list name="variables">
> 		  <struct>
> 			<param name="name">vz</param>
> 			<param name="type">double</param>
> 			<param name="value">0</param>
> 		  </struct>
> 		</list>
> 	  </struct>
> 	  <!-- Back side of simulation  -->
> 		<!-- back wall is free slip  -->
> 	  <struct>
> 		<param name="type">WallVC</param>
> 		<param name="wall">back</param>
> 		<list name="variables">
> 		  <struct>
> 			<param name="name">vz</param>
> 			<param name="type">double</param>
> 			<param name="value">0</param>
> 		  </struct>
> 		</list>
> 	  </struct>
> 	  <!-- Left side of simulation  -->
> 		<!-- left wall is free slip  -->
> 	  <struct>
> 		<param name="type">WallVC</param>
> 		<param name="wall">left</param>
> 		<list name="variables">
> 		  <struct>
> 		    <param name="name">vx</param>
> 			<param name="type">double</param>
> 			<param name="value">0.0</param>
> 		  </struct>
> 		</list>
> 	  </struct>
> 	  <!-- Right side of simulation  -->
> 		<!-- right wall has velocity of 3.1 cm/yr  -->
> 	  <struct>
> 		<param name="type">WallVC</param>
> 		<param name="wall">right</param>
> 		<list name="variables">
> 		  <struct>
> 			<param name="name">vx</param>
> 			<param name="type">double</param>
> 			<param name="value">9823517030777968.0</param> 
> 		  </struct>
> 		</list>
> 	  </struct>
> 	  <!-- Bottom side of simulation  -->
> 		<!-- bottom wall is free slip  -->
> 	  <struct>
> 	    <param name="type">WallVC</param>
> 		<param name="wall">bottom</param>
> 		<list name="variables">
> 		  <struct>
> 			<param name="name">vy</param>
> 			<param name="type">double</param>
> 			<param name="value">1.84190944327e15</param>
> 		  </struct>
> 		</list>
> 	  </struct>
> 	  <!--  -->
> 	</list>
>  </struct>
> 
> 	<!-- Output frequency for .dat files -->
>  <param name="checkpointEvery">50</param>
> 	
> 	<!-- Scaling factor for time-step (default is 1.0 = no scaling) -->
> 	<param name="dtFactor">1.0</param>
> 	
> 	<!-- wijns05epsl_notemp: gravity is 10 m/s2 -->
>  <param name="gravity">10.0</param>
> 
>  <param name="journal.info">True</param>
>  <param name="journal.debug">True</param>
>  <param name="journal-level.info">2</param>
>  <param name="journal-level.debug">2</param>
> 
> </StGermainData>
> _______________________________________________
> CIG-LONG mailing list
> CIG-LONG at geodynamics.org
> http://geodynamics.org/cgi-bin/mailman/listinfo/cig-long



More information about the CIG-LONG mailing list