Ignore:
Timestamp:
01/16/19 08:17:06 (6 years ago)
Author:
bdef
Message:

BUG:fixing cuffey rheology

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/m/materials/cuffey.py

    r21303 r23633  
    66
    77           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).
    99           temperature is in Kelvin degrees
    1010
     
    1212              rigidity=cuffey(temperature)
    1313        """
    14        
     14
    1515        if np.any(temperature<0.):
    1616                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
    1926
    2027        rigidity=np.zeros_like(T)
    2128        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)
    2332        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)
    2535        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)
    2738        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)
    2941        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)
    3144        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)
    3347        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)
    3550        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)
    3753        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)
    3956        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)
    4159        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)
    4362
    4463        #Now make sure that rigidity is positive
    4564        pos=np.nonzero(rigidity<0)
    46         rigidity[pos]=1**6 
     65        rigidity[pos]=1**6
    4766
    4867        return rigidity
    49 
Note: See TracChangeset for help on using the changeset viewer.