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 9441 – NEMO

Changeset 9441


Ignore:
Timestamp:
2018-03-27T15:57:02+02:00 (6 years ago)
Author:
acc
Message:

Branch 2017/dev_merge_2017. Reorganisation of nemogcm.F90 and mppini.F90. Stage 7: Add netcdf version of the run.stat files to stpctl.F90. Current implementation is very basic but may introduce opportunities for run-time monitoring; see ticket #2070

Location:
branches/2017/dev_merge_2017/NEMOGCM
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_merge_2017/NEMOGCM/CONFIG/TEST_CASES/CANAL/MY_SRC/stpctl.F90

    r9403 r9441  
    2626   USE wet_dry,   ONLY : ll_wd, ssh_ref    ! reference depth for negative bathy 
    2727 
     28   USE netcdf          ! NetCDF library 
    2829   IMPLICIT NONE 
    2930   PRIVATE 
    3031 
    3132   PUBLIC stp_ctl           ! routine called by step.F90 
     33 
     34   INTEGER  ::   idrun, idtime, idssh, idu, ids, istatus 
    3235   !!---------------------------------------------------------------------- 
    3336   !! NEMO/OPA 4.0 , NEMO Consortium (2017) 
     
    7578         !                                ! open run.stat file 
    7679         CALL ctl_opn( numrun, 'run.stat', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp, narea ) 
     80 
     81         IF( lwm ) THEN 
     82            istatus = NF90_CREATE( 'run.stat.nc', NF90_CLOBBER, idrun ) 
     83            istatus = NF90_DEF_DIM( idrun, 'time', NF90_UNLIMITED, idtime ) 
     84            istatus = NF90_DEF_VAR( idrun, 'abs_ssh_max', NF90_DOUBLE, (/ idtime /), idssh ) 
     85            istatus = NF90_DEF_VAR( idrun,   'abs_u_max', NF90_DOUBLE, (/ idtime /), idu ) 
     86            istatus = NF90_ENDDEF(idrun) 
     87         ENDIF 
     88          
    7789      ENDIF 
    7890      ! 
     
    89101      ENDIF 
    90102      zmax(2) = MAXVAL(  ABS( un(:,:,:) )  )                                  ! velocity max (zonal only) 
    91       zmax(3) = MAXVAL( -tsn(:,:,:,jp_sal) , mask = tmask(:,:,:) == 1._wp )   ! minus salinity max 
     103!     zmax(3) = MAXVAL( -tsn(:,:,:,jp_sal) , mask = tmask(:,:,:) == 1._wp )   ! minus salinity max 
     104      zmax(3) = 0.0_wp 
    92105      zmax(4) = REAL( nstop , wp )                                            ! stop indicator 
    93106      ! 
     
    109122            CALL mpp_maxloc( ABS(sshn)        , ssmask(:,:)  , zzz, iih, ijh ) 
    110123            CALL mpp_maxloc( ABS(un)          , umask (:,:,:), zzz, iiu, iju, iku ) 
    111             CALL mpp_minloc( tsn(:,:,:,jp_sal), tmask (:,:,:), zzz, iis, ijs, iks ) 
     124!           CALL mpp_minloc( tsn(:,:,:,jp_sal), tmask (:,:,:), zzz, iis, ijs, iks ) 
    112125         ELSE 
    113126            iloch = MINLOC( ABS( sshn(:,:)   )                               ) 
    114127            ilocu = MAXLOC( ABS( un  (:,:,:) )                               ) 
    115             ilocs = MINLOC( tsn(:,:,:,jp_sal) , mask = tmask(:,:,:) == 1._wp ) 
     128!           ilocs = MINLOC( tsn(:,:,:,jp_sal) , mask = tmask(:,:,:) == 1._wp ) 
    116129            iih = iloch(1) + nimpp - 1   ;   ijh = iloch(2) + njmpp - 1 
    117130            iiu = ilocu(1) + nimpp - 1   ;   iju = ilocu(2) + njmpp - 1   ;   iku = ilocu(3) 
    118             iis = ilocs(1) + nimpp - 1   ;   ijs = ilocs(2) + njmpp - 1   ;   iks = ilocu(3) 
     131!           iis = ilocs(1) + nimpp - 1   ;   ijs = ilocs(2) + njmpp - 1   ;   iks = ilocu(3) 
    119132         ENDIF 
    120133         IF(lwp) THEN 
     
    139152      ! 
    140153      !                                            !==  run statistics  ==!   ("run.stat" file) 
    141       IF(lwp) WRITE(numrun,9400) kt, zmax(1), zmax(2), - zmax(3) 
     154!     IF(lwp) WRITE(numrun,9400) kt, zmax(1), zmax(2), - zmax(3) 
     155      IF(lwp) WRITE(numrun,9400) kt, zmax(1), zmax(2) 
     156      IF( lwm ) THEN 
     157         istatus = NF90_PUT_VAR( idrun, idssh, (/ zmax(1)/), (/kt/), (/1/) ) 
     158         istatus = NF90_PUT_VAR( idrun,   idu, (/ zmax(2)/), (/kt/), (/1/) ) 
     159!        istatus = NF90_PUT_VAR( idrun,   ids, (/-zmax(3)/), (/kt/), (/1/) ) 
     160         IF( MOD( kt , 100 ) == 0 ) istatus = NF90_SYNC(idrun) 
     161         IF( kt == nitend         ) istatus = NF90_CLOSE(idrun) 
     162      END IF 
    142163      ! 
    143 9400  FORMAT(' it :', i8, '    |ssh|_max: ', e16.10, ' |U|_max: ',e16.10,' S_min: ',e16.10) 
     164!9400  FORMAT(' it :', i8, '    |ssh|_max: ', D23.16, ' |U|_max: ', D23.16,' S_min: ', D23.16) 
     1659400  FORMAT(' it :', i8, '    |ssh|_max: ', D23.16, ' |U|_max: ', D23.16) 
    144166      ! 
    145167   END SUBROUTINE stp_ctl 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/stpctl.F90

    r9210 r9441  
    2626   USE wet_dry,   ONLY : ll_wd, ssh_ref    ! reference depth for negative bathy 
    2727 
     28   USE netcdf          ! NetCDF library 
    2829   IMPLICIT NONE 
    2930   PRIVATE 
    3031 
    3132   PUBLIC stp_ctl           ! routine called by step.F90 
     33 
     34   INTEGER  ::   idrun, idtime, idssh, idu, ids, istatus 
    3235   !!---------------------------------------------------------------------- 
    3336   !! NEMO/OPA 4.0 , NEMO Consortium (2017) 
     
    7578         !                                ! open run.stat file 
    7679         CALL ctl_opn( numrun, 'run.stat', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp, narea ) 
     80 
     81         IF( lwm ) THEN 
     82            istatus = NF90_CREATE( 'run.stat.nc', NF90_CLOBBER, idrun ) 
     83            istatus = NF90_DEF_DIM( idrun, 'time', NF90_UNLIMITED, idtime ) 
     84            istatus = NF90_DEF_VAR( idrun, 'abs_ssh_max', NF90_DOUBLE, (/ idtime /), idssh ) 
     85            istatus = NF90_DEF_VAR( idrun,   'abs_u_max', NF90_DOUBLE, (/ idtime /), idu ) 
     86            istatus = NF90_DEF_VAR( idrun,       's_min', NF90_DOUBLE, (/ idtime /), ids ) 
     87            istatus = NF90_ENDDEF(idrun) 
     88         ENDIF 
     89          
    7790      ENDIF 
    7891      ! 
     
    141154      !                                            !==  run statistics  ==!   ("run.stat" file) 
    142155      IF(lwp) WRITE(numrun,9400) kt, zmax(1), zmax(2), - zmax(3) 
     156      IF( lwm ) THEN 
     157         istatus = NF90_PUT_VAR( idrun, idssh, (/ zmax(1)/), (/kt/), (/1/) ) 
     158         istatus = NF90_PUT_VAR( idrun,   idu, (/ zmax(2)/), (/kt/), (/1/) ) 
     159         istatus = NF90_PUT_VAR( idrun,   ids, (/-zmax(3)/), (/kt/), (/1/) ) 
     160         IF( MOD( kt , 100 ) == 0 ) istatus = NF90_SYNC(idrun) 
     161         IF( kt == nitend         ) istatus = NF90_CLOSE(idrun) 
     162      END IF 
    143163      ! 
    144 9400  FORMAT(' it :', i8, '    |ssh|_max: ', e16.10, ' |U|_max: ',e16.10,' S_min: ',e16.10) 
     1649400  FORMAT(' it :', i8, '    |ssh|_max: ', D23.16, ' |U|_max: ', D23.16,' S_min: ', D23.16) 
    145165      ! 
    146166   END SUBROUTINE stp_ctl 
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/SAS_SRC/stpctl.F90

    r9267 r9441  
    2525   USE lib_mpp         ! distributed memory computing 
    2626 
     27   USE netcdf          ! NetCDF library 
    2728   IMPLICIT NONE 
    2829   PRIVATE 
    2930 
    3031   PUBLIC stp_ctl           ! routine called by step.F90 
     32 
     33   INTEGER  ::   idrun, idtime, idssh, idu, ids, istatus 
    3134   !!---------------------------------------------------------------------- 
    3235   !! NEMO/OPA 4.0 , NEMO Consortium (2017) 
     
    6467         !                                ! open run.stat file 
    6568         CALL ctl_opn( numrun, 'run.stat', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp, narea ) 
     69 
     70         IF( lwm ) THEN 
     71            istatus = NF90_CREATE( 'run.stat.nc', NF90_CLOBBER, idrun ) 
     72            istatus = NF90_DEF_DIM( idrun, 'time', NF90_UNLIMITED, idtime ) 
     73            istatus = NF90_DEF_VAR( idrun, 'abs_ssh_max', NF90_DOUBLE, (/ idtime /), idssh ) 
     74            istatus = NF90_DEF_VAR( idrun,   'abs_u_max', NF90_DOUBLE, (/ idtime /), idu ) 
     75            istatus = NF90_DEF_VAR( idrun,       's_min', NF90_DOUBLE, (/ idtime /), ids ) 
     76            istatus = NF90_ENDDEF(idrun) 
     77         ENDIF 
     78          
    6679      ENDIF 
    6780      ! 
     
    8497 
    8598      !                                            !==  run statistics  ==!   ("run.stat" file) 
    86       IF(lwp) WRITE(numrun,9400) kt, zmax(1), zmax(2), -zmax(3) 
     99      IF(lwp) WRITE(numrun,9400) kt, zmax(1), zmax(2), - zmax(3) 
     100      IF( lwm ) THEN 
     101         istatus = NF90_PUT_VAR( idrun, idssh, (/ zmax(1)/), (/kt/), (/1/) ) 
     102         istatus = NF90_PUT_VAR( idrun,   idu, (/ zmax(2)/), (/kt/), (/1/) ) 
     103         istatus = NF90_PUT_VAR( idrun,   ids, (/-zmax(3)/), (/kt/), (/1/) ) 
     104         IF( MOD( kt , 100 ) == 0 ) istatus = NF90_SYNC(idrun) 
     105         IF( kt == nitend         ) istatus = NF90_CLOSE(idrun) 
     106      END IF 
    87107      ! 
    88 9400  FORMAT(' it :', i8, '    vt_i_max: ', e16.10, ' |u_ice|_max: ',e16.10,' tm_i_min: ',e16.10) 
     1089400  FORMAT(' it :', i8, '    |ssh|_max: ', D23.16, ' |U|_max: ', D23.16,' S_min: ', D23.16) 
    89109      ! 
    90110   END SUBROUTINE stp_ctl 
Note: See TracChangeset for help on using the changeset viewer.