Ignore:
Timestamp:
04/09/18 15:24:15 (6 years ago)
Author:
dubos
Message:

devel/unstructured : select double or single precision for physical quantities

File:
1 edited

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/devel/Python/dynamico/meshes.py

    r687 r689  
    1313 
    1414radian=180/math.pi 
     15 
     16def zeros(dims): return np.zeros([n for n in dims if n>1], dtype=unst.np_num) 
    1517 
    1618#------------------- Hybrid mass-based coordinate ------------- 
     
    6870 
    6971#----------------------- Cartesian mesh ----------------------- 
    70  
    71 def squeeze(dims): return np.zeros([n for n in dims if n>1]) 
    7272 
    7373# arrays is a list of arrays 
     
    177177                  Aiv,Aiv,f+0.*Aiv,le_de,Riv2,-wee) 
    178178 
    179     def field_theta(self,n=1): return squeeze((n,self.nqdyn,self.ny,self.nx,self.llm)) 
    180     def field_mass(self,n=1): return squeeze((n,self.ny,self.nx,self.llm)) 
    181     def field_z(self,n=1): return squeeze((n,self.ny,self.nx,self.llm)) 
    182     def field_w(self,n=1): return squeeze((n,self.ny,self.nx,self.llm+1)) 
     179    def field_theta(self,n=1): return zeros((n,self.nqdyn,self.ny,self.nx,self.llm)) 
     180    def field_mass(self,n=1): return zeros((n,self.ny,self.nx,self.llm)) 
     181    def field_z(self,n=1): return zeros((n,self.ny,self.nx,self.llm)) 
     182    def field_w(self,n=1): return zeros((n,self.ny,self.nx,self.llm+1)) 
    183183    def field_u(self,n=1):  
    184184        if n==1: 
     
    186186        else: 
    187187            return np.zeros((n,self.ny,2*self.nx,self.llm)) 
    188     def field_ps(self,n=1): return squeeze((n,self.ny,self.nx)) 
     188    def field_ps(self,n=1): return zeros((n,self.ny,self.nx)) 
    189189    def ucomp(self,u): return u[:,range(0,2*self.nx,2),:] 
    190190    def set_ucomp(self,uv,u): uv[:,range(0,2*self.nx,2),:]=u 
     
    279279 
    280280class Abstract_Mesh(Base_class): 
    281     def field_theta(self,n=1): return squeeze((n,self.nqdyn,self.primal_num,self.llm)) 
    282     def field_mass(self,n=1):  return squeeze((n,self.primal_num,self.llm)) 
    283     def field_z(self,n=1):     return squeeze((n,self.dual_num,self.llm)) 
    284     def field_w(self,n=1):     return squeeze((n,self.primal_num,self.llm+1)) 
    285     def field_u(self,n=1):     return squeeze((n,self.edge_num,self.llm)) 
    286     def field_ps(self,n=1):    return squeeze((n,self.primal_num,)) 
     281    def field_theta(self,n=1): return zeros((n,self.nqdyn,self.primal_num,self.llm)) 
     282    def field_mass(self,n=1):  return zeros((n,self.primal_num,self.llm)) 
     283    def field_z(self,n=1):     return zeros((n,self.dual_num,self.llm)) 
     284    def field_w(self,n=1):     return zeros((n,self.primal_num,self.llm+1)) 
     285    def field_u(self,n=1):     return zeros((n,self.edge_num,self.llm)) 
     286    def field_ps(self,n=1):    return zeros((n,self.primal_num,)) 
    287287    def ucov2D(self, ulon, ulat):  
    288288        return self.de*(ulon*np.cos(self.angle_e)+ulat*np.sin(self.angle_e)) 
Note: See TracChangeset for help on using the changeset viewer.