Changeset 618 for codes/icosagcm/devel
- Timestamp:
- 11/25/17 01:28:45 (7 years ago)
- 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 2 import netCDF4 -
codes/icosagcm/devel/Python/env/X64_CURIE.env
r615 r618 3 3 4 4 # Needed for Intel OpenMP 5 KERNELS_LDFLAGS=" -liomp5"5 KERNELS_LDFLAGS="$NETCDF_LIBDIR $NETCDF_LIB -liomp5 $MKL_LIBS" -
codes/icosagcm/devel/Python/env/linux.env
r615 r618 25 25 #---------------- To execute ---------------- 26 26 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 29 export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DYNAMICO_ROOT/lib" 30 export PYTHONPATH="$DYNAMICO_ROOT/lib" 29 31 export PYTHON=$(which python) 30 #export PYTHON_ROOT=$(basename $(basename $PYTHON))31 32 32 33 33 #--------------- Link -------------- … … 37 37 38 38 #-------------- Execute -------------- 39 39 40 # disable Intel OpenMP in MKL (loaded by numpy) to avoid conflict with our openMP 40 41 export MKL_THREADING_LAYER=SEQUENTIAL 41 42 43 # select a Matplotlib backend that works without an X11 connection 44 export MPLBACKEND="agg" 45 42 46 export CODEGEN_ENV_SET=yes -
codes/icosagcm/devel/Python/src
-
Property
svn:ignore
set to
build
xios.c
unstructured.c
-
Property
svn:ignore
set to
-
codes/icosagcm/devel/Python/src/functions.h
r615 r618 1 1 /* KERNELS */ 2 void init_params(void); 2 3 void dynamico_init_params(void); 3 4 4 5 /* KERNELS -> XIOS */ 5 void setup_xios(void);6 void call_xios_set_timestep(double);7 void call_xios_update_calendar(int);6 void dynamico_setup_xios(void); 7 void dynamico_xios_set_timestep(double); 8 void dynamico_xios_update_calendar(int); 8 9 9 10 /* CXIOS */ -
codes/icosagcm/devel/Python/src/hexagonal
- Property svn:ignore
-
old new 1 1 *.k90 2 tmp
-
- Property svn:ignore
-
codes/icosagcm/devel/Python/src/unstructured
- Property svn:ignore
-
old new 1 1 *.k90 2 tmp
-
- Property svn:ignore
-
codes/icosagcm/devel/Python/src/unstructured.pyx
r615 r618 13 13 14 14 cdef extern from "functions.h": 15 c pdef voidinit_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) 19 19 20 20 #------------- import and wrap DYNAMICO routines -------------# … … 25 25 26 26 try: 27 kernels = wrap.SharedLib(vars(ker), 'lib kernels.so', check_args=check_args)27 kernels = wrap.SharedLib(vars(ker), 'libicosa.so', check_args=check_args) 28 28 setvar, setvars, getvar, getvars = kernels.setvar, kernels.setvars, kernels.getvar, kernels.getvars 29 29 except OSError: … … 40 40 # ['call_xios_update_calendar',c_int] 41 41 # ['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], 47 47 ]) 48 48 … … 81 81 return flow,fast,slow 82 82 83 # when calling caldyn_ hevi, arrays for tendencies must be re-created each time83 # when calling caldyn_unstructured, arrays for tendencies must be re-created each time 84 84 # to avoid overwriting in the same memory space when time scheme is multi-stage 85 85 … … 92 92 (True,thermo_boussinesq,eta_lag)) 93 93 self.dhs = self.fmass() 94 ker.init_params()94 dynamico_init_params() 95 95 def _bwd_fast_slow_(self, flow, tau): 96 96 h,u = flow 97 97 # h*s = h => uniform buoyancy s=1 => shallow-water 98 98 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, 100 100 self.s, self.ps, self.pk, self.hflux, self.qv, 101 101 self.dms, dh, self.dhs, du_fast, du_slow, … … 112 112 (True,caldyn_thermo,caldyn_eta, 113 113 g,BC.ptop,thermo.Rd,thermo.Cpd,thermo.p0,thermo.T0)) 114 ker.init_params()114 dynamico_init_params() 115 115 def _bwd_fast_slow_(self, flow, tau): 116 116 dm, dS, du_slow, du_fast, buf = self.fmass(), self.ftheta(), self.fu(), self.fu(), self.geopot 117 117 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, 119 119 self.s, self.ps, self.pk, self.hflux, self.qv, 120 120 self.dms, dm, dS, du_fast, du_slow, … … 133 133 g,BC.ptop,thermo.Rd,thermo.Cpd,thermo.p0,thermo.T0, 134 134 BC.pbot.max(), BC.rho_bot.max())) 135 ker.init_params()135 dynamico_init_params() 136 136 def bwd_fast_slow(self, flow, tau): 137 137 ftheta, fmass, fu, fw = self.ftheta, self.fmass, self.fu, self.fw … … 139 139 dPhi_slow, dPhi_fast, dW_slow, dW_fast = fw(), fw(), fw(), fw() 140 140 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, 142 142 self.s, self.ps, self.pk, self.hflux, self.qv, 143 143 self.dms, dm, dS, du_fast, du_slow, … … 269 269 'max_trisk_deg','max_primal_deg','max_dual_deg'), 270 270 (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, 272 273 dual_nb,dual_edge,dual_ne,dual_vertex, 273 274 left,right,down,up,trisk_deg,trisk) 274 275 print ('...done') 276 275 277 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') 277 282 def field_theta(self): return squeeze((self.nqdyn,self.ny,self.nx,self.llm)) 278 283 def field_mass(self): return squeeze((self.ny,self.nx,self.llm)) … … 384 389 max_trisk_deg, max_primal_deg, max_dual_deg) ) 385 390 386 ker. init_mesh(primal_deg,primal_edge,primal_ne,391 ker.dynamico_init_mesh(primal_deg,primal_edge,primal_ne, 387 392 dual_deg,dual_edge,dual_ne,dual_vertex, 388 393 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) 390 395 391 396 for edge in range(edge_num): … … 457 462 adjncy_loc, xadj_loc = [np.asarray(list(x), dtype=np.int32) for x in (adjncy_loc, xadj_loc)] 458 463 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) 460 465 return owner 461 466
Note: See TracChangeset
for help on using the changeset viewer.