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 10322 for NEMO/branches/UKMO/dev_r9950_GO8_package/src/OFF – NEMO

Ignore:
Timestamp:
2018-11-16T16:06:47+01:00 (5 years ago)
Author:
davestorkey
Message:

UKMO/dev_r9950_GO8_package: Update to be relative to rev 10321 of NEMO4_beta_mirror branch.

Location:
NEMO/branches/UKMO/dev_r9950_GO8_package/src/OFF
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/UKMO/dev_r9950_GO8_package/src/OFF/dtadyn.F90

    r9950 r10322  
    4646   PRIVATE 
    4747 
    48    PUBLIC   dta_dyn_init   ! called by opa.F90 
    49    PUBLIC   dta_dyn        ! called by step.F90 
    50    PUBLIC   dta_dyn_swp   ! called by step.F90 
     48   PUBLIC   dta_dyn_init       ! called by opa.F90 
     49   PUBLIC   dta_dyn            ! called by step.F90 
     50   PUBLIC   dta_dyn_sed_init   ! called by opa.F90 
     51   PUBLIC   dta_dyn_sed        ! called by step.F90 
     52   PUBLIC   dta_dyn_swp        ! called by step.F90 
    5153 
    5254   CHARACTER(len=100) ::   cn_dir          !: Root directory for location of ssr files 
     
    8890   !! NEMO/OFF 4.0 , NEMO Consortium (2018) 
    8991   !! $Id$ 
    90    !! Software governed by the CeCILL licence     (./LICENSE) 
     92   !! Software governed by the CeCILL license (see ./LICENSE) 
    9193   !!---------------------------------------------------------------------- 
    9294CONTAINS 
     
    164166      hmld(:,:)       = sf_dyn(jf_mld)%fnow(:,:,1) * tmask(:,:,1)    ! mixed layer depht 
    165167      avt(:,:,:)      = sf_dyn(jf_avt)%fnow(:,:,:) * tmask(:,:,:)    ! vertical diffusive coefficient  
     168      avs(:,:,:)      = avt(:,:,:) 
    166169      ! 
    167170      IF( ln_trabbl .AND. .NOT.lk_c1d ) THEN       ! diffusive Bottom boundary layer param  
     
    182185         CALL prt_ctl(tab3d_1=uslp             , clinfo1=' slp  - u : ', tab3d_2=vslp, clinfo2=' v : ', kdim=jpk) 
    183186         CALL prt_ctl(tab3d_1=wslpi            , clinfo1=' slp  - wi: ', tab3d_2=wslpj, clinfo2=' wj: ', kdim=jpk) 
    184 !         CALL prt_ctl(tab2d_1=fr_i             , clinfo1=' fr_i    - : ', mask1=tmask ) 
    185 !         CALL prt_ctl(tab2d_1=hmld             , clinfo1=' hmld    - : ', mask1=tmask ) 
    186 !         CALL prt_ctl(tab2d_1=fmmflx           , clinfo1=' fmmflx  - : ', mask1=tmask ) 
    187 !         CALL prt_ctl(tab2d_1=emp              , clinfo1=' emp     - : ', mask1=tmask ) 
    188 !         CALL prt_ctl(tab2d_1=wndm             , clinfo1=' wspd    - : ', mask1=tmask ) 
    189 !         CALL prt_ctl(tab2d_1=qsr              , clinfo1=' qsr     - : ', mask1=tmask ) 
    190187      ENDIF 
    191188      ! 
     
    418415   END SUBROUTINE dta_dyn_init 
    419416 
     417   SUBROUTINE dta_dyn_sed( kt ) 
     418      !!---------------------------------------------------------------------- 
     419      !!                  ***  ROUTINE dta_dyn  *** 
     420      !! 
     421      !! ** Purpose :  Prepares dynamics and physics fields from a NEMO run 
     422      !!               for an off-line simulation of passive tracers 
     423      !! 
     424      !! ** Method : calculates the position of data 
     425      !!             - computes slopes if needed 
     426      !!             - interpolates data if needed 
     427      !!---------------------------------------------------------------------- 
     428      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
     429      ! 
     430      !!---------------------------------------------------------------------- 
     431      ! 
     432      IF( ln_timing )   CALL timing_start( 'dta_dyn_sed') 
     433      ! 
     434      nsecdyn = nsec_year + nsec1jan000   ! number of seconds between Jan. 1st 00h of nit000 year and the middle of time step 
     435      ! 
     436      IF( kt == nit000 ) THEN    ;    nprevrec = 0 
     437      ELSE                       ;    nprevrec = sf_dyn(jf_tem)%nrec_a(2) 
     438      ENDIF 
     439      CALL fld_read( kt, 1, sf_dyn )      !=  read data at kt time step   ==! 
     440      ! 
     441      tsn(:,:,:,jp_tem) = sf_dyn(jf_tem)%fnow(:,:,:)  * tmask(:,:,:)    ! temperature 
     442      tsn(:,:,:,jp_sal) = sf_dyn(jf_sal)%fnow(:,:,:)  * tmask(:,:,:)    ! salinity 
     443      ! 
     444      CALL eos    ( tsn, rhd, rhop, gdept_0(:,:,:) ) ! In any case, we need rhop 
     445 
     446      IF(ln_ctl) THEN                  ! print control 
     447         CALL prt_ctl(tab3d_1=tsn(:,:,:,jp_tem), clinfo1=' tn      - : ', mask1=tmask,  kdim=jpk   ) 
     448         CALL prt_ctl(tab3d_1=tsn(:,:,:,jp_sal), clinfo1=' sn      - : ', mask1=tmask,  kdim=jpk   ) 
     449      ENDIF 
     450      ! 
     451      IF( ln_timing )   CALL timing_stop( 'dta_dyn_sed') 
     452      ! 
     453   END SUBROUTINE dta_dyn_sed 
     454 
     455 
     456   SUBROUTINE dta_dyn_sed_init 
     457      !!---------------------------------------------------------------------- 
     458      !!                  ***  ROUTINE dta_dyn_init  *** 
     459      !! 
     460      !! ** Purpose :   Initialisation of the dynamical data 
     461      !! ** Method  : - read the data namdta_dyn namelist 
     462      !!---------------------------------------------------------------------- 
     463      INTEGER  :: ierr, ierr0, ierr1, ierr2, ierr3   ! return error code 
     464      INTEGER  :: ifpr                               ! dummy loop indice 
     465      INTEGER  :: jfld                               ! dummy loop arguments 
     466      INTEGER  :: inum, idv, idimv                   ! local integer 
     467      INTEGER  :: ios                                ! Local integer output status for namelist read 
     468      !! 
     469      CHARACTER(len=100)            ::  cn_dir        !   Root directory for location of core files 
     470      TYPE(FLD_N), DIMENSION(2) ::  slf_d         ! array of namelist informations on the fields to read 
     471      TYPE(FLD_N) :: sn_tem , sn_sal   !   "                 " 
     472      !! 
     473      NAMELIST/namdta_dyn/cn_dir, ln_dynrnf, ln_dynrnf_depth,  fwbcorr, & 
     474         &                sn_tem, sn_sal 
     475      !!---------------------------------------------------------------------- 
     476      ! 
     477      REWIND( numnam_ref )              ! Namelist namdta_dyn in reference namelist : Offline: init. of dynamical data 
     478      READ  ( numnam_ref, namdta_dyn, IOSTAT = ios, ERR = 901) 
     479901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namdta_dyn in reference namelist', lwp ) 
     480      REWIND( numnam_cfg )              ! Namelist namdta_dyn in configuration namelist : Offline: init. of dynamical data 
     481      READ  ( numnam_cfg, namdta_dyn, IOSTAT = ios, ERR = 902 ) 
     482902   IF( ios >  0 )   CALL ctl_nam ( ios , 'namdta_dyn in configuration namelist', lwp ) 
     483      IF(lwm) WRITE ( numond, namdta_dyn ) 
     484      !                                         ! store namelist information in an array 
     485      !                                         ! Control print 
     486      IF(lwp) THEN 
     487         WRITE(numout,*) 
     488         WRITE(numout,*) 'dta_dyn : offline dynamics ' 
     489         WRITE(numout,*) '~~~~~~~ ' 
     490         WRITE(numout,*) '   Namelist namdta_dyn' 
     491         WRITE(numout,*) '      runoffs option enabled (T) or not (F)            ln_dynrnf        = ', ln_dynrnf 
     492         WRITE(numout,*) '      runoffs is spread in vertical                    ln_dynrnf_depth  = ', ln_dynrnf_depth 
     493         WRITE(numout,*) '      annual global mean of empmr for ssh correction   fwbcorr          = ', fwbcorr 
     494         WRITE(numout,*) 
     495      ENDIF 
     496      ! 
     497      jf_tem  = 1     ;   jf_sal  = 2    ;   jfld   = jf_sal 
     498      ! 
     499      slf_d(jf_tem)  = sn_tem    ;   slf_d(jf_sal)  = sn_sal 
     500      ! 
     501      ALLOCATE( sf_dyn(jfld), STAT=ierr )         ! set sf structure 
     502      IF( ierr > 0 )  THEN 
     503         CALL ctl_stop( 'dta_dyn: unable to allocate sf structure' )   ;   RETURN 
     504      ENDIF 
     505      !                                         ! fill sf with slf_i and control print 
     506      CALL fld_fill( sf_dyn, slf_d, cn_dir, 'dta_dyn_init', 'Data in file', 'namdta_dyn' ) 
     507      ! 
     508      ! Open file for each variable to get his number of dimension 
     509      DO ifpr = 1, jfld 
     510         CALL fld_clopn( sf_dyn(ifpr), nyear, nmonth, nday ) 
     511         idv   = iom_varid( sf_dyn(ifpr)%num , slf_d(ifpr)%clvar )        ! id of the variable sdjf%clvar 
     512         idimv = iom_file ( sf_dyn(ifpr)%num )%ndims(idv)                 ! number of dimension for variable sdjf%clvar 
     513         IF( sf_dyn(ifpr)%num /= 0 )   CALL iom_close( sf_dyn(ifpr)%num ) ! close file if already open 
     514         ierr1=0 
     515         IF( idimv == 3 ) THEN    ! 2D variable 
     516                                      ALLOCATE( sf_dyn(ifpr)%fnow(jpi,jpj,1)    , STAT=ierr0 ) 
     517            IF( slf_d(ifpr)%ln_tint ) ALLOCATE( sf_dyn(ifpr)%fdta(jpi,jpj,1,2)  , STAT=ierr1 ) 
     518         ELSE                     ! 3D variable 
     519                                      ALLOCATE( sf_dyn(ifpr)%fnow(jpi,jpj,jpk)  , STAT=ierr0 ) 
     520            IF( slf_d(ifpr)%ln_tint ) ALLOCATE( sf_dyn(ifpr)%fdta(jpi,jpj,jpk,2), STAT=ierr1 ) 
     521         ENDIF 
     522         IF( ierr0 + ierr1 > 0 ) THEN 
     523            CALL ctl_stop( 'dta_dyn_init : unable to allocate sf_dyn array structure' )   ;   RETURN 
     524         ENDIF 
     525      END DO 
     526      ! 
     527      CALL dta_dyn_sed( nit000 ) 
     528      ! 
     529   END SUBROUTINE dta_dyn_sed_init 
    420530 
    421531   SUBROUTINE dta_dyn_swp( kt ) 
  • NEMO/branches/UKMO/dev_r9950_GO8_package/src/OFF/nemogcm.F90

    r9950 r10322  
    7070   !! NEMO/OFF 4.0 , NEMO Consortium (2018) 
    7171   !! $Id$ 
    72    !! Software governed by the CeCILL licence     (./LICENSE) 
     72   !! Software governed by the CeCILL license (see ./LICENSE) 
    7373   !!---------------------------------------------------------------------- 
    7474CONTAINS 
     
    110110         IF( istp /= nit000 )   CALL day        ( istp )         ! Calendar (day was already called at nit000 in day_init) 
    111111                                CALL iom_setkt  ( istp - nit000 + 1, cxios_context )   ! say to iom that we are at time step kstp 
     112#if defined key_sed_off 
     113                                CALL dta_dyn_sed( istp )         ! Interpolation of the dynamical fields 
     114#else 
    112115                                CALL dta_dyn    ( istp )         ! Interpolation of the dynamical fields 
    113116         IF( .NOT.ln_linssh )   CALL dta_dyn_swp( istp )         ! swap of sea  surface height and vertical scale factors 
    114  
     117#endif 
    115118                                CALL trc_stp    ( istp )         ! time-stepping 
    116119                                CALL stp_ctl    ( istp, indic )  ! Time loop: control and print 
     
    287290                           CALL trc_nam_run    ! Needed to get restart parameters for passive tracers 
    288291                           CALL trc_rst_cal( nit000, 'READ' )   ! calendar 
     292#if defined key_sed_off 
     293                           CALL dta_dyn_sed_init ! Initialization for the dynamics 
     294#else 
    289295                           CALL dta_dyn_init   ! Initialization for the dynamics 
     296#endif 
    290297 
    291298                           CALL     trc_init   ! Passive tracers initialization 
Note: See TracChangeset for help on using the changeset viewer.