Changeset 5107 for trunk/NEMOGCM/NEMO


Ignore:
Timestamp:
2015-02-26T18:18:47+01:00 (6 years ago)
Author:
smasson
Message:

update IO for VVL compatibility, see ticket #1474

Location:
trunk/NEMOGCM/NEMO/OPA_SRC
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diaar5.F90

    r4990 r5107  
    8282      CALL wrk_alloc( jpi , jpj , jpk        , zrhd      , zrhop    ) 
    8383      CALL wrk_alloc( jpi , jpj , jpk , jpts , ztsn                 ) 
    84  
    85       CALL iom_put( 'cellthc', fse3t(:,:,:) ) 
    8684 
    8785      zarea_ssh(:,:) = area(:,:) * sshn(:,:) 
  • trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90

    r4990 r5107  
    142142      ENDIF 
    143143 
    144       IF( lk_vvl ) THEN 
    145          z3d(:,:,:) = tsn(:,:,:,jp_tem) * fse3t_n(:,:,:) 
    146          CALL iom_put( "toce" , z3d                        )   ! heat content 
     144      IF( .NOT.lk_vvl ) THEN 
     145         CALL iom_put( "e3t" , fse3t_n(:,:,:) ) 
     146         CALL iom_put( "e3u" , fse3u_n(:,:,:) ) 
     147         CALL iom_put( "e3v" , fse3v_n(:,:,:) ) 
     148         CALL iom_put( "e3w" , fse3w_n(:,:,:) ) 
     149      ENDIF 
     150       
     151      CALL iom_put( "toce", tsn(:,:,:,jp_tem) )    ! 3D temperature 
     152      CALL iom_put(  "sst", tsn(:,:,1,jp_tem) )    ! surface temperature 
     153      IF ( iom_use("sbt") ) THEN 
    147154         DO jj = 1, jpj 
    148155            DO ji = 1, jpi 
    149                z2d(ji,jj) = tsn(ji,jj,mikt(ji,jj),jp_tem) * fse3t_n(ji,jj,mikt(ji,jj)) 
    150             END DO 
    151          END DO   
    152          CALL iom_put( "sst"  , z2d(:,:)                 )   ! sea surface heat content       
     156               z2d(ji,jj) = tsn(ji,jj,MAX(mbathy(ji,jj),1),jp_tem) 
     157            END DO 
     158         END DO 
     159         CALL iom_put( "sbt", z2d )                ! bottom temperature 
     160      ENDIF 
     161       
     162      CALL iom_put( "soce", tsn(:,:,:,jp_sal) )    ! 3D salinity 
     163      CALL iom_put(  "sss", tsn(:,:,1,jp_sal) )    ! surface salinity 
     164      IF ( iom_use("sbs") ) THEN 
    153165         DO jj = 1, jpj 
    154166            DO ji = 1, jpi 
    155                z2d(ji,jj) = tsn(ji,jj,mikt(ji,jj),jp_tem)**2 * fse3t_n(ji,jj,mikt(ji,jj)) 
    156             END DO 
    157          END DO   
    158          CALL iom_put( "sst2" , z2d(:,:)      )   ! sea surface content of squared temperature 
    159          z3d(:,:,:) = tsn(:,:,:,jp_sal) * fse3t_n(:,:,:)             
    160          CALL iom_put( "soce" , z3d                        )   ! salinity content 
     167               z2d(ji,jj) = tsn(ji,jj,MAX(mbathy(ji,jj),1),jp_sal) 
     168            END DO 
     169         END DO 
     170         CALL iom_put( "sbs", z2d )                ! bottom salinity 
     171      ENDIF 
     172          
     173      CALL iom_put( "uoce", un(:,:,:)         )    ! 3D i-current 
     174      CALL iom_put(  "ssu", un(:,:,1)         )    ! surface i-current 
     175      IF ( iom_use("sbu") ) THEN 
    161176         DO jj = 1, jpj 
    162177            DO ji = 1, jpi 
    163                z2d(ji,jj) = tsn(ji,jj,mikt(ji,jj),jp_sal) * fse3t_n(ji,jj,mikt(ji,jj)) 
    164             END DO 
    165          END DO   
    166          CALL iom_put( "sss"  , z2d(:,:)                 )   ! sea surface salinity content 
     178               z2d(ji,jj) = un(ji,jj,MAX(mbathy(ji,jj),1)) 
     179            END DO 
     180         END DO 
     181         CALL iom_put( "sbu", z2d )                ! bottom i-current 
     182      ENDIF 
     183       
     184      CALL iom_put( "voce", vn(:,:,:)         )    ! 3D j-current 
     185      CALL iom_put(  "ssv", vn(:,:,1)         )    ! surface j-current 
     186      IF ( iom_use("sbv") ) THEN 
    167187         DO jj = 1, jpj 
    168188            DO ji = 1, jpi 
    169                z2d(ji,jj) = tsn(ji,jj,mikt(ji,jj),jp_sal)**2 * fse3t_n(ji,jj,mikt(ji,jj)) 
    170             END DO 
    171          END DO   
    172          CALL iom_put( "sss2" , z2d(:,:)                 )   ! sea surface content of squared salinity 
    173       ELSE 
    174          CALL iom_put( "toce" , tsn(:,:,:,jp_tem)        )   ! temperature 
    175          IF ( iom_use("sst") ) THEN 
    176             DO jj = 1, jpj 
    177                DO ji = 1, jpi 
    178                   z2d(ji,jj) = tsn(ji,jj,mikt(ji,jj),jp_tem) 
    179                END DO 
    180             END DO 
    181             CALL iom_put( "sst"  , z2d(:,:)            ) ! sea surface temperature 
    182          ENDIF 
    183          IF ( iom_use("sst2") )   CALL iom_put( "sst2" , z2d(:,:) * z2d(:,:) ) ! square of sea surface temperature 
    184          CALL iom_put( "soce" , tsn(:,:,:,jp_sal)          )   ! salinity 
    185          IF ( iom_use("sss") ) THEN 
    186             DO jj = 1, jpj 
    187                DO ji = 1, jpi 
    188                   z2d(ji,jj) = tsn(ji,jj,mikt(ji,jj),jp_sal) 
    189                END DO 
    190             END DO 
    191             CALL iom_put( "sss"  , z2d(:,:)            ) ! sea surface salinity 
    192          ENDIF 
    193          CALL iom_put( "sss2" , z2d(:,:) * z2d(:,:) ) ! square of sea surface salinity 
    194       END IF 
    195       IF( lk_vvl .AND. (.NOT. ln_dynadv_vec) ) THEN 
    196          CALL iom_put( "uoce" , umask(:,:,:) * un(:,:,:) * fse3u_n(:,:,:) )    ! i-transport 
    197          CALL iom_put( "voce" , vmask(:,:,:) * vn(:,:,:) * fse3v_n(:,:,:) )    ! j-transport 
    198       ELSE 
    199          CALL iom_put( "uoce" , umask(:,:,:) * un(:,:,:)                  )    ! i-current 
    200          CALL iom_put( "voce" , vmask(:,:,:) * vn(:,:,:)                  )    ! j-current 
    201          IF ( iom_use("ssu") ) THEN 
    202             DO jj = 1, jpj 
    203                DO ji = 1, jpi 
    204                   z2d(ji,jj) = un(ji,jj,miku(ji,jj)) 
    205                END DO 
    206             END DO 
    207             CALL iom_put( "ssu"   , z2d                                    )    ! i-current 
    208          ENDIF 
    209          IF ( iom_use("ssv") ) THEN 
    210             DO jj = 1, jpj 
    211                DO ji = 1, jpi 
    212                   z2d(ji,jj) = vn(ji,jj,mikv(ji,jj)) 
    213                END DO 
    214             END DO 
    215             CALL iom_put( "ssv"   , z2d                                    )    ! j-current 
    216          ENDIF 
    217       ENDIF 
    218       CALL iom_put(    "avt"  , avt                        )    ! T vert. eddy diff. coef. 
    219       CALL iom_put(    "avm"  , avmu                       )    ! T vert. eddy visc. coef. 
    220       IF( lk_zdfddm ) THEN 
    221          CALL iom_put( "avs" , fsavs(:,:,:)                          )    ! S vert. eddy diff. coef. 
    222       ENDIF 
    223  
    224       IF ( iom_use("sstgrad2") .OR. iom_use("sstgrad2") ) THEN 
     189               z2d(ji,jj) = vn(ji,jj,MAX(mbathy(ji,jj),1)) 
     190            END DO 
     191         END DO 
     192         CALL iom_put( "sbv", z2d )                ! bottom j-current 
     193      ENDIF 
     194 
     195      CALL iom_put( "avt" , avt                        )    ! T vert. eddy diff. coef. 
     196      CALL iom_put( "avm" , avmu                       )    ! T vert. eddy visc. coef. 
     197      CALL iom_put( "avs" , fsavs(:,:,:)               )    ! S vert. eddy diff. coef. (useful only with key_zdfddm) 
     198 
     199      IF ( iom_use("sstgrad") .OR. iom_use("sstgrad2") ) THEN 
    225200         DO jj = 2, jpjm1                                    ! sst gradient 
    226201            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    234209         CALL lbc_lnk( z2d, 'T', 1. ) 
    235210         CALL iom_put( "sstgrad2",  z2d               )    ! square of module of sst gradient 
    236          !CDIR NOVERRCHK< 
    237211         z2d(:,:) = SQRT( z2d(:,:) ) 
    238212         CALL iom_put( "sstgrad" ,  z2d               )    ! module of sst gradient 
     
    243217         z2d(:,:)  = 0._wp  
    244218         DO jk = 1, jpkm1 
    245             DO jj = 2, jpjm1 
    246                DO ji = fs_2, fs_jpim1   ! vector opt. 
     219            DO jj = 1, jpj 
     220               DO ji = 1, jpi 
    247221                  z2d(ji,jj) = z2d(ji,jj) + fse3t(ji,jj,jk) * tsn(ji,jj,jk,jp_tem) * tmask(ji,jj,jk) 
    248222               END DO 
    249223            END DO 
    250224         END DO 
    251          CALL lbc_lnk( z2d, 'T', 1. ) 
    252225         CALL iom_put( "heatc", (rau0 * rcp) * z2d )    ! vertically integrated heat content (J/m2) 
    253226      ENDIF 
     
    256229         z2d(:,:)  = 0._wp  
    257230         DO jk = 1, jpkm1 
    258             DO jj = 2, jpjm1 
    259                DO ji = fs_2, fs_jpim1   ! vector opt. 
     231            DO jj = 1, jpj 
     232               DO ji = 1, jpi 
    260233                  z2d(ji,jj) = z2d(ji,jj) + fse3t(ji,jj,jk) * tsn(ji,jj,jk,jp_sal) * tmask(ji,jj,jk) 
    261234               END DO 
    262235            END DO 
    263236         END DO 
    264          CALL lbc_lnk( z2d, 'T', 1. ) 
    265237         CALL iom_put( "saltc", rau0 * z2d )   ! vertically integrated salt content (PSU*kg/m2) 
    266238      ENDIF 
  • trunk/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90

    r4998 r5107  
    588588      INTEGER, INTENT( in )               :: kt       ! time step 
    589589      !! * Local declarations 
    590       REAL(wp), POINTER, DIMENSION(:,:,:) :: z_e3t_def 
    591590      INTEGER                             :: ji,jj,jk       ! dummy loop indices 
    592591      !!---------------------------------------------------------------------- 
    593592 
    594593      IF( nn_timing == 1 )  CALL timing_start('dom_vvl_sf_swp') 
    595       ! 
    596       CALL wrk_alloc( jpi, jpj, jpk, z_e3t_def                ) 
    597594      ! 
    598595      IF( kt == nit000 )   THEN 
     
    679676      ! Write outputs 
    680677      ! ============= 
    681       z_e3t_def(:,:,:) = ( ( fse3t_n(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 
    682       CALL iom_put( "cellthc" , fse3t_n  (:,:,:) ) 
     678      CALL iom_put(     "e3t" , fse3t_n  (:,:,:) ) 
     679      CALL iom_put(     "e3u" , fse3u_n  (:,:,:) ) 
     680      CALL iom_put(     "e3v" , fse3v_n  (:,:,:) ) 
     681      CALL iom_put(     "e3w" , fse3w_n  (:,:,:) ) 
    683682      CALL iom_put( "tpt_dep" , fsde3w_n (:,:,:) ) 
    684       CALL iom_put( "e3tdef"  , z_e3t_def(:,:,:) ) 
     683      IF( iom_use("e3tdef") )   & 
     684         CALL iom_put( "e3tdef"  , ( ( fse3t_n(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 ) 
    685685 
    686686      ! write restart file 
    687687      ! ================== 
    688688      IF( lrst_oce ) CALL dom_vvl_rst( kt, 'WRITE' ) 
    689       ! 
    690       CALL wrk_dealloc( jpi, jpj, jpk, z_e3t_def ) 
    691689      ! 
    692690      IF( nn_timing == 1 )  CALL timing_stop('dom_vvl_sf_swp') 
Note: See TracChangeset for help on using the changeset viewer.