Ignore:
Timestamp:
04/09/18 15:22:10 (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/src/unstructured/timestep_unstructured.F90

    r683 r688  
    1111  SAVE 
    1212 
    13 #define BINDC_(thename) BIND(C, name=#thename) 
    14 #define BINDC(thename) BINDC_(dynamico_ ## thename) 
    15  
    16 #define DBL REAL(C_DOUBLE) 
    17 #define DOUBLE1(m) DBL, DIMENSION(m) 
    18 #define DOUBLE2(m,n) DBL, DIMENSION(m,n) 
    19 #define DOUBLE3(m,n,p) DBL, DIMENSION(m,n,p) 
    20 #define DOUBLE4(m,n,p,q) DBL, DIMENSION(m,n,p,q) 
    21 #define INDEX INTEGER(C_INT) 
    22  
    2313#ifdef CPP_USING_XIOS 
    2414  TYPE(xios_context) :: ctx_hdl 
     
    2717CONTAINS 
    2818 
    29 #define FIELD_PS      DOUBLE1(primal_num) 
    30 #define FIELD_MASS    DOUBLE2(llm, primal_num) 
    31 #define FIELD_Z       DOUBLE2(llm, dual_num) 
    32 #define FIELD_U       DOUBLE2(llm, edge_num) 
    33 #define FIELD_UL      DOUBLE2(llm+1, edge_num) 
    34 #define FIELD_THETA   DOUBLE3(llm, primal_num, nqdyn) 
    35 #define FIELD_GEOPOT  DOUBLE2(llm+1, primal_num) 
     19#include "unstructured.h90" 
    3620 
    3721#define HASNAN(field) (ANY(.NOT.ABS(field)<1e20)) 
     
    4125                                 dmass_col,drhodz,dtheta_rhodz,du_fast,du_slow, & 
    4226                                 dPhi_fast, dPhi_slow, dW_fast, dW_slow) BINDC(caldyn_unstructured) ! OUT : tendencies 
    43     DBL, VALUE :: tau 
     27    NUM, VALUE :: tau 
    4428    FIELD_MASS   :: rhodz, drhodz, pk, berni          ! IN, OUT, DIAG 
    4529    FIELD_THETA  :: theta_rhodz, dtheta_rhodz, theta  ! IN, OUT, DIAG 
     
    5438    FIELD_UL     :: bufu1, bufu2, bufu3,bufu4 
    5539 
    56     DBL          :: time1,time2 
     40    TIME          :: time1,time2 
    5741    INTEGER :: ij 
    5842     
     
    124108    FIELD_GEOPOT :: geopot, w, wflux                 ! IN, INOUT, DIAG 
    125109    FIELD_Z      :: qv                               ! DIAG 
    126     DOUBLE2(       primal_num, max_nb_stage) :: dmass_col    ! OUT 
    127     DOUBLE3(llm,   primal_num, max_nb_stage) :: drhodz   ! OUT 
    128     DOUBLE4(llm,   primal_num, nqdyn, max_nb_stage) :: dtheta_rhodz ! OUT 
    129     DOUBLE3(llm,   edge_num,   max_nb_stage) :: du_fast,du_slow ! OUT 
    130     DOUBLE3(llm+1, primal_num, max_nb_stage) :: & 
     110    NUM2(       primal_num, max_nb_stage) :: dmass_col    ! OUT 
     111    NUM3(llm,   primal_num, max_nb_stage) :: drhodz   ! OUT 
     112    NUM4(llm,   primal_num, nqdyn, max_nb_stage) :: dtheta_rhodz ! OUT 
     113    NUM3(llm,   edge_num,   max_nb_stage) :: du_fast,du_slow ! OUT 
     114    NUM3(llm+1, primal_num, max_nb_stage) :: & 
    131115         dPhi_fast, dPhi_slow, dW_fast, dW_slow      ! OUT 
    132116    ! buffers for fields that need to be shared among OpenMP threads 
     
    134118    FIELD_GEOPOT :: bufm1, bufm2, bufm3 
    135119    FIELD_UL     :: bufu1, bufu2, bufu3,bufu4 
    136     DBL       :: time1,time2 
     120    TIME       :: time1,time2 
    137121    INTEGER :: step, stage, iq, ij 
    138122     
     
    240224  SUBROUTINE update(j,sz,clj,field,dfield) 
    241225    INTEGER :: j, sz ! stage in ARK scheme, field size 
    242     DOUBLE2(max_nb_stage,max_nb_stage) :: clj ! modified Butcher tableau 
    243     DOUBLE1(sz) :: field 
    244     DOUBLE2(sz, max_nb_stage) :: dfield 
     226    NUM2(max_nb_stage,max_nb_stage) :: clj ! modified Butcher tableau 
     227    NUM1(sz) :: field 
     228    NUM2(sz, max_nb_stage) :: dfield 
    245229    ! 
    246230    INTEGER :: l, ij 
Note: See TracChangeset for help on using the changeset viewer.