Changeset 23633 for issm/trunk-jpl/src/m/materials/cuffey.py
- Timestamp:
- 01/16/19 08:17:06 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/materials/cuffey.py
r21303 r23633 6 6 7 7 rigidity (in s^(1/3)Pa) is the flow law parameter in the flow law sigma=B*e(1/3) 8 (Cuffey and Paterson, p75). 8 (Cuffey and Paterson, p75). 9 9 temperature is in Kelvin degrees 10 10 … … 12 12 rigidity=cuffey(temperature) 13 13 """ 14 14 15 15 if np.any(temperature<0.): 16 16 raise RuntimeError("input temperature should be in Kelvin (positive)") 17 18 T = temperature-273.15 17 18 if np.ndim(temperature)==2: 19 #T = temperature.reshape(-1,)-273.15 20 T = temperature.flatten()-273.15 21 elif isinstance(temperature,float) or isinstance(temperature,int): 22 T = np.array([temperature])-273.15 23 else: 24 T = temperature-273.15 25 19 26 20 27 rigidity=np.zeros_like(T) 21 28 pos=np.nonzero(T<=-45) 22 rigidity[pos]=10**8*(-0.000396645116301*(T[pos]+50)**3+ 0.013345579471334*(T[pos]+50)**2 -0.356868703259105*(T[pos]+50)+7.272363035371383) 29 print pos 30 if len(pos): 31 rigidity[pos]=10**8*(-0.000396645116301*(T[pos]+50)**3+ 0.013345579471334*(T[pos]+50)**2 -0.356868703259105*(T[pos]+50)+7.272363035371383) 23 32 pos=np.nonzero(np.logical_and(-45<=T,T<-40)) 24 rigidity[pos]=10**8*(-0.000396645116301*(T[pos]+45)**3+ 0.007395902726819*(T[pos]+45)**2 -0.253161292268336*(T[pos]+45)+5.772078366321591) 33 if len(pos): 34 rigidity[pos]=10**8*(-0.000396645116301*(T[pos]+45)**3+ 0.007395902726819*(T[pos]+45)**2 -0.253161292268336*(T[pos]+45)+5.772078366321591) 25 35 pos=np.nonzero(np.logical_and(-40<=T,T<-35)) 26 rigidity[pos]=10**8*(0.000408322072669*(T[pos]+40)**3+ 0.001446225982305*(T[pos]+40)**2 -0.208950648722716*(T[pos]+40)+4.641588833612773) 36 if len(pos): 37 rigidity[pos]=10**8*(0.000408322072669*(T[pos]+40)**3+ 0.001446225982305*(T[pos]+40)**2 -0.208950648722716*(T[pos]+40)+4.641588833612773) 27 38 pos=np.nonzero(np.logical_and(-35<=T,T<-30)) 28 rigidity[pos]=10**8*(-0.000423888728124*(T[pos]+35)**3+ 0.007571057072334*(T[pos]+35)**2 -0.163864233449525*(T[pos]+35)+3.684031498640382) 39 if len(pos): 40 rigidity[pos]=10**8*(-0.000423888728124*(T[pos]+35)**3+ 0.007571057072334*(T[pos]+35)**2 -0.163864233449525*(T[pos]+35)+3.684031498640382) 29 41 pos=np.nonzero(np.logical_and(-30<=T,T<-25)) 30 rigidity[pos]=10**8*(0.000147154327025*(T[pos]+30)**3+ 0.001212726150476*(T[pos]+30)**2 -0.119945317335478*(T[pos]+30)+3.001000667185614) 42 if len(pos): 43 rigidity[pos]=10**8*(0.000147154327025*(T[pos]+30)**3+ 0.001212726150476*(T[pos]+30)**2 -0.119945317335478*(T[pos]+30)+3.001000667185614) 31 44 pos=np.nonzero(np.logical_and(-25<=T,T<-20)) 32 rigidity[pos]=10**8*(-0.000193435838672*(T[pos]+25)**3+ 0.003420041055847*(T[pos]+25)**2 -0.096781481303861*(T[pos]+25)+2.449986525148220) 45 if len(pos): 46 rigidity[pos]=10**8*(-0.000193435838672*(T[pos]+25)**3+ 0.003420041055847*(T[pos]+25)**2 -0.096781481303861*(T[pos]+25)+2.449986525148220) 33 47 pos=np.nonzero(np.logical_and(-20<=T,T<-15)) 34 rigidity[pos]=10**8*(0.000219771255067*(T[pos]+20)**3+ 0.000518503475772*(T[pos]+20)**2 -0.077088758645767*(T[pos]+20)+2.027400665191131) 48 if len(pos): 49 rigidity[pos]=10**8*(0.000219771255067*(T[pos]+20)**3+ 0.000518503475772*(T[pos]+20)**2 -0.077088758645767*(T[pos]+20)+2.027400665191131) 35 50 pos=np.nonzero(np.logical_and(-15<=T,T<-10)) 36 rigidity[pos]=10**8*(-0.000653438900191*(T[pos]+15)**3+ 0.003815072301777*(T[pos]+15)**2 -0.055420879758021*(T[pos]+15)+1.682390865739973) 51 if len(pos): 52 rigidity[pos]=10**8*(-0.000653438900191*(T[pos]+15)**3+ 0.003815072301777*(T[pos]+15)**2 -0.055420879758021*(T[pos]+15)+1.682390865739973) 37 53 pos=np.nonzero(np.logical_and(-10<=T,T<-5)) 38 rigidity[pos]=10**8*(0.000692439419762*(T[pos]+10)**3 -0.005986511201093 *(T[pos]+10)**2 -0.066278074254598*(T[pos]+10)+1.418983411970382) 54 if len(pos): 55 rigidity[pos]=10**8*(0.000692439419762*(T[pos]+10)**3 -0.005986511201093 *(T[pos]+10)**2 -0.066278074254598*(T[pos]+10)+1.418983411970382) 39 56 pos=np.nonzero(np.logical_and(-5<=T,T<-2)) 40 rigidity[pos]=10**8*(-0.000132282004110*(T[pos]+5)**3 +0.004400080095332*(T[pos]+5)**2 -0.074210229783403*(T[pos]+5)+ 1.024485188140279) 57 if len(pos): 58 rigidity[pos]=10**8*(-0.000132282004110*(T[pos]+5)**3 +0.004400080095332*(T[pos]+5)**2 -0.074210229783403*(T[pos]+5)+ 1.024485188140279) 41 59 pos=np.nonzero(-2<=T) 42 rigidity[pos]=10**8*(-0.000132282004110*(T[pos]+2)**3 +0.003209542058346*(T[pos]+2)**2 -0.051381363322371*(T[pos]+2)+ 0.837883605537096) 60 if len(pos): 61 rigidity[pos]=10**8*(-0.000132282004110*(T[pos]+2)**3 +0.003209542058346*(T[pos]+2)**2 -0.051381363322371*(T[pos]+2)+ 0.837883605537096) 43 62 44 63 #Now make sure that rigidity is positive 45 64 pos=np.nonzero(rigidity<0) 46 rigidity[pos]=1**6 65 rigidity[pos]=1**6 47 66 48 67 return rigidity 49
Note:
See TracChangeset
for help on using the changeset viewer.