Uw2 - (phase) functions
- Explain how I handle physical parameters in my models
- Describe the parametrisation of thermodynamic phase transitions (Christenson and Yuen )*
- Overview of the implementation of these in Underworld2
Christensen, U. R., Yuen, D. A., 1984. The Interaction of a Subducting Litho-
spheric Slab with a Chemical or Phase Boundary. Journal of Geophysical
Research
Uw2 - (phase) functions
- how I handle physical parameters in my models
dp = edict({#Main physical paramters
'depth':2*660e3, #Depth
'rho':3300., #reference density
'g':9.8, #surface gravity
'eta0':1e20, #Dislocation creep at 250 km, 1573 K, 1e-15 s-1
'k':1e-6, #thermal diffusivity
'a':3e-5, #surface thermal expansivity
...
'low_mantle_visc_fac':1.
})
Benefits of storing your parameters in dictionaries.
- Easy to save entire parameter suite.
- harder to overwrite variables (although at some cost to brevity)
rho vs dp.rho
Uw2 - (phase) functions
- how I handle physical parameters in my models
#Scaling factors, used to map the dimensional parameters to dimensionless
sf = edict({'stress':dp.LS**2/(dp.k*dp.eta0),
'lith_grad':dp.rho*dp.g*(dp.LS)**3/(dp.eta0*dp.k) ,
'vel':dp.LS/dp.k,
'SR':dp.LS**2/dp.k,
'W':(dp.rho*dp.g*dp.LS)/(dp.R*dp.deltaTa), #Including adiabatic compression, and deltaTa
'E': 1./(dp.R*dp.deltaTa), #using deltaTa, the guesstimated adiabatic temp difference
'Ads':1./((dp.eta0**(-1.*dp.n))*(dp.k**(1. - dp.n))*(dp.LS**(-2.+ (2.*dp.n)))),
'Adf':dp.eta0,
...
#dimensionless parameters
ndp = edict({'RA':(dp.g*dp.rho*dp.a*dp.deltaTa*(dp.LS)**3)/(dp.k*dp.eta0),
'Di': dp.a*dp.g*dp.LS/dp.Cp, #Dissipation number
'H':0.,
#Temperatures and reference depth
...
Uw2 - (phase) functions
- how I handle physical parameters in my models
Benefits of storing your parameters in dictionaries.
- scaling is transparent
- easy to incorporate command line args
docker run -v $PWD:/workspace -i -t --rm dansand/underworld2-dev \
mpirun -np 8 python kaplan_dev.py md.RES=48 md.ppc=50 dp.Edf*=0.7
Uw2 - (phase) functions
- Describe the parametrisation of thermodynamic phase transitions (Yuen, etc. )
Uw2 - (phase) functions
- Describe the parametrisation of thermodynamic phase transitions (Yuen and Christenson )
Uw2 - (phase) functions
Uw2 - (phase) functions
class component_phases():
"""
Class that allows you to create 'phase functions' for a mineral component
"""
def __init__(self,name, depths,temps, widths,claps,densities):
"""
Class initialiser.
Parameter
---------
name : str
'Component', e.g olivine, pyroxene-garnet
depths: list
list of transition depths in kilometers
widths: list
list of transition widths in kilometers
claps: list
list of Clapeyron slopes in Pa/K
densities: list
list of density changes in kg/m3
Returns
-------
dp : Dictionary storing the phase-transition vales
Uw2 - (phase) functions
def nd_phase(self, reduced_p, widthPh):
"""
Creates an Underworld function, representing the phase function in the domain
"""
return 0.5*(1. + fn.math.tanh(reduced_p/(widthPh)))
Uw2 - (phase) functions
def buoyancy_sum(self, temperatureField, depthFn, gravityscale, lengthscale, diffusivityscale, viscosityscale):
"""
Creates an Underworld function, representing the Sum of the individual phase functions...
and the associated density changes:
pf_sum = Sum_k{ (Ra*delRho_k*pf_k/rho_0*eta_0*delta_t)}
-----------
temperatureField : underworld.mesh._meshvariable.MeshVariable
...need to put warning in about running build_nd_dict first
"""
bouyancy_factor = (gravityscale*lengthscale**3)/(viscosityscale*diffusivityscale)
pf_sum = uw.function.misc.constant(0.)
for phaseId in range(len(self.dp['depths'])):
#build reduced pressure
rp = self.nd_reduced_pressure(depthFn,
temperatureField,
self.ndp['depths'][phaseId ],
self.ndp['claps'][phaseId ],
self.ndp['temps'][phaseId ])
#build phase function
pf = self.nd_phase(rp, self.ndp['widths'][phaseId ])
pf_sum += bouyancy_factor*pf*self.dp['densities'][phaseId ] #we want the dimensional densities here
Uw2 - (phase) functions
buoyancy_factor = (dp.g*dp.LS**3)/(dp.eta0*dp.k)
basalt_comp_buoyancy = (dp.rho - 2940.)*buoyancy_factor
harz_comp_buoyancy = (dp.rho - 3235.)*buoyancy_factor
pyrolite_comp_buoyancy = (dp.rho - 3300.)*buoyancy_factor
if not md.compBuoyancy:
pyrolitebuoyancyFn = (ndp.RA*temperatureField*taFn)
harzbuoyancyFn = (ndp.RA*temperatureField*taFn)
basaltbuoyancyFn = (ndp.RA*temperatureField*taFn)
else :
pyrolitebuoyancyFn = (ndp.RA*temperatureField*taFn) -\
(0.6*olivine_phase_buoyancy + 0.4*garnet_phase_buoyancy) +\
pyrolite_comp_buoyancy
harzbuoyancyFn = (ndp.RA*temperatureField*taFn) -\
(0.8*olivine_phase_buoyancy + 0.2*garnet_phase_buoyancy) +\
harz_comp_buoyancy
basaltbuoyancyFn = (ndp.RA*temperatureField*taFn) -\
(1.*garnet_phase_buoyancy) +\
basalt_comp_buoyancy
Uw2 - (phase) functions
Uw2 - (phase) functions
Uw2 - (phase) functions
Underworld meetup
My thesis research involves three main themes:
- faults in continuum models, particularly the subduction fault,
- controls on the subduction dip, asymmetry, and upscaling of subduction models to conve ction models
- evolution of 3d collisional and congested subduction scenarios
Underworld meetup
This talk:
Subduction velocity patterns in young subduction zones
Background:
- 50 % of known subduction zones initiated in the Cenozoic.
- Much work on velocities for current SZs, what about changes over time?
- Often initiation is followed by intense back arc-spreading.
First: some gratuitous uw2
Even with comparable approaches (rheology), different researchers seem to generate quite different behaviour
By the way, what do we like / dislike about these kind of models...
- viscous rheology is consistent with experiments
- models can be tuned to near equilibrium
- decoupling is still fudged
- Not clear whether these can be upscaled
- Fairly expensive to run (3d?)
By the way, what do we like / dislike about these kind of models...
- viscous rheology is consistent with experiments
- models can be tuned to near equilibrium
- decoupling is still fudged
- Not clear whether these can be upscaled
- Fairly expensive to run (3d?)
One thing these types of models do agree on is the a distinctive velocity pattern in the free sinking and transition-zone interaction phase
This is a pretty big signal - hard to disguise, if this is the way SZs really evolve
So what might be wrong with this model?
So what might be wrong with this models?
Discounting all effects due to 3d, and non- plate-scale mantle flow...
perhaps we can isolate three factors to investigate...
Discounting all effects due to 3d, and non- plate-scale mantle flow...
perhaps we can isolate three factors to investigate...
- upper mantle rheology, particularly non-linearity
- Subducting plate age-bouyancy structure
- evolution of subduction interface
Questions
- Do we see this is in nature?
- Not sure yet, but I here's what I plan to do to find out
- And if not why not?
- How much does slab pull contribute to the overall force balance?
- How to the forces evolve?
Questions
- Do we see this is in nature?
- Not sure yet, but I here's what I plan to do to find out
- And if not why not?
- How much does slab pull contribute to the overall force balance?
- How to the forces evolve?
Underworld meetup
By Dan Sandiford
Underworld meetup
- 562