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

Changeset 7613


Ignore:
Timestamp:
2017-01-26T18:35:46+01:00 (7 years ago)
Author:
hadjt
Message:

Added namelist entries to effectively switch off region mean, pea and NOOS code. Also use correct nemo file open subroutines, rahter than low level open statements with fixed file ids (37 and 73)

Location:
branches/UKMO/CO6_shelfclimate/NEMOGCM/NEMO/OPA_SRC
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/CO6_shelfclimate/NEMOGCM/NEMO/OPA_SRC/DIA/diadct.F90

    r7593 r7613  
    210210 
    211211     ENDIF 
    212  
    213      !Read section_ijglobal.diadct 
    214      CALL readsec 
    215       
     212      
     213      
     214     IF ( ln_NOOS ) THEN 
     215        IF ( ln_dct_calc_noos_25h .or. ln_dct_calc_noos_hr ) CALL readsec 
     216     ENDIF 
    216217      
    217218 
  • branches/UKMO/CO6_shelfclimate/NEMOGCM/NEMO/OPA_SRC/DIA/diapea.F90

    r7567 r7613  
    2424   REAL(wp), SAVE, ALLOCATABLE,   DIMENSION(:,:,:) ::   t_zmean_mat, s_zmean_mat  !Depth mean temperature and salinity: 3d fields 
    2525   REAL(wp) ::   zcutoff 
     26   LOGICAL , PUBLIC ::   ln_pea  ! region mean calculation 
    2627   !!---------------------------------------------------------------------- 
    2728   !! NEMO/OPA 3.6 , NEMO Consortium (2014) 
     
    3637      REAL(wp) :: sumz,tmpsumz 
    3738      INTEGER  :: ierr                ! error integer for IOM_get 
     39      INTEGER ::   ios                  ! Local integer output status for namelist read 
    3840       
    3941      zcutoff = 200.!200m 
     42       
     43      NAMELIST/nam_pea/ ln_pea 
     44       
     45       
     46      ! 
     47      REWIND ( numnam_ref )              ! Read Namelist nam_diatmb in referdiatmbence namelist : TMB diagnostics 
     48      READ   ( numnam_ref, nam_pea, IOSTAT=ios, ERR= 901 ) 
     49901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_pea in reference namelist', lwp ) 
     50 
     51      REWIND( numnam_cfg )              ! Namelist nam_diatmb in configuration namelist  TMB diagnostics 
     52      READ  ( numnam_cfg, nam_pea, IOSTAT = ios, ERR = 902 ) 
     53902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_pea in configuration namelist', lwp ) 
     54      IF(lwm) WRITE ( numond, nam_pea ) 
     55 
     56      IF(lwp) THEN                   ! Control print 
     57          WRITE(numout,*) 
     58          WRITE(numout,*) 'dia_pea_init : Output potential energy anomaly Diagnostics' 
     59          WRITE(numout,*) '~~~~~~~~~~~~' 
     60          WRITE(numout,*) 'Namelist nam_pea : set pea output ' 
     61          WRITE(numout,*) 'Switch for pea diagnostics (T) or not (F)  ln_diaregmean  = ', ln_pea 
     62      ENDIF 
     63       
    4064       
    4165   ALLOCATE( pea(jpi,jpj),  STAT= ierr ) 
     
    6286   ALLOCATE( wgt_co_mat(jpi,jpj,jpk),  STAT= ierr ) 
    6387   IF( ierr /= 0 )   CALL ctl_stop( 'dia_pea_init: failed to allocate wgt_co_mat array' ) 
     88    
     89    
     90   pea(:,:) = 0. 
     91   peat(:,:) = 0. 
     92   peas(:,:) = 0. 
     93     
     94   if ( ln_pea ) THEN 
    6495           
    65     ! create wgt_co_mat mat, with the proportion of the grid (gdept_0) below cut off (200m) 
    66      
    67     DO jj = 1,jpj 
    68         DO ji = 1,jpi 
    69             IF ( tmask(ji,jj,1) == 1.0_wp ) THEN 
    70               sumz = 0. 
    71               DO jk = 1,jpk 
    72                 IF ( tmask(ji,jj,jk) == 1.0_wp ) THEN 
    73                   tmpsumz = sumz + e3t_n(ji,jj,jk) 
    74                   IF (sumz .ge. zcutoff) THEN 
    75                     ! Already too deep 
    76                     wgt_co_mat(ji,jj,jk) = 0. 
    77                   ELSE IF (tmpsumz .le. zcutoff) THEN 
    78                     ! Too shallow 
    79                     wgt_co_mat(ji,jj,jk) = 1. 
    80                   ELSE 
    81                     !proprotion of grid box above cut off depth 
    82                     wgt_co_mat(ji,jj,jk) = (zcutoff-Sumz)/e3t_n(ji,jj,jk) 
    83                   END IF 
    84                   sumz = tmpsumz 
    85                 endif 
    86               END DO 
    87                
    88             ELSE 
    89               !if land, set to 0. 
    90               DO jk = 1,jpk 
    91                 wgt_co_mat(ji,jj,jk) = 0. 
    92               END DO 
     96      ! create wgt_co_mat mat, with the proportion of the grid (gdept_0) below cut off (200m) 
     97       
     98      DO jj = 1,jpj 
     99          DO ji = 1,jpi 
     100              IF ( tmask(ji,jj,1) == 1.0_wp ) THEN 
     101                sumz = 0. 
     102                DO jk = 1,jpk 
     103                  IF ( tmask(ji,jj,jk) == 1.0_wp ) THEN 
     104                    tmpsumz = sumz + e3t_n(ji,jj,jk) 
     105                    IF (sumz .ge. zcutoff) THEN 
     106                      ! Already too deep 
     107                      wgt_co_mat(ji,jj,jk) = 0. 
     108                    ELSE IF (tmpsumz .le. zcutoff) THEN 
     109                      ! Too shallow 
     110                      wgt_co_mat(ji,jj,jk) = 1. 
     111                    ELSE 
     112                      !proprotion of grid box above cut off depth 
     113                      wgt_co_mat(ji,jj,jk) = (zcutoff-Sumz)/e3t_n(ji,jj,jk) 
     114                    END IF 
     115                    sumz = tmpsumz 
     116                  endif 
     117                END DO 
    93118                 
    94             ENDIF 
    95         END DO 
    96    END DO 
     119              ELSE 
     120                !if land, set to 0. 
     121                DO jk = 1,jpk 
     122                  wgt_co_mat(ji,jj,jk) = 0. 
     123                END DO 
     124                   
     125              ENDIF 
     126          END DO 
     127       END DO 
     128   ENDIF 
    97129    
    98130 
  • branches/UKMO/CO6_shelfclimate/NEMOGCM/NEMO/OPA_SRC/DIA/diaregmean.F90

    r7593 r7613  
    164164          END DO 
    165165         
    166           IF(lwp) THEN 
     166          IF(lwp) THEN  
    167167              ! if writing out as binary and text, open the files.  
    168168              IF ( ln_diaregmean_bin ) THEN 
    169169                  ! Open binary for region means 
    170                   OPEN( UNIT=73, FILE='region_mean_timeseries.dat', FORM='UNFORMATTED', STATUS='REPLACE' ) 
     170                  !OPEN( UNIT=73, FILE='region_mean_timeseries.dat', FORM='UNFORMATTED', STATUS='REPLACE' ) 
     171                   
     172                   
     173                  CALL ctl_opn( numdct_reg_bin  ,'region_mean_timeseries.dat'  , 'NEW', 'UNFORMATTED', 'SEQUENTIAL', -1, numout,  .TRUE. ) 
     174                   
     175                   
    171176              ENDIF 
    172177               
    173178              IF ( ln_diaregmean_ascii ) THEN 
    174179                  ! Open text files for region means 
    175                   OPEN( UNIT=37, FILE='region_mean_timeseries.txt', FORM='FORMATTED', STATUS='REPLACE' ) 
     180                  !OPEN( UNIT=37, FILE='region_mean_timeseries.txt', FORM='FORMATTED', STATUS='REPLACE' ) 
     181                  CALL ctl_opn( numdct_reg_txt  ,'region_mean_timeseries.txt'  , 'NEW', 'FORMATTED', 'SEQUENTIAL', -1, numout,  .TRUE. ) 
    176182              ENDIF 
    177183          ENDIF 
     
    385391            IF ( ln_diaregmean_bin ) THEN 
    386392              !Closing binary files for regional mean time series. 
    387               CLOSE(73) 
     393              CLOSE(numdct_reg_bin) 
    388394            ENDIF 
    389395            IF ( ln_diaregmean_ascii ) THEN 
    390396              !Closing text files for regional mean time series. 
    391               CLOSE(37) 
     397              CLOSE(numdct_reg_txt) 
    392398            ENDIF 
    393399             
     
    547553              IF ( ln_diaregmean_bin ) THEN 
    548554                  !Writing out regional mean time series to binary files 
    549                   WRITE(73) name,kt,maskno,n_regions_output 
    550                   WRITE(73) ave_mat 
    551                   WRITE(73) tot_mat 
    552                   WRITE(73) var_mat 
    553                   WRITE(73) ssq_mat 
    554                   WRITE(73) cnt_mat 
     555                  WRITE(numdct_reg_bin) name,kt,maskno,n_regions_output 
     556                  WRITE(numdct_reg_bin) ave_mat 
     557                  WRITE(numdct_reg_bin) tot_mat 
     558                  WRITE(numdct_reg_bin) var_mat 
     559                  WRITE(numdct_reg_bin) ssq_mat 
     560                  WRITE(numdct_reg_bin) cnt_mat 
    555561              ENDIF 
    556562               
     
    560566                  WRITE(nreg_string, "(I5)") nreg 
    561567                  FormatString = "(A17,"//trim(nreg_string)//"F15.3)" 
    562                   WRITE(37, FMT="(A17,I6,I6)") name,kt,maskno             
    563                   WRITE(37, FMT=trim(FormatString)) trim(name)//" "//"ave_mat:", ave_mat 
    564                   WRITE(37, FMT=trim(FormatString)) trim(name)//" "//"tot_mat:", tot_mat 
    565                   WRITE(37, FMT=trim(FormatString)) trim(name)//" "//"var_mat:", var_mat 
    566                   WRITE(37, FMT=trim(FormatString)) trim(name)//" "//"ssq_mat:", ssq_mat 
    567                   WRITE(37, FMT=trim(FormatString)) trim(name)//" "//"cnt_mat:", cnt_mat 
    568                   WRITE(37, FMT=trim(FormatString)) trim(name)//" "//"reg_mat:", reg_id_mat 
    569                   WRITE(37, FMT=trim(FormatString)) trim(name)//" "//"msk_mat:", mask_id_mat 
     568                  WRITE(numdct_reg_txt, FMT="(A17,I6,I6)") name,kt,maskno             
     569                  WRITE(numdct_reg_txt, FMT=trim(FormatString)) trim(name)//" "//"ave_mat:", ave_mat 
     570                  WRITE(numdct_reg_txt, FMT=trim(FormatString)) trim(name)//" "//"tot_mat:", tot_mat 
     571                  WRITE(numdct_reg_txt, FMT=trim(FormatString)) trim(name)//" "//"var_mat:", var_mat 
     572                  WRITE(numdct_reg_txt, FMT=trim(FormatString)) trim(name)//" "//"ssq_mat:", ssq_mat 
     573                  WRITE(numdct_reg_txt, FMT=trim(FormatString)) trim(name)//" "//"cnt_mat:", cnt_mat 
     574                  WRITE(numdct_reg_txt, FMT=trim(FormatString)) trim(name)//" "//"reg_mat:", reg_id_mat 
     575                  WRITE(numdct_reg_txt, FMT=trim(FormatString)) trim(name)//" "//"msk_mat:", mask_id_mat 
    570576 
    571577              ENDIF 
  • branches/UKMO/CO6_shelfclimate/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90

    r7567 r7613  
    393393      ENDIF 
    394394       
    395       CALL dia_pea( kt ) 
     395      if ( ln_pea ) THEN 
     396         CALL dia_pea( kt ) 
     397      ENDIF 
     398      ! 
    396399       
    397400      IF (ln_diaregmean) THEN 
  • branches/UKMO/CO6_shelfclimate/NEMOGCM/NEMO/OPA_SRC/IOM/in_out_manager.F90

    r7567 r7613  
    146146   INTEGER ::   numfl           =   -1      !: logical unit for floats ascii output 
    147147   INTEGER ::   numflo          =   -1      !: logical unit for floats ascii output 
     148    
     149   INTEGER ::   numdct_reg_bin     =   -1      !: logical unit for NOOS    transports output 
     150   INTEGER ::   numdct_reg_txt   =   -1      !: logical unit for NOOS hourly transports output 
    148151 
    149152   !!---------------------------------------------------------------------- 
Note: See TracChangeset for help on using the changeset viewer.