Exemplo n.º 1
0
# In[64]:


import UWsubduction.params as params 


# In[65]:


#define some more concise names
ur = params.UnitRegistry
sca = params.sub_scaling
ndimlz = sca.nonDimensionalize
#build the dimensionless paramter / model dictionaries
ndp = params.build_nondim_dict(params.paramDict_dim  , sca)   
md = params.build_nondim_dict(params.modelDict_dim  , sca)

assert ndimlz(params.paramDict_dim.refLength) == 1.0

# changes to base params (for testing)
md.faultThickness *= 1.5 #15 km
md.res = 48
md.depth *= 0.85
md.periodic = True #add this item to the dictionary


# ## Build mesh, Stokes Variables

# In[66]:
Exemplo n.º 2
0
scaling_coefficients = sca.get_coefficients()

#instead of importing from the params submodule, we'll explicity set the scaling values
KL = pd.refLength
KT = pd.potentialTemp - pd.surfaceTemp
Kt = KL**2 / pd.refDiffusivity  #we use a diffusive time scale
KM = pd.refViscosity * KL * Kt

scaling_coefficients["[length]"] = KL.to_base_units()
scaling_coefficients["[temperature]"] = KT.to_base_units()
scaling_coefficients["[mass]"] = KM.to_base_units()
scaling_coefficients["[time]"] = Kt.to_base_units()

#build the dimensionless paramter / model dictionaries
npd = params.build_nondim_dict(pd, sca)
nmd = params.build_nondim_dict(md, sca)
ndimlz = sca.non_dimensionalise

assert ndimlz(pd.refLength) == 1.0

#Important to remember the to_base_units conversion here
rayleighNumber = (
    (pd.refExpansivity * pd.refDensity * pd.refGravity *
     (pd.potentialTemp - pd.surfaceTemp) * pd.refLength**3).to_base_units() /
    (pd.refViscosity * pd.refDiffusivity).to_base_units()).magnitude

pressureDepthGrad = (
    (pd.refDensity * pd.refGravity * pd.refLength**3).to_base_units() /
    (pd.refViscosity * pd.refDiffusivity).to_base_units()).magnitude
Exemplo n.º 3
0
#Moved to utils.py
#####################
#Now we map pd, md to non-nonDimensionalized dictionaries, paramDict, modelDict
#####################

#def build_nondim_dict(d, sca):
#    ndd = edict({})
#    for key, val in d.items():
#        #can only call .magnitude on Pint quantities
#        if hasattr(val, 'dimensionality'):
#            if val.unitless:
#                ndd[key] = val.magnitude
#            else:
#                ndd[key] = sca.nonDimensionalize(val)
#
#        else:
#            ndd[key] = val
#
#    return ndd


#build the dimensionless dictionaries
paramDict  = params.build_nondim_dict(pd, sub_scaling)
modelDict= params.build_nondim_dict(md, sub_scaling)



#####################
#Finally, define some dimensional numbers and scaling factors
#####################