-
Notifications
You must be signed in to change notification settings - Fork 7
/
lmrThermalEquilibration.xml
149 lines (127 loc) · 6.04 KB
/
lmrThermalEquilibration.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
<?xml version="1.0" encoding="UTF-8"?>
<StGermainData xmlns="http://www.vpac.org/StGermain/XML_IO_Handler/Jun2003">
<!-- === Initial Geotherm Definition ========================================== -->
<struct name="components" mergeType="merge">
<struct name="tempProfile">
<param name="Type">Ppc_Thermal_Profile</param>
<param name="StartCoord" units="km"> 0.0</param>
<param name="EndCoord" units="km"> -145.0</param>
<param name="MinTemp" units="K"> 293.15 </param>
<param name="MaxTemp" units="K"> 1573.15 </param>
<param name="LinearCoefficient">0.00465139</param>
<param name="ExponentialCoefficient1">774.73 </param>
<param name="ExponentialCoefficient2">1.23996e-5</param>
<param name="axis"> @VerticalAxis </param>
</struct>
</struct>
<!-- The above function defines a geotherm via:
temp = min_temp + LinearCoefficient * (start_coord - depth) +
ExponentialCoefficient1 * (1 - exp(-ExponentialCoefficient2 * (start_coord - depth)))
where any depth above StartCoord = MinTemp, and any depth below EndCoord = MaxTemp.
By defining an approximately correct geotherm as an initial condition, the thermal equilibration
time to steady-state can be reduced considerably.
-->
<struct name="temperatureICs" mergeType="replace">
<param name="type">CompositeVC</param>
<list name="vcList">
<struct>
<param name="type"> AllNodesVC </param>
<list name="variables">
<struct>
<param name="name"> temperature </param>
<param name="type"> func </param>
<param name="value"> tempProfile </param>
</struct>
</list>
</struct>
</list>
</struct>
<!-- The geotherm is applied to the whole model domain in the above temperature Initial Condition -->
<!-- === End of Initial Geotherm Definition =================================== -->
<!-- === Optimisations for thermal equilibration phase ======================== -->
<!-- By setting the air to be a fixed temperature, and changing it's thermal
diffusivity, we can make the timestep 1 order of magnitude larger. -->
<struct name="temperatureBCs" mergeType="merge">
<list name="vcList" mergeType="merge">
<struct>
<param name="type"> MeshShapeVC </param>
<param name="Shape"> airShape </param>
<list name="variables">
<struct>
<param name="name">temperature</param>
<param name="type">double</param>
<param name="value" units="K"> 293.15 </param>
</struct>
</list>
</struct>
</list>
</struct>
<struct name="components" mergeType="merge">
<struct name="air" mergeType="merge">
<!-- Setting air diffusivity to be as small as rock will increase timestep length -->
<param name="DiffusivityProperty" units="m*m/s" mergeType="replace"> 1e-6 </param>
</struct>
<!-- === Mesh parameters ========================== -->
<struct name="linearMeshGenerator" mergeType="merge">
<!-- Forces the mesh to be regular -->
<param name="regular" mergeType="replace">True</param>
</struct>
<!-- ============================================== -->
<!-- Remove passive tracers, since they won't move
and slow the computation -->
<struct name="passiveswarmOutputs" mergeType="replace">
<param name="Type"> DummyComponent </param>
</struct>
<struct name="uppercrust_marker_PTSwarm" mergeType="replace">
<param name="Type"> DummyComponent </param>
</struct>
<struct name="passiveTracerAdvect" mergeType="replace">
<param name="Type"> DummyComponent </param>
</struct>
<struct name="stokesEqn" mergeType="merge">
<param name="makeConvergenceFile" mergeType="replace"> false </param>
<param name="killNonConvergent" mergeType="replace"> false </param>
</struct>
</struct>
<list name="FieldVariablesToCheckpoint" mergeType="replace">
<param>VelocityField</param>
<param>PressureField</param>
<param>TemperatureField</param>
<param>TemperatureField-phiDotField</param>
</list>
<struct name="velocityBCs" mergeType="replace">
<!-- Remove the Isostasy boundary condition from the
base of the model -->
<param name="type">CompositeVC</param>
<list name="vcList">
<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" units="cm/yr">0.0</param>
</struct>
</list>
</struct>
</list>
</struct>
<list name="plugins" mergeType="replace">
<!-- Remove all plugins but a few important ones -->
<struct>
<param name="Type">StgFEM_SwarmVariableList</param>
<param name="Context">context</param>
</struct>
<struct>
<param name="Type">StgFEM_FeVariableList</param>
<param name="Context">context</param>
</struct>
<struct>
<param name="Type">Underworld_PureDiffusion</param>
<param name="Context">context</param>
</struct>
</list>
<param name="PureDiffusion_TimeSteps">200000000</param>
<!-- === End of optimisations for thermal equilibration phase ================== -->
</StGermainData>