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 13026 for NEMO/branches/2020/dev_r12973_AGRIF_CMEMS/src/OCE – NEMO

Ignore:
Timestamp:
2020-06-03T16:30:02+02:00 (4 years ago)
Author:
rblod
Message:

AGRIF with northfold and perio, see ticket #2129

Location:
NEMO/branches/2020/dev_r12973_AGRIF_CMEMS/src/OCE
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r12973_AGRIF_CMEMS/src/OCE/DOM/dom_oce.F90

    r12933 r13026  
    215215#if defined key_agrif 
    216216   LOGICAL, PUBLIC, PARAMETER ::   lk_agrif = .TRUE.    !: agrif flag 
     217   LOGICAL, PUBLIC            ::   lk_south, lk_north, lk_west, lk_east !: Child grid boundaries (interpolation or not) 
    217218#else 
    218219   LOGICAL, PUBLIC, PARAMETER ::   lk_agrif = .FALSE.   !: agrif flag 
  • NEMO/branches/2020/dev_r12973_AGRIF_CMEMS/src/OCE/DOM/domain.F90

    r12489 r13026  
    187187      ENDIF 
    188188      ! 
     189 
    189190      IF( lk_c1d         )   CALL cor_c1d       ! 1D configuration: Coriolis set at T-point 
    190191      ! 
     192 
     193#if defined key_agrif 
     194      IF( .NOT. Agrif_Root() ) CALL Agrif_Init_Domain( Kbb, Kmm, Kaa ) 
     195#endif 
    191196      IF( ln_meshmask    )   CALL dom_wri       ! Create a domain file 
    192197      IF( .NOT.ln_rstart )   CALL dom_ctl       ! Domain control 
     
    307312902   IF( ios >  0 )   CALL ctl_nam ( ios , 'namrun in configuration namelist' ) 
    308313      IF(lwm) WRITE ( numond, namrun ) 
     314 
     315#if defined key_agrif 
     316      IF( .NOT. Agrif_Root() ) THEN 
     317            nn_it000 = (Agrif_Parent(nn_it000)-1)*Agrif_IRhot() + 1 
     318            nn_itend =  Agrif_Parent(nn_itend)   *Agrif_IRhot() 
     319      ENDIF 
     320#endif 
    309321      ! 
    310322      IF(lwp) THEN                  ! control print 
     
    403415      IF(lwm) WRITE( numond, namdom ) 
    404416      ! 
     417#if defined key_agrif 
     418      IF( .NOT. Agrif_Root() ) THEN 
     419            rn_Dt = Agrif_Parent(rn_Dt) / Agrif_Rhot() 
     420      ENDIF 
     421#endif 
     422      ! 
    405423      IF(lwp) THEN 
    406424         WRITE(numout,*) 
  • NEMO/branches/2020/dev_r12973_AGRIF_CMEMS/src/OCE/DOM/istate.F90

    r12489 r13026  
    3535   USE lib_mpp         ! MPP library 
    3636   USE restart         ! restart 
     37#if defined key_agrif 
     38   USE agrif_oce_interp 
     39   USE agrif_oce 
     40#endif    
    3741 
    3842   IMPLICIT NONE 
     
    7074!!gm  Why not include in the first call of dta_tsd ?   
    7175!!gm  probably associated with the use of internal damping... 
    72                      CALL dta_tsd_init        ! Initialisation of T & S input data 
     76       CALL dta_tsd_init        ! Initialisation of T & S input data 
    7377!!gm to be moved in usrdef of C1D case 
    7478!      IF( lk_c1d )   CALL dta_uvd_init        ! Initialization of U & V input data 
     
    97101         ! 
    98102         IF( ln_tsd_init ) THEN                
    99             CALL dta_tsd( nit000, ts(:,:,:,:,Kbb) )       ! read 3D T and S data at nit000 
     103            IF( Agrif_root() ) THEN 
     104               CALL dta_tsd( nit000, ts(:,:,:,:,Kbb) )       ! read 3D T and S data at nit000 
     105               ssh(:,:,Kbb)   = 0._wp               ! set the ocean at rest 
     106               uu  (:,:,:,Kbb) = 0._wp 
     107               vv  (:,:,:,Kbb) = 0._wp   
     108#if defined key_agrif 
     109            ELSE 
     110               CALL agrif_istate( Kbb, Kmm, Kaa )  
     111#endif 
     112            ENDIF 
    100113            ! 
    101             ssh(:,:,Kbb)   = 0._wp               ! set the ocean at rest 
    102114            IF( ll_wd ) THEN 
    103115               ssh(:,:,Kbb) =  -ssh_ref  ! Added in 30 here for bathy that adds 30 as Iterative test CEOD  
     
    111123               END_2D 
    112124            ENDIF  
    113             uu  (:,:,:,Kbb) = 0._wp 
    114             vv  (:,:,:,Kbb) = 0._wp   
    115             ! 
     125             ! 
    116126         ELSE                                 ! user defined initial T and S 
    117127            CALL usr_def_istate( gdept(:,:,:,Kbb), tmask, ts(:,:,:,:,Kbb), uu(:,:,:,Kbb), vv(:,:,:,Kbb), ssh(:,:,Kbb)  )          
  • NEMO/branches/2020/dev_r12973_AGRIF_CMEMS/src/OCE/DYN/sshwzv.F90

    r12965 r13026  
    204204         ! Mask vertical velocity at first/last columns/row  
    205205         ! inside computational domain (cosmetic)  
    206          ! --- West --- ! 
    207          DO ji = mi0(2), mi1(2) 
    208             DO jj = 1, jpj 
    209                pww(ji,jj,:) = 0._wp  
     206         ! --- West --- !          
     207         IF( lk_west) THEN 
     208            DO ji = mi0(2), mi1(2) 
     209               DO jj = 1, jpj 
     210                  pww(ji,jj,:) = 0._wp  
     211               ENDDO 
    210212            ENDDO 
    211          ENDDO 
     213         ENDIF 
    212214         ! 
    213215         ! --- East --- ! 
    214          DO ji = mi0(jpiglo-1), mi1(jpiglo-1) 
    215             DO jj = 1, jpj 
    216                pww(ji,jj,:) = 0._wp 
     216         IF( lk_east) THEN 
     217            DO ji = mi0(jpiglo-1), mi1(jpiglo-1) 
     218               DO jj = 1, jpj 
     219                  pww(ji,jj,:) = 0._wp 
     220               ENDDO 
    217221            ENDDO 
    218          ENDDO 
     222         ENDIF 
    219223         ! 
    220224         ! --- South --- ! 
    221          DO jj = mj0(2), mj1(2) 
    222             DO ji = 1, jpi 
    223                pww(ji,jj,:) = 0._wp 
     225         IF( lk_south) THEN 
     226            DO jj = mj0(2), mj1(2) 
     227               DO ji = 1, jpi 
     228                  pww(ji,jj,:) = 0._wp 
     229               ENDDO 
    224230            ENDDO 
    225          ENDDO 
     231         ENDIF 
    226232         ! 
    227233         ! --- North --- ! 
    228          DO jj = mj0(jpjglo-1), mj1(jpjglo-1) 
    229             DO ji = 1, jpi 
    230                pww(ji,jj,:) = 0._wp 
     234         IF( lk_north) THEN 
     235            DO jj = mj0(jpjglo-1), mj1(jpjglo-1) 
     236               DO ji = 1, jpi 
     237                  pww(ji,jj,:) = 0._wp 
     238               ENDDO 
    231239            ENDDO 
    232          ENDDO 
     240         ENDIF 
     241         ! 
    233242      ENDIF  
    234243#endif  
  • NEMO/branches/2020/dev_r12973_AGRIF_CMEMS/src/OCE/FLO/floblk.F90

    r12649 r13026  
    4141      INTEGER, INTENT( in  ) ::   Kbb, Kmm ! ocean time level indices 
    4242      !! 
     43#ifndef key_agrif 
     44 
     45!RB super quick fix to compile with agrif 
     46 
    4347      INTEGER :: jfl              ! dummy loop arguments 
    4448      INTEGER :: ind, ifin, iloop 
     
    364368         GO TO 222 
    365369      ENDIF 
     370#endif 
    366371      ! 
    367372      ! 
  • NEMO/branches/2020/dev_r12973_AGRIF_CMEMS/src/OCE/LBC/lib_mpp.F90

    r12933 r13026  
    137137 
    138138   ! Communications summary report 
    139    CHARACTER(len=128), DIMENSION(:), ALLOCATABLE ::   crname_lbc                   !: names of lbc_lnk calling routines 
    140    CHARACTER(len=128), DIMENSION(:), ALLOCATABLE ::   crname_glb                   !: names of global comm calling routines 
    141    CHARACTER(len=128), DIMENSION(:), ALLOCATABLE ::   crname_dlg                   !: names of delayed global comm calling routines 
     139   CHARACTER(len=lca), DIMENSION(:), ALLOCATABLE ::   crname_lbc                   !: names of lbc_lnk calling routines 
     140   CHARACTER(len=lca), DIMENSION(:), ALLOCATABLE ::   crname_glb                   !: names of global comm calling routines 
     141   CHARACTER(len=lca), DIMENSION(:), ALLOCATABLE ::   crname_dlg                   !: names of delayed global comm calling routines 
    142142   INTEGER, PUBLIC                               ::   ncom_stp = 0                 !: copy of time step # istp 
    143143   INTEGER, PUBLIC                               ::   ncom_fsbc = 1                !: copy of sbc time step # nn_fsbc 
  • NEMO/branches/2020/dev_r12973_AGRIF_CMEMS/src/OCE/LBC/mppini.F90

    r12377 r13026  
    102102            &           'the domain is lay out for distributed memory computing!' ) 
    103103         ! 
     104#if defined key_agrif 
     105    IF (.NOT.agrif_root()) THEN 
     106      call agrif_nemo_init() 
     107    ENDIF 
     108#endif 
    104109   END SUBROUTINE mpp_init 
    105110 
     
    333338#if defined key_agrif 
    334339      IF( .NOT. Agrif_Root() ) THEN       ! AGRIF children: specific setting (cf. agrif_user.F90) 
    335          IF( jpiglo /= nbcellsx + 2 + 2*nbghostcells )   & 
    336             CALL ctl_stop( 'STOP', 'mpp_init: Agrif children requires jpiglo == nbcellsx + 2 + 2*nbghostcells' ) 
    337          IF( jpjglo /= nbcellsy + 2 + 2*nbghostcells )   & 
    338             CALL ctl_stop( 'STOP', 'mpp_init: Agrif children requires jpjglo == nbcellsy + 2 + 2*nbghostcells' ) 
    339          IF( ln_use_jattr )   CALL ctl_stop( 'STOP', 'mpp_init:Agrif children requires ln_use_jattr = .false. ' ) 
     340         CALL agrif_nemo_init() 
    340341      ENDIF 
    341342#endif 
  • NEMO/branches/2020/dev_r12973_AGRIF_CMEMS/src/OCE/OBS/diaobs.F90

    r12489 r13026  
    9494   TYPE(obs_prof), PUBLIC, POINTER, DIMENSION(:) ::   profdataqc   !: Profile data after quality control 
    9595 
    96    CHARACTER(len=6), PUBLIC, DIMENSION(:), ALLOCATABLE ::   cobstypesprof, cobstypessurf   !: Profile & surface obs types 
     96   CHARACTER(len=lca), PUBLIC, DIMENSION(:), ALLOCATABLE ::   cobstypesprof, cobstypessurf   !: Profile & surface obs types 
    9797 
    9898   !!---------------------------------------------------------------------- 
  • NEMO/branches/2020/dev_r12973_AGRIF_CMEMS/src/OCE/SBC/sbcmod.F90

    r12489 r13026  
    122122      !                             !* overwrite namelist parameter using CPP key information 
    123123#if defined key_agrif 
    124       IF( Agrif_Root() ) THEN                ! AGRIF zoom (cf r1242: possibility to run without ice in fine grid) 
    125          IF( lk_si3  )   nn_ice      = 2 
    126          IF( lk_cice )   nn_ice      = 3 
    127       ENDIF 
     124 !     IF( Agrif_Root() ) THEN                ! AGRIF zoom (cf r1242: possibility to run without ice in fine grid) 
     125 !        IF( lk_si3  )   nn_ice      = 2 
     126 !        IF( lk_cice )   nn_ice      = 3 
     127 !     ENDIF 
    128128!!GS: TBD 
    129129!#else 
  • NEMO/branches/2020/dev_r12973_AGRIF_CMEMS/src/OCE/STO/stopar.F90

    r12933 r13026  
    5656   INTEGER,          DIMENSION(:),       ALLOCATABLE :: sto3d_ord  ! order of autoregressive process 
    5757 
    58    CHARACTER(len=1), DIMENSION(:),       ALLOCATABLE :: sto2d_typ  ! nature of grid point (T, U, V, W, F, I) 
    59    CHARACTER(len=1), DIMENSION(:),       ALLOCATABLE :: sto3d_typ  ! nature of grid point (T, U, V, W, F, I) 
     58   CHARACTER(len=lca), DIMENSION(:),       ALLOCATABLE :: sto2d_typ  ! nature of grid point (T, U, V, W, F, I) 
     59   CHARACTER(len=lca), DIMENSION(:),       ALLOCATABLE :: sto3d_typ  ! nature of grid point (T, U, V, W, F, I) 
    6060   REAL(wp),         DIMENSION(:),       ALLOCATABLE :: sto2d_sgn  ! control of the sign accross the north fold 
    6161   REAL(wp),         DIMENSION(:),       ALLOCATABLE :: sto3d_sgn  ! control of the sign accross the north fold 
  • NEMO/branches/2020/dev_r12973_AGRIF_CMEMS/src/OCE/USR/usrdef_hgr.F90

    r12489 r13026  
    9595#if defined key_agrif 
    9696      ! ! Upper left longitude and latitude from parent: 
     97      ! Laurent: Should be modify in case of an east-west cyclic parent grid 
    9798      IF (.NOT.Agrif_root()) THEN 
    9899         zlam0 = zlam1 + Agrif_irhox() * REAL(Agrif_Parent(jpjglo)-2 , wp) * ze1deg * zcos_alpha  & 
  • NEMO/branches/2020/dev_r12973_AGRIF_CMEMS/src/OCE/USR/usrdef_nam.F90

    r12377 r13026  
    7474#if defined key_agrif 
    7575      IF( .NOT. Agrif_Root() ) THEN 
    76          kpi  = nbcellsx + 2 + 2*nbghostcells 
    77          kpj  = nbcellsy + 2 + 2*nbghostcells 
     76         kpi  = nbcellsx + 2 + 2*nbghostcells_x 
     77         kpj  = nbcellsy + 2 + 2*nbghostcells_y_s 
    7878      ENDIF 
    7979#endif 
  • NEMO/branches/2020/dev_r12973_AGRIF_CMEMS/src/OCE/nemogcm.F90

    r12933 r13026  
    143143#if defined key_agrif 
    144144      Kbb_a = Nbb; Kmm_a = Nnn; Krhs_a = Nrhs   ! agrif_oce module copies of time level indices 
    145       CALL Agrif_Declare_Var_dom   ! AGRIF: set the meshes for DOM 
    146       CALL Agrif_Declare_Var       !  "      "   "   "      "  DYN/TRA  
     145      CALL Agrif_Declare_Var       !  "      "   "   "      "  DYN/TRA 
    147146# if defined key_top 
    148147      CALL Agrif_Declare_Var_top   !  "      "   "   "      "  TOP 
    149 # endif 
    150 # if defined key_si3 
    151       CALL Agrif_Declare_Var_ice   !  "      "   "   "      "  Sea ice 
    152148# endif 
    153149#endif 
     
    399395      ! Initialise time level indices 
    400396      Nbb = 1; Nnn = 2; Naa = 3; Nrhs = Naa 
    401  
     397#if defined key_agrif 
     398      Kbb_a = Nbb; Kmm_a = Nnn; Krhs_a = Nrhs   ! agrif_oce module copies of time level indices 
     399#endif  
    402400      !                             !-------------------------------! 
    403401      !                             !  NEMO general initialization  ! 
     
    414412      IF( lk_c1d       )   CALL     c1d_init        ! 1D column configuration 
    415413                           CALL     wad_init        ! Wetting and drying options 
     414 
     415#if defined key_agrif 
     416     CALL Agrif_Declare_Var_ini   !  "      "   "   "      "  DOM 
     417#endif 
    416418                           CALL     dom_init( Nbb, Nnn, Naa, "OPA") ! Domain 
     419 
     420 
     421 
    417422      IF( ln_crs       )   CALL     crs_init(      Nnn )       ! coarsened grid: domain initialization  
    418423      IF( sn_cfctl%l_prtctl )   & 
     
    435440      ENDIF 
    436441      ! 
    437        
     442 
    438443                           CALL  istate_init( Nbb, Nnn, Naa )    ! ocean initial state (Dynamics and tracers) 
    439444 
  • NEMO/branches/2020/dev_r12973_AGRIF_CMEMS/src/OCE/par_kind.F90

    r10068 r13026  
    3131    
    3232   !                                                                !!** Integer ** 
    33    INTEGER, PUBLIC, PARAMETER ::   lc = 256                          !: Lenght of Character strings 
     33   INTEGER, PUBLIC, PARAMETER ::   lc  = 256                          !: Lenght of Character strings 
     34   INTEGER, PUBLIC, PARAMETER ::   lca = 400                          !: Lenght of Character arrays 
    3435 
    3536   !!---------------------------------------------------------------------- 
  • NEMO/branches/2020/dev_r12973_AGRIF_CMEMS/src/OCE/par_oce.F90

    r12377 r13026  
    4747   ! global domain size for AGRIF     !!! * total AGRIF computational domain * 
    4848   INTEGER, PUBLIC            ::   nbug_in_agrif_conv_do_not_remove_or_modify = 1 - 1 
    49    INTEGER, PUBLIC, PARAMETER ::   nbghostcells = 3                             !: number of ghost cells 
    50    INTEGER, PUBLIC            ::   nbcellsx   ! = jpiglo - 2 - 2*nbghostcells   !: number of cells in i-direction 
    51    INTEGER, PUBLIC            ::   nbcellsy   ! = jpjglo - 2 - 2*nbghostcells   !: number of cells in j-direction 
     49   INTEGER, PUBLIC, PARAMETER ::   nbghostcells = 3 !: number of ghost cells: default value 
     50   INTEGER, PUBLIC            ::   nbghostcells_x   !: number of ghost cells in i-direction 
     51   INTEGER, PUBLIC            ::   nbghostcells_y_s   !: number of ghost cells in j-direction at south 
     52   INTEGER, PUBLIC            ::   nbghostcells_y_n   !: number of ghost cells in j-direction at north                       !: number of ghost cells 
     53   INTEGER, PUBLIC            ::   nbcellsx   ! = jpiglo - 2 - 2*nbghostcells_x   !: number of cells in i-direction 
     54   INTEGER, PUBLIC            ::   nbcellsy   ! = jpjglo - 2 - 2*nbghostcells-y   !: number of cells in j-direction 
    5255 
    5356   ! local domain size                !!! * local computational domain * 
Note: See TracChangeset for help on using the changeset viewer.