# 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]:
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
#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 #####################