Changeset 618


Ignore:
Timestamp:
11/25/17 01:28:45 (6 years ago)
Author:
dubos
Message:

devel : get unstructured/slice test cases to work

Location:
codes/icosagcm/devel/Python
Files:
8 edited

Legend:

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

    r615 r618  
     1# import NetCDF before other modules 
     2import netCDF4 
  • codes/icosagcm/devel/Python/env/X64_CURIE.env

    r615 r618  
    33 
    44# Needed for Intel OpenMP 
    5 KERNELS_LDFLAGS="-liomp5" 
     5KERNELS_LDFLAGS="$NETCDF_LIBDIR $NETCDF_LIB -liomp5 $MKL_LIBS" 
  • codes/icosagcm/devel/Python/env/linux.env

    r615 r618  
    2525#---------------- To execute ---------------- 
    2626 
    27 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DYNAMICO_ROOT/lib 
    28 #export PYTHONPATH="$BASEDIR" 
     27# Python will look for modules (*.py) and extensions (*.so) in PYTHONPATH 
     28# Shared libs they depend on should be in a standard place or a path included in LD_LIBRARY_PATH 
     29export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DYNAMICO_ROOT/lib" 
     30export PYTHONPATH="$DYNAMICO_ROOT/lib" 
    2931export PYTHON=$(which python) 
    30 #export PYTHON_ROOT=$(basename $(basename $PYTHON)) 
    31  
    3232 
    3333#--------------- Link -------------- 
     
    3737 
    3838#-------------- Execute -------------- 
     39 
    3940# disable Intel OpenMP in MKL (loaded by numpy) to avoid conflict with our openMP 
    4041export MKL_THREADING_LAYER=SEQUENTIAL 
    4142 
     43# select a Matplotlib backend that works without an X11 connection 
     44export MPLBACKEND="agg" 
     45 
    4246export CODEGEN_ENV_SET=yes 
  • codes/icosagcm/devel/Python/src

    • Property svn:ignore set to
      build
      xios.c
      unstructured.c
  • codes/icosagcm/devel/Python/src/functions.h

    r615 r618  
    11/* KERNELS */ 
    2 void init_params(void); 
     2 
     3void dynamico_init_params(void); 
    34 
    45/* KERNELS -> XIOS */ 
    5 void setup_xios(void); 
    6 void call_xios_set_timestep(double); 
    7 void call_xios_update_calendar(int); 
     6void dynamico_setup_xios(void); 
     7void dynamico_xios_set_timestep(double); 
     8void dynamico_xios_update_calendar(int); 
    89 
    910/* CXIOS */ 
  • codes/icosagcm/devel/Python/src/hexagonal

    • Property svn:ignore
      •  

        old new  
        11*.k90 
         2tmp 
  • codes/icosagcm/devel/Python/src/unstructured

    • Property svn:ignore
      •  

        old new  
        11*.k90 
         2tmp 
  • codes/icosagcm/devel/Python/src/unstructured.pyx

    r615 r618  
    1313 
    1414cdef extern from "functions.h": 
    15      cpdef void init_params() 
    16      cpdef void setup_xios() 
    17      cpdef void call_xios_set_timestep(double) 
    18      cpdef void call_xios_update_calendar(int) 
     15     cdef void dynamico_init_params() 
     16     cpdef void dynamico_setup_xios() 
     17     cpdef void dynamico_xios_set_timestep(double) 
     18     cpdef void dynamico_xios_update_calendar(int) 
    1919 
    2020#------------- import and wrap DYNAMICO routines -------------# 
     
    2525 
    2626try:     
    27     kernels = wrap.SharedLib(vars(ker), 'libkernels.so', check_args=check_args)  
     27    kernels = wrap.SharedLib(vars(ker), 'libicosa.so', check_args=check_args)  
    2828    setvar, setvars, getvar, getvars = kernels.setvar, kernels.setvars, kernels.getvar, kernels.getvars 
    2929except OSError: 
     
    4040#                     ['call_xios_update_calendar',c_int] 
    4141#                     ['init_params',c_double], 
    42                      ['init_mesh',c_void_p,13], 
    43                      ['init_metric', c_void_p,6], 
    44                      ['init_hybrid', c_void_p,3], 
    45                      ['caldyn_hevi', c_double, c_void_p,20], 
    46                      ['partition_graph', c_int,2, c_void_p,3, c_int, c_void_p], 
     42                     ['dynamico_init_mesh',c_void_p,13], 
     43                     ['dynamico_init_metric', c_void_p,6], 
     44                     ['dynamico_init_hybrid', c_void_p,3], 
     45                     ['dynamico_caldyn_unstructured', c_double, c_void_p,20], 
     46#                     ['dynamico_partition_graph', c_int,2, c_void_p,3, c_int, c_void_p], 
    4747                     ]) 
    4848 
     
    8181        return flow,fast,slow 
    8282 
    83 # when calling caldyn_hevi, arrays for tendencies must be re-created each time 
     83# when calling caldyn_unstructured, arrays for tendencies must be re-created each time 
    8484# to avoid overwriting in the same memory space when time scheme is multi-stage 
    8585 
     
    9292                (True,thermo_boussinesq,eta_lag)) 
    9393        self.dhs = self.fmass() 
    94         ker.init_params() 
     94        dynamico_init_params() 
    9595    def _bwd_fast_slow_(self, flow, tau): 
    9696        h,u = flow 
    9797        # h*s = h => uniform buoyancy s=1 => shallow-water 
    9898        dh, du_slow, du_fast, hs, buf = self.fmass(), self.fu(), self.fu(), h.copy(), self.geopot 
    99         ker.caldyn_hevi(tau, self.ms, h, hs, u, self.geopot, buf, 
     99        ker.dynamico_caldyn_unstructured(tau, self.ms, h, hs, u, self.geopot, buf, 
    100100                  self.s, self.ps, self.pk, self.hflux, self.qv, 
    101101                  self.dms, dh, self.dhs, du_fast, du_slow, 
     
    112112                (True,caldyn_thermo,caldyn_eta, 
    113113                 g,BC.ptop,thermo.Rd,thermo.Cpd,thermo.p0,thermo.T0)) 
    114         ker.init_params() 
     114        dynamico_init_params() 
    115115    def _bwd_fast_slow_(self, flow, tau): 
    116116        dm, dS, du_slow, du_fast, buf = self.fmass(), self.ftheta(), self.fu(), self.fu(), self.geopot 
    117117        m,S,u = flow 
    118         ker.caldyn_hevi(tau, self.ms, m, S, u, self.geopot, buf, 
     118        ker.dynamico_caldyn_unstructured(tau, self.ms, m, S, u, self.geopot, buf, 
    119119                  self.s, self.ps, self.pk, self.hflux, self.qv, 
    120120                  self.dms, dm, dS, du_fast, du_slow, 
     
    133133                 g,BC.ptop,thermo.Rd,thermo.Cpd,thermo.p0,thermo.T0, 
    134134                 BC.pbot.max(), BC.rho_bot.max())) 
    135         ker.init_params() 
     135        dynamico_init_params() 
    136136    def bwd_fast_slow(self, flow, tau): 
    137137        ftheta, fmass, fu, fw = self.ftheta, self.fmass, self.fu, self.fw  
     
    139139        dPhi_slow, dPhi_fast, dW_slow, dW_fast = fw(), fw(), fw(), fw() 
    140140        m,S,u,Phi,W = flow 
    141         ker.caldyn_hevi(tau, self.ms, m, S, u, Phi, W, 
     141        ker.dynamico_caldyn_unstructured(tau, self.ms, m, S, u, Phi, W, 
    142142                  self.s, self.ps, self.pk, self.hflux, self.qv, 
    143143                  self.dms, dm, dS, du_fast, du_slow, 
     
    269269                 'max_trisk_deg','max_primal_deg','max_dual_deg'), 
    270270                (llm,nqdyn,2*nx*ny,nx*ny,nx*ny,4,4,4) )         
    271         ker.init_mesh(primal_nb,primal_edge,primal_ne, 
     271        print('init_mesh ...') 
     272        ker.dynamico_init_mesh(primal_nb,primal_edge,primal_ne, 
    272273                  dual_nb,dual_edge,dual_ne,dual_vertex, 
    273274                  left,right,down,up,trisk_deg,trisk) 
    274  
     275        print ('...done') 
     276         
    275277        Aiv=np.zeros(nx*ny)+dx*dy # Ai=Av=dx*dy 
    276         ker.init_metric(Aiv,Aiv,f+0.*Aiv,le_de,Riv2,-wee) 
     278        
     279        print('init_metric ...') 
     280        ker.dynamico_init_metric(Aiv,Aiv,f+0.*Aiv,le_de,Riv2,-wee) 
     281        print ('...done') 
    277282    def field_theta(self): return squeeze((self.nqdyn,self.ny,self.nx,self.llm)) 
    278283    def field_mass(self): return squeeze((self.ny,self.nx,self.llm)) 
     
    384389                      max_trisk_deg, max_primal_deg, max_dual_deg) ) 
    385390 
    386         ker.init_mesh(primal_deg,primal_edge,primal_ne, 
     391        ker.dynamico_init_mesh(primal_deg,primal_edge,primal_ne, 
    387392                       dual_deg,dual_edge,dual_ne,dual_vertex, 
    388393                       left,right,down,up,trisk_deg,trisk) 
    389         ker.init_metric(self.Ai,self.Av,self.fv,le/de,Riv2,wee) 
     394        ker.dynamico_init_metric(self.Ai,self.Av,self.fv,le/de,Riv2,wee) 
    390395         
    391396        for edge in range(edge_num): 
     
    457462    adjncy_loc, xadj_loc = [np.asarray(list(x), dtype=np.int32) for x in (adjncy_loc, xadj_loc)] 
    458463    owner = np.zeros(idx_end-idx_start, dtype=np.int32); 
    459     ker.partition_graph(mpi_rank, mpi_size, vtxdist, xadj_loc, adjncy_loc, nparts, owner) 
     464    ker.dynamico_partition_graph(mpi_rank, mpi_size, vtxdist, xadj_loc, adjncy_loc, nparts, owner) 
    460465    return owner 
    461466 
Note: See TracChangeset for help on using the changeset viewer.