New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 3735 – NEMO

Changeset 3735


Ignore:
Timestamp:
2012-12-12T22:49:39+01:00 (11 years ago)
Author:
cetlod
Message:

dev_r3411_CNRS4_IOCRS : some improvments

Location:
branches/2013/dev_r3411_CNRS4_IOCRS/NEMOGCM/NEMO/OPA_SRC/CRS
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • branches/2013/dev_r3411_CNRS4_IOCRS/NEMOGCM/NEMO/OPA_SRC/CRS/crs.F90

    r3622 r3735  
    679679      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in)     :: p_fse3     ! Parent grid vertical level thickness (fse3u, fse3v) 
    680680      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in)     :: p_pfield   ! U or V on parent grid 
    681       REAL(wp), DIMENSION(:,:,:), INTENT(in), OPTIONAL :: p_surf_crs ! Coarse grid area-weighting denominator     
     681      REAL(wp), DIMENSION(jpi_crs,jpj_crs,jpk), INTENT(in), OPTIONAL :: p_surf_crs ! Coarse grid area-weighting denominator     
    682682 
    683683      REAL(wp), DIMENSION(jpi_crs,jpj_crs,jpk), INTENT(out)  :: p_cfield3d ! Coarse grid box 3D quantity  
     
    995995      IF( nperio /= 0 ) THEN 
    996996         IF ( ijpk == 1 ) THEN 
    997             IF ( PRESENT(p_cfield2d) ) CALL crs_lbc_lnk( cd_type,psgn,pt2d=p_cfield2d ) 
     997            IF ( PRESENT(p_cfield2d) ) CALL crs_lbc_lnk( cd_type,zsgn,pt2d=p_cfield2d ) 
    998998         ELSE 
    999999            IF ( PRESENT(p_cfield3d) ) THEN 
    1000                CALL crs_lbc_lnk( cd_type,psgn,pt3d1=p_cfield3d ) 
     1000               CALL crs_lbc_lnk( cd_type,zsgn,pt3d1=p_cfield3d ) 
    10011001            ENDIF 
    10021002         ENDIF 
  • branches/2013/dev_r3411_CNRS4_IOCRS/NEMOGCM/NEMO/OPA_SRC/CRS/crs_dom.F90

    r3727 r3735  
    5656      REAL(wp), DIMENSION(:,:),   ALLOCATABLE :: e1v_crs, e2v_crs ! horizontal scale factors grid type V 
    5757      REAL(wp), DIMENSION(:,:),   ALLOCATABLE :: e1f_crs, e2f_crs ! horizontal scale factors grid type F 
    58       REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: e3t_crs, e3u_crs, e3v_crs, e3w_crs 
    59       REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: fse3t_crs, fse3u_crs, fse3v_crs, fse3w_crs 
     58      REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: e3t_crs, e3u_crs, e3v_crs, e3f_crs, e3w_crs 
     59      REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: fse3t_crs, fse3u_crs, fse3v_crs, fse3f_crs, fse3w_crs 
    6060      REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: fse3t_n_crs, fse3t_b_crs, fse3t_a_crs 
    6161 
     
    102102       
    103103      ! Physical and dynamical ocean fields for output or passing to TOP, time-mean fields 
    104 !      REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE      :: tsn_crs, tsb_crs, tsa_crs 
    105 !      REAL(wp), DIMENSION(:,:,:)  , ALLOCATABLE      :: un_crs, vn_crs, wn_crs 
    106 !      REAL(wp), DIMENSION(:,:,:)  , ALLOCATABLE      :: ut_crs, vt_crs, wt_crs, us_crs, vs_crs, ws_crs  
    107 !      REAL(wp), DIMENSION(:,:,:)  , ALLOCATABLE      :: rhd_crs, rhop_crs, hdivn_crs     
    108 !      REAL(wp), DIMENSION(:,:)    , ALLOCATABLE      :: sshb_crs, sshn_crs, ssha_crs     
    109 !      REAL(wp), DIMENSION(:,:)    , ALLOCATABLE      :: sshun_crs, sshvn_crs, sshfn_crs  
    110 !      REAL(wp), DIMENSION(:,:)    , ALLOCATABLE      :: sshub_crs, sshvb_crs, sshua_crs, sshva_crs  
    111 !      REAL(wp), DIMENSION(:,:)    , ALLOCATABLE      :: hu_crs, hv_crs  
    112 !      REAL(wp), DIMENSION(:,:)    , ALLOCATABLE      :: hdivbt_crs 
    113 !      REAL(wp), DIMENSION(:,:)    , ALLOCATABLE      :: ssh_b_crs, ssh_a_crs, ssh_un_crs, ssh_vn_crs        ! instantaneous fields 
     104      REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE      :: tsn_crs 
     105      REAL(wp), DIMENSION(:,:,:)  , ALLOCATABLE      :: un_crs, vn_crs, wn_crs 
     106      REAL(wp), DIMENSION(:,:,:)  , ALLOCATABLE      :: ut_crs, vt_crs, wt_crs, us_crs, vs_crs, ws_crs  
     107      REAL(wp), DIMENSION(:,:,:)  , ALLOCATABLE      :: rhd_crs, rhop_crs, hdivn_crs     
     108      REAL(wp), DIMENSION(:,:)    , ALLOCATABLE      :: sshb_crs, sshn_crs, ssha_crs     
     109      REAL(wp), DIMENSION(:,:)    , ALLOCATABLE      :: sshun_crs, sshvn_crs, sshfn_crs  
     110      REAL(wp), DIMENSION(:,:)    , ALLOCATABLE      :: sshub_crs, sshvb_crs, sshua_crs, sshva_crs  
     111      REAL(wp), DIMENSION(:,:)    , ALLOCATABLE      :: hu_crs, hv_crs  
     112      REAL(wp), DIMENSION(:,:)    , ALLOCATABLE      :: hdivbt_crs 
     113      REAL(wp), DIMENSION(:,:)    , ALLOCATABLE      :: ssh_b_crs, ssh_a_crs, ssh_un_crs, ssh_vn_crs        ! instantaneous fields 
    114114 
    115115 
    116116      !  
    117117      ! Surface fluxes to pass to TOP 
    118  !     REAL(wp), DIMENSION(:,:)  , ALLOCATABLE      ::  utau_crs, vtau_crs, wndm_crs, qsr_crs 
    119  !     REAL(wp), DIMENSION(:,:)  , ALLOCATABLE      ::  del_emp_crs, sum_emp_crs 
    120  !     REAL(wp), DIMENSION(:,:)  , ALLOCATABLE      ::  emp_crs, emp_b_crs, emps_crs  
    121  !     REAL(wp), DIMENSION(:,:)  , ALLOCATABLE      ::  rnf_crs, fr_i_crs, h_rnf_crs 
     118      REAL(wp), DIMENSION(:,:)  , ALLOCATABLE      ::  utau_crs, vtau_crs, wndm_crs, qsr_crs 
     119      REAL(wp), DIMENSION(:,:)  , ALLOCATABLE      ::  del_emp_crs, sum_emp_crs 
     120      REAL(wp), DIMENSION(:,:)  , ALLOCATABLE      ::  emp_crs, emp_b_crs, emps_crs  
     121      REAL(wp), DIMENSION(:,:)  , ALLOCATABLE      ::  rnf_crs, fr_i_crs, h_rnf_crs 
    122122     
    123123      ! 
    124124      ! Lateral diffusivity (tracers) to pass to TOP 
    125 !      REAL(wp)                                     ::  rldf_crs, rn_aht_0_crs, aht0_crs, ahtb0_crs  
    126  
    127 !#if defined key_traldf_c3d 
    128 !      REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:,:) ::   ahtt_crs, ahtu_crs, ahtv_crs, ahtw_crs   !: 3D coefficients at T-,U-,V-,W-points 
    129 !      REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:,:) ::   aeiu_crs, aeiv_crs, aeiw_crs    
    130 !#elif defined key_traldf_c2d 
    131 !      REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:)   ::   ahtt_crs, ahtu_crs, ahtv_crs, ahtw_crs   !: 2D coefficients at T-,U-,V-,W-points 
    132 !      REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:)   ::   aeiu_crs, aeiv_crs, aeiw_crs    
    133 !#elif defined key_traldf_c1d 
    134 !      REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:)     ::   ahtt_crs, ahtu_crs, ahtv_crs, ahtw_crs   !: 1D coefficients at T-,U-,V-,W-points 
    135 !      REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:)     ::   aeiu_crs, aeiv_crs, aeiw_crs    
    136 !#else 
    137 !      REAL(wp), PUBLIC                                ::   ahtt_crs, ahtu_crs, ahtv_crs, ahtw_crs   !: scalar coefficients at T-,U-,V-,W-points 
    138 !#endif 
     125      REAL(wp)                                     ::  rldf_crs, rn_aht_0_crs, aht0_crs, ahtb0_crs  
     126 
     127#if defined key_traldf_c3d 
     128      REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:,:) ::   ahtt_crs, ahtu_crs, ahtv_crs, ahtw_crs   !: 3D coefficients at T-,U-,V-,W-points 
     129      REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:,:) ::   aeiu_crs, aeiv_crs, aeiw_crs    
     130#elif defined key_traldf_c2d 
     131      REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:)   ::   ahtt_crs, ahtu_crs, ahtv_crs, ahtw_crs   !: 2D coefficients at T-,U-,V-,W-points 
     132      REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:)   ::   aeiu_crs, aeiv_crs, aeiw_crs    
     133#elif defined key_traldf_c1d 
     134      REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:)     ::   ahtt_crs, ahtu_crs, ahtv_crs, ahtw_crs   !: 1D coefficients at T-,U-,V-,W-points 
     135      REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:)     ::   aeiu_crs, aeiv_crs, aeiw_crs    
     136#else 
     137      REAL(wp), PUBLIC                                ::   ahtt_crs, ahtu_crs, ahtv_crs, ahtw_crs   !: scalar coefficients at T-,U-,V-,W-points 
     138#endif 
    139139 
    140140  
    141141      ! Vertical diffusion 
    142 !      REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:,:)  ::  avt_crs           !: vert. diffusivity coef. [m2/s] at w-point for temp   
    143 !# if defined key_zdfddm 
    144 !      REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:,:)  ::  avs_crs           !: salinity vertical diffusivity coeff. [m2/s] at w-point 
    145 !# endif 
     142      REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:,:)  ::  avt_crs           !: vert. diffusivity coef. [m2/s] at w-point for temp   
     143# if defined key_zdfddm 
     144      REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:,:)  ::  avs_crs           !: salinity vertical diffusivity coeff. [m2/s] at w-point 
     145# endif 
    146146 
    147147      ! Mixing and Mixed Layer Depth 
    148 !      INTEGER,  PUBLIC, ALLOCATABLE, DIMENSION(:,:)    ::  nmln_crs, hmld_crs, hmlp_crs, hmlpt_crs                        
     148      INTEGER,  PUBLIC, ALLOCATABLE, DIMENSION(:,:)    ::  nmln_crs, hmld_crs, hmlp_crs, hmlpt_crs                        
    149149 
    150150      ! Direction of lateral diffusion 
     
    160160      !!------------------------------------------------------------------- 
    161161      !! Local variables 
    162       INTEGER, DIMENSION(10) :: ierr 
     162      INTEGER, DIMENSION(14) :: ierr 
    163163 
    164164      ierr(:) = 0 
     
    190190         &      e3t_crs(jpi_crs,jpj_crs,jpk)    , e3w_crs(jpi_crs,jpj_crs,jpk)   , &  
    191191         &      e3u_crs(jpi_crs,jpj_crs,jpk)    , e3v_crs(jpi_crs,jpj_crs,jpk)   , & 
     192         &      e3f_crs(jpi_crs,jpj_crs,jpk)    , fse3f_crs(jpi_crs,jpj_crs,jpk) , &  
    192193         &      fse3t_b_crs(jpi_crs,jpj_crs,jpk), fse3t_n_crs(jpi_crs,jpj_crs,jpk),& 
    193194         &      fse3t_a_crs(jpi_crs,jpj_crs,jpk), STAT=ierr(6)) 
     
    210211 
    211212 
    212 !      ALLOCATE( un_crs(jpi_crs,jpj_crs,jpk) ,   vn_crs(jpi_crs,jpj_crs,jpk) , & 
    213 !         &      wn_crs(jpi_crs,jpj_crs,jpk) ,                                 & 
    214 !         &      ut_crs(jpi_crs,jpj_crs,jpk) ,   vt_crs(jpi_crs,jpj_crs,jpk) , & 
    215 !         &      us_crs(jpi_crs,jpj_crs,jpk) ,   vs_crs(jpi_crs,jpj_crs,jpk) , & 
    216 !         &      wt_crs(jpi_crs,jpj_crs,jpk) ,   ws_crs(jpi_crs,jpj_crs,jpk) , & 
    217 !         &     rhd_crs(jpi_crs,jpj_crs,jpk) , rhop_crs(jpi_crs,jpj_crs,jpk) , & 
    218 !         &      STAT=ierr(11)) 
    219  
    220 !      ALLOCATE( sshb_crs(jpi_crs,jpj_crs)   , sshn_crs(jpi_crs,jpj_crs)   , & 
    221 !         &      sshun_crs(jpi_crs,jpj_crs)  , sshvn_crs(jpi_crs,jpj_crs)  , & 
    222 !         &      sshfn_crs(jpi_crs,jpj_crs)  , emp_crs(jpi_crs,jpj_crs)    , & 
    223 !         &      del_emp_crs(jpi_crs,jpj_crs), sum_emp_crs(jpi_crs,jpj_crs), & 
    224 !         &      emp_b_crs(jpi_crs,jpj_crs)  , emps_crs(jpi_crs,jpj_crs)   , & 
    225 !         &      ssh_b_crs(jpi_crs,jpj_crs)  , ssh_a_crs(jpi_crs,jpj_crs)  , & 
    226 !         &      STAT=ierr(12)  ) 
     213      ALLOCATE( un_crs(jpi_crs,jpj_crs,jpk) ,   vn_crs(jpi_crs,jpj_crs,jpk) , & 
     214         &      wn_crs(jpi_crs,jpj_crs,jpk) ,                                 & 
     215         &      ut_crs(jpi_crs,jpj_crs,jpk) ,   vt_crs(jpi_crs,jpj_crs,jpk) , & 
     216         &      us_crs(jpi_crs,jpj_crs,jpk) ,   vs_crs(jpi_crs,jpj_crs,jpk) , & 
     217         &      wt_crs(jpi_crs,jpj_crs,jpk) ,   ws_crs(jpi_crs,jpj_crs,jpk) , & 
     218         &      rhd_crs(jpi_crs,jpj_crs,jpk) , rhop_crs(jpi_crs,jpj_crs,jpk) , & 
     219         &      hdivn_crs(jpi_crs,jpj_crs,jpk), & 
     220         &      STAT=ierr(11)) 
     221 
     222      ALLOCATE( sshb_crs(jpi_crs,jpj_crs)   , sshn_crs(jpi_crs,jpj_crs)   , & 
     223         &      sshun_crs(jpi_crs,jpj_crs)  , sshvn_crs(jpi_crs,jpj_crs)  , & 
     224         &      sshfn_crs(jpi_crs,jpj_crs)  , emp_crs(jpi_crs,jpj_crs)    , & 
     225         &      del_emp_crs(jpi_crs,jpj_crs), sum_emp_crs(jpi_crs,jpj_crs), & 
     226         &      emp_b_crs(jpi_crs,jpj_crs)  , emps_crs(jpi_crs,jpj_crs)   , & 
     227         &      ssh_b_crs(jpi_crs,jpj_crs)  , ssh_a_crs(jpi_crs,jpj_crs)  , & 
     228         &      ssh_un_crs(jpi_crs,jpj_crs) , ssh_vn_crs(jpi_crs,jpj_crs)  , & 
     229         &      STAT=ierr(12)  ) 
    227230  
    228 !      ALLOCATE( tsn_crs(jpi_crs,jpj_crs,jpk,jpts) , tsb_crs(jpi_crs,jpj_crs,jpk,jpts) , & 
    229 !         &     tsa_crs(jpi_crs,jpj_crs,jpk,jpts) , STAT=ierr(13) ) 
     231      ALLOCATE( tsn_crs(jpi_crs,jpj_crs,jpk,jpts), avt_crs(jpi_crs,jpj_crs,jpk),    & 
     232# if defined key_zdfddm 
     233         &      avs_crs(jpi_crs,jpj_crs,jpk),    & 
     234# endif 
     235         &      STAT=ierr(13) ) 
     236 
     237      ALLOCATE( nmln_crs(jpi_crs,jpj_crs) , hmld_crs(jpi_crs,jpj_crs) , & 
     238         &      hmlp_crs(jpi_crs,jpj_crs) , hmlpt_crs(jpi_crs,jpj_crs) , STAT=ierr(14) ) 
    230239 
    231240      crs_dom_alloc = MAXVAL(ierr) 
  • branches/2013/dev_r3411_CNRS4_IOCRS/NEMOGCM/NEMO/OPA_SRC/CRS/crsini.F90

    r3727 r3735  
    6767      REAL(wp) :: zrestx, zresty                      ! for determining odd or even reduction factor 
    6868      REAL(wp), DIMENSION(:,:),   ALLOCATABLE :: zmbk 
    69       REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: zfse3t, zfse3u, zfse3v, zfse3w, zfse3t_n, zfse3t_b 
     69      REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: zfse3t, zfse3u, zfse3v, zfse3f 
     70      REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: zfse3w, zfse3t_n, zfse3t_b 
    7071      LOGICAL  :: llok 
    7172 
     
    433434     !    3.d.2   Vertical scale factors 
    434435 
    435      ALLOCATE( zfse3t(jpi,jpj,jpk),   zfse3u(jpi,jpj,jpk),   zfse3v(jpi,jpj,jpk), & 
     436     ALLOCATE( zfse3t(jpi,jpj,jpk),   zfse3u(jpi,jpj,jpk),   zfse3v(jpi,jpj,jpk), zfse3f(jpi,jpj,jpk), & 
    436437        &      zfse3w(jpi,jpj,jpk), zfse3t_n(jpi,jpj,jpk), zfse3t_b(jpi,jpj,jpk)  ) 
    437438     zfse3t(:,:,:) = fse3t(:,:,:) 
    438439     zfse3u(:,:,:) = fse3u(:,:,:) 
    439440     zfse3v(:,:,:) = fse3v(:,:,:) 
     441     zfse3f(:,:,:) = fse3f(:,:,:) 
    440442     zfse3w(:,:,:) = fse3w(:,:,:) 
    441443 
     
    444446     CALL crsfun( p_e1e2t=e1e2t, cd_type='U', cd_op='MIN', p_cmask=umask_crs, p_ptmask=umask, p_pfield3d_1=zfse3u, p_cfield3d=e3u_crs ) 
    445447     CALL crsfun( p_e1e2t=e1e2t, cd_type='V', cd_op='MIN', p_cmask=vmask_crs, p_ptmask=vmask, p_pfield3d_1=zfse3v, p_cfield3d=e3v_crs ) 
     448     CALL crsfun( p_e1e2t=e1e2t, cd_type='F', cd_op='MIN', p_cmask=fmask_crs, p_ptmask=fmask, p_pfield3d_1=zfse3f, p_cfield3d=e3f_crs ) 
    446449 
    447450     ! Reset 0 to e3t_0 or e3w_0 
     
    453456              IF ( e3u_crs(ji,jj,jk) == 0 ) e3u_crs(ji,jj,jk) = e3t_0(jk) 
    454457              IF ( e3v_crs(ji,jj,jk) == 0 ) e3v_crs(ji,jj,jk) = e3t_0(jk) 
     458              IF ( e3f_crs(ji,jj,jk) == 0 ) e3f_crs(ji,jj,jk) = e3t_0(jk) 
    455459           ENDDO 
    456460        ENDDO 
     
    501505     !--------------------------------------------------------- 
    502506      DEALLOCATE( zmbk ) 
    503       DEALLOCATE( zfse3t, zfse3u, zfse3v, zfse3w ) 
    504       DEALLOCATE( zfse3t_n, zfse3t_b )  
     507      DEALLOCATE( zfse3t, zfse3u, zfse3v, zfse3f ) 
     508      DEALLOCATE( zfse3w, zfse3t_n, zfse3t_b )  
    505509 
    506510       
Note: See TracChangeset for help on using the changeset viewer.