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 15280 for branches/UKMO/dev_r5518_GO6_package_FOAMv14 – NEMO

Ignore:
Timestamp:
2021-09-23T16:07:03+02:00 (3 years ago)
Author:
jwhile
Message:

Merged in changes for 1d detailed in utils ticket 487

Location:
branches/UKMO/dev_r5518_GO6_package_FOAMv14/NEMOGCM/NEMO/OPA_SRC
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_GO6_package_FOAMv14/NEMOGCM/NEMO/OPA_SRC/C1D/step_c1d.F90

    r10302 r15280  
    1010   !!---------------------------------------------------------------------- 
    1111   !!   'key_c1d'                                       1D Configuration 
    12    !!----------------------------------------------------------------------   
     12   !!---------------------------------------------------------------------- 
    1313   !!   stp_c1d        : NEMO system time-stepping in c1d case 
    1414   !!---------------------------------------------------------------------- 
    15    USE step_oce        ! time stepping definition modules  
     15   USE step_oce        ! time stepping definition modules 
    1616#if defined key_top 
    1717   USE trcstp          ! passive tracer time-stepping      (trc_stp routine) 
     
    2020   USE dynnxt_c1d      ! time-stepping                    (dyn_nxt routine) 
    2121   USE dyndmp          ! U & V momentum damping           (dyn_dmp routine) 
    22    USE restart         ! restart  
     22   USE restart         ! restart 
    2323 
    2424   IMPLICIT NONE 
     
    4040      !!---------------------------------------------------------------------- 
    4141      !!                     ***  ROUTINE stp_c1d  *** 
    42       !!                       
     42      !! 
    4343      !! ** Purpose :  - Time stepping of SBC including LIM (dynamic and thermodynamic eqs.) 
    4444      !!               - Time stepping of OPA (momentum and active tracer eqs.) 
    4545      !!               - Time stepping of TOP (passive tracer eqs.) 
    46       !!  
    47       !! ** Method  : -1- Update forcings and data   
    48       !!              -2- Update vertical ocean physics  
    49       !!              -3- Compute the t and s trends  
    50       !!              -4- Update t and s  
     46      !! 
     47      !! ** Method  : -1- Update forcings and data 
     48      !!              -2- Update vertical ocean physics 
     49      !!              -3- Compute the t and s trends 
     50      !!              -4- Update t and s 
    5151      !!              -5- Compute the momentum trends 
    5252      !!              -6- Update the horizontal velocity 
     
    7676                         CALL bn2( tsb, rab_b, rn2b ) ! before Brunt-Vaisala frequency 
    7777                         CALL bn2( tsn, rab_n, rn2  ) ! now    Brunt-Vaisala frequency 
    78       !  VERTICAL PHYSICS    
     78      !  VERTICAL PHYSICS 
    7979                         CALL zdf_bfr( kstp )         ! bottom friction 
    8080      !                                               ! Vertical eddy viscosity and diffusivity coefficients 
     
    9898      IF( lk_zdfddm .AND. .NOT. lk_zdfkpp )   & 
    9999         &               CALL zdf_ddm( kstp )         ! double diffusive mixing 
    100           
     100 
    101101                         CALL zdf_mxl( kstp )         ! mixed layer depth 
    102102 
     
    125125                        tsa(:,:,:,:) = 0._wp       ! set tracer trends to zero 
    126126 
     127      IF( lk_asminc .AND. ln_asmiau .AND.  ln_trainc )   & 
     128                        CALL tra_asm_inc( kstp )   ! apply tracer assimilation increment 
    127129                        CALL tra_sbc( kstp )       ! surface boundary condition 
    128130      IF( ln_traqsr )   CALL tra_qsr( kstp )       ! penetrative solar radiation qsr 
     
    141143                        ua(:,:,:) = 0._wp          ! set dynamics trends to zero 
    142144                        va(:,:,:) = 0._wp 
     145 
     146      IF( ln_bkgwri )   CALL asm_bkg_wri( kstp )     ! output background fields 
    143147 
    144148      IF( ln_dyndmp )   CALL dyn_dmp    ( kstp )   ! internal damping trends- momentum 
  • branches/UKMO/dev_r5518_GO6_package_FOAMv14/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90

    r11442 r15280  
    2929   !!            3.3.1! 2011-01  (A. R. Porter, STFC Daresbury) dynamical allocation 
    3030   !!            3.4  ! 2011-11  (C. Harris) decomposition changes for running with CICE 
    31    !!                 ! 2012-05  (C. Calone, J. Simeon, G. Madec, C. Ethe) Add grid coarsening  
     31   !!                 ! 2012-05  (C. Calone, J. Simeon, G. Madec, C. Ethe) Add grid coarsening 
    3232   !!---------------------------------------------------------------------- 
    3333 
     
    5959   USE phycst          ! physical constant                  (par_cst routine) 
    6060   USE trdini          ! dyn/tra trends initialization     (trd_init routine) 
    61    USE asminc          ! assimilation increments      
     61   USE asminc          ! assimilation increments 
    6262   USE asmbkg          ! writing out state trajectory 
    6363   USE asmbgc          ! biogeochemical assimilation increments 
     
    6969   USE icbini          ! handle bergs, initialisation 
    7070   USE icbstp          ! handle bergs, calving, themodynamics and transport 
    71    USE sbccpl  
     71   USE sbccpl 
    7272   USE cpl_oasis3      ! OASIS3 coupling 
    7373   USE c1d             ! 1D configuration 
     
    8484   USE sbctide, ONLY: lk_tide 
    8585   USE crsini          ! initialise grid coarsening utility 
    86    USE lbcnfd, ONLY: isendto, nsndto, nfsloop, nfeloop ! Setup of north fold exchanges  
     86   USE lbcnfd, ONLY: isendto, nsndto, nfsloop, nfeloop ! Setup of north fold exchanges 
    8787   USE sbc_oce, ONLY: lk_oasis 
    8888   USE stopack 
     
    132132#if defined key_agrif 
    133133      CALL Agrif_Declare_Var_dom   ! AGRIF: set the meshes for DOM 
    134       CALL Agrif_Declare_Var       !  "      "   "   "      "  DYN/TRA  
     134      CALL Agrif_Declare_Var       !  "      "   "   "      "  DYN/TRA 
    135135# if defined key_top 
    136136      CALL Agrif_Declare_Var_top   !  "      "   "   "      "  TOP 
     
    150150      !                            !-----------------------! 
    151151      istp = nit000 
     152 
    152153#if defined key_c1d 
    153          DO WHILE ( istp <= nitend .AND. nstop == 0 ) 
    154             CALL stp_c1d( istp ) 
    155             istp = istp + 1 
    156          END DO 
     154 
     155      IF( lk_asminc ) THEN 
     156         IF( ln_bkgwri ) CALL asm_bkg_wri( nit000 - 1 )    ! Output background fields 
     157         IF( ln_asmdin ) THEN                        ! Direct initialization 
     158            IF( ln_trainc ) CALL tra_asm_inc( nit000 - 1 )    ! Tracers 
     159         ENDIF 
     160      ENDIF 
     161 
     162      DO WHILE ( istp <= nitend .AND. nstop == 0 ) 
     163         CALL stp_c1d( istp ) 
     164         istp = istp + 1 
     165      END DO 
    157166#else 
    158           IF( lk_asminc ) THEN 
    159              IF( ln_bkgwri ) CALL asm_bkg_wri( nit000 - 1 )    ! Output background fields 
    160              IF( ln_asmdin ) THEN                        ! Direct initialization 
    161                 IF( ln_trainc ) CALL tra_asm_inc( nit000 - 1 )    ! Tracers 
    162                 IF( ln_dyninc ) CALL dyn_asm_inc( nit000 - 1 )    ! Dynamics 
    163                 IF( ln_sshinc ) CALL ssh_asm_inc( nit000 - 1 )    ! SSH 
    164                 IF( lk_bgcinc ) CALL bgc_asm_inc( nit000 - 1 )    ! BGC 
    165              ENDIF 
    166           ENDIF 
     167 
     168      IF( lk_asminc ) THEN 
     169         IF( ln_bkgwri ) CALL asm_bkg_wri( nit000 - 1 )    ! Output background fields 
     170         IF( ln_asmdin ) THEN                        ! Direct initialization 
     171            IF( ln_trainc ) CALL tra_asm_inc( nit000 - 1 )    ! Tracers 
     172            IF( ln_dyninc ) CALL dyn_asm_inc( nit000 - 1 )    ! Dynamics 
     173            IF( ln_sshinc ) CALL ssh_asm_inc( nit000 - 1 )    ! SSH 
     174            IF( lk_bgcinc ) CALL bgc_asm_inc( nit000 - 1 )    ! BGC 
     175         ENDIF 
     176      ENDIF 
    167177 
    168178#if defined key_agrif 
    169           CALL Agrif_Regrid() 
    170 #endif 
    171  
    172          DO WHILE ( istp <= nitend .AND. nstop == 0 ) 
     179      CALL Agrif_Regrid() 
     180#endif 
     181 
     182      DO WHILE ( istp <= nitend .AND. nstop == 0 ) 
    173183#if defined key_agrif 
    174             CALL stp                         ! AGRIF: time stepping 
     184         CALL stp                         ! AGRIF: time stepping 
    175185#else 
    176             IF (lk_oasis) CALL sbc_cpl_snd( istp )  ! Coupling to atmos 
    177        CALL stp( istp ) 
     186         IF (lk_oasis) CALL sbc_cpl_snd( istp )  ! Coupling to atmos 
     187         CALL stp( istp ) 
    178188            ! We don't couple on the final timestep because 
    179189            ! our restart file has already been written 
     
    186196            !    sbc_cpl_snd call prior to the main DO loop 
    187197            ! This solution produces identical results 
    188             ! with fewer lines of code.  
    189 #endif 
    190             istp = istp + 1 
    191             IF( lk_mpp )   CALL mpp_max( nstop ) 
    192          END DO 
     198            ! with fewer lines of code. 
     199#endif 
     200         istp = istp + 1 
     201         IF( lk_mpp )   CALL mpp_max( nstop ) 
     202      END DO 
    193203#endif 
    194204 
     
    225235      IF( lk_oasis ) CALL cpl_finalize    ! end coupling and mpp communications with OASIS 
    226236#else 
    227       IF( lk_oasis ) THEN  
     237      IF( lk_oasis ) THEN 
    228238         CALL cpl_finalize              ! end coupling and mpp communications with OASIS 
    229239      ELSE 
     
    233243      ! 
    234244      ! Met Office addition: if failed, return non-zero exit code 
    235       IF( nstop /= 0 )  CALL exit( 9 )  
     245      IF( nstop /= 0 )  CALL exit( 9 ) 
    236246      ! 
    237247   END SUBROUTINE nemo_gcm 
     
    278288      REWIND( numnam_cfg )              ! Namelist namcfg in confguration namelist : Control prints & Benchmark 
    279289      READ  ( numnam_cfg, namcfg, IOSTAT = ios, ERR = 904 ) 
    280 904   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfg in configuration namelist', .TRUE. )    
     290904   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfg in configuration namelist', .TRUE. ) 
    281291 
    282292! Force values for AGRIF zoom (cf. agrif_user.F90) 
     
    357367#if defined key_nemocice_decomp 
    358368         jpi = ( nx_global+2-2*jpreci + (jpni-1) ) / jpni + 2*jpreci ! first  dim. 
    359          jpj = ( ny_global+2-2*jprecj + (jpnj-1) ) / jpnj + 2*jprecj ! second dim.  
     369         jpj = ( ny_global+2-2*jprecj + (jpnj-1) ) / jpnj + 2*jprecj ! second dim. 
    360370#else 
    361371         jpi = ( jpiglo-2*jpreci + (jpni-1) ) / jpni + 2*jpreci   ! first  dim. 
    362372         jpj = ( jpjglo-2*jprecj + (jpnj-1) ) / jpnj + 2*jprecj   ! second dim. 
    363373#endif 
    364       ENDIF          
     374      ENDIF 
    365375         jpk = jpkdta                                             ! third dim 
    366376#if defined key_agrif 
    367377         ! simple trick to use same vertical grid as parent 
    368          ! but different number of levels:  
     378         ! but different number of levels: 
    369379         ! Save maximum number of levels in jpkdta, then define all vertical grids 
    370380         ! with this number. 
     
    435445 
    436446                            CALL dyn_nept_init  ! simplified form of Neptune effect 
    437       !      
     447      ! 
    438448      IF( ln_crs        )   CALL     crs_init   ! Domain initialization of coarsened grid 
    439449      ! 
     
    477487                            CALL sto_par_init   ! Stochastic parametrization 
    478488      IF( ln_sto_eos     )  CALL sto_pts_init   ! RRandom T/S fluctuations 
    479       
     489 
    480490#if defined key_top 
    481491      !                                     ! Passive tracers 
     
    498508                            CALL    bias_init   ! Pressure correction bias 
    499509      IF(lwp) WRITE(numout,*) 'Euler time step switch is ', neuler 
    500        
     510 
    501511      IF (nstop > 0) THEN 
    502512        CALL CTL_STOP('STOP','Critical errors in NEMO initialisation') 
     
    557567         WRITE(numout,*) '      left bottom i index of the zoom (in data domain) jpizoom = ', jpizoom 
    558568         WRITE(numout,*) '      left bottom j index of the zoom (in data domain) jpizoom = ', jpjzoom 
    559          WRITE(numout,*) '      lateral cond. type (between 0 and 6) jperio = ', jperio    
     569         WRITE(numout,*) '      lateral cond. type (between 0 and 6) jperio = ', jperio 
    560570         WRITE(numout,*) '      use file attribute if exists as i/p j-start ln_use_jattr = ', ln_use_jattr 
    561571      ENDIF 
     
    639649      IF( numdct_salt     /= -1 )   CLOSE( numdct_salt     )   ! salt transports 
    640650#if defined key_top 
    641       IF( numstr          /= -1 )   CLOSE( numstr          )   ! tracer statistics  
     651      IF( numstr          /= -1 )   CLOSE( numstr          )   ! tracer statistics 
    642652#endif 
    643653      ! 
     
    661671      USE ldftra_oce, ONLY: ldftra_oce_alloc 
    662672      USE trc_oce   , ONLY: trc_oce_alloc 
    663 #if defined key_diadct  
    664       USE diadct    , ONLY: diadct_alloc  
    665 #endif  
     673#if defined key_diadct 
     674      USE diadct    , ONLY: diadct_alloc 
     675#endif 
    666676#if defined key_bdy 
    667677      USE bdy_oce   , ONLY: bdy_oce_alloc 
     
    681691      ierr = ierr + trc_oce_alloc   ()          ! shared TRC / TRA arrays 
    682692      ! 
    683 #if defined key_diadct  
    684       ierr = ierr + diadct_alloc    ()          !  
    685 #endif  
     693#if defined key_diadct 
     694      ierr = ierr + diadct_alloc    ()          ! 
     695#endif 
    686696#if defined key_bdy 
    687697      ierr = ierr + bdy_oce_alloc   ()          ! bdy masks (incl. initialization) 
     
    813823      !!====================================================================== 
    814824      !!                     ***  ROUTINE  nemo_northcomms  *** 
    815       !! nemo_northcomms    :  Setup for north fold exchanges with explicit  
     825      !! nemo_northcomms    :  Setup for north fold exchanges with explicit 
    816826      !!                       point-to-point messaging 
    817827      !!===================================================================== 
     
    821831      !!---------------------------------------------------------------------- 
    822832      !!    1.0  ! 2011-10  (A. C. Coward, NOCS & J. Donners, PRACE) 
    823       !!    2.0  ! 2013-06 Setup avoiding MPI communication (I. Epicoco, S. Mocavero, CMCC)  
     833      !!    2.0  ! 2013-06 Setup avoiding MPI communication (I. Epicoco, S. Mocavero, CMCC) 
    824834      !!---------------------------------------------------------------------- 
    825835 
     
    828838 
    829839      njmppmax = MAXVAL( njmppt ) 
    830      
     840 
    831841      !initializes the north-fold communication variables 
    832842      isendto(:) = 0 
     
    844854          !loop over the other north-fold processes to find the processes 
    845855          !managing the points belonging to the sxT-dxT range 
    846    
     856 
    847857          DO jn = 1, jpni 
    848858                !sxT is the first point (in the global domain) of the jn 
     
    887897   !!====================================================================== 
    888898END MODULE nemogcm 
    889  
    890  
Note: See TracChangeset for help on using the changeset viewer.