Changeset 7008


Ignore:
Timestamp:
2016-10-07T12:31:36+02:00 (4 years ago)
Author:
mathiot
Message:

add ice shelf 3d output

Location:
branches/UKMO/v3_6_extra_CMIP6_diagnostics/NEMOGCM
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/v3_6_extra_CMIP6_diagnostics/NEMOGCM/CONFIG/SHARED/field_def.xml

    r6958 r7008  
    201201         <!-- * variable related to ice shelf forcing * --> 
    202202         <field id="fwfisf"       long_name="Ice shelf melting"                             unit="kg/m2/s"  /> 
    203          <field id="qisf"         long_name="Ice Shelf Heat Flux"                           unit="W/m2"     /> 
     203         <field id="fwfisf3d"     long_name="Ice shelf melting"                             unit="kg/m2/s"  grid_ref="grid_T_3D" /> 
     204         <field id="qlatisf"      long_name="Ice shelf latent heat flux"                    unit="W/m2"     /> 
     205         <field id="qlatisf3d"    long_name="Ice shelf latent heat flux"                    unit="W/m2"     grid_ref="grid_T_3D" /> 
     206         <field id="qhcisf"       long_name="Ice shelf heat content flux"                   unit="W/m2"     /> 
     207         <field id="qhcisf3d"     long_name="Ice shelf heat content flux"                   unit="W/m2"     grid_ref="grid_T_3D" /> 
    204208         <field id="isfgammat"    long_name="transfert coefficient for isf (temperature)"   unit="m/s"      /> 
    205209         <field id="isfgammas"    long_name="transfert coefficient for isf (salinity)"      unit="m/s"      /> 
  • branches/UKMO/v3_6_extra_CMIP6_diagnostics/NEMOGCM/NEMO/OPA_SRC/SBC/sbcisf.F90

    r6427 r7008  
    9191    CHARACTER (LEN=32)           :: cvarLeff                    ! variable name for efficient Length scale 
    9292    INTEGER           ::   ios           ! Local integer output status for namelist read 
     93 
     94    REAL(wp), DIMENSION(:,:,:), POINTER :: zfwfisf3d, zqhcisf3d, zqlatisf3d 
     95    REAL(wp), DIMENSION(:,:  ), POINTER :: zqhcisf2d 
    9396      ! 
    9497      !!--------------------------------------------------------------------- 
     
    273276 
    274277         ! output 
    275          IF( iom_use('qisf'  ) )   CALL iom_put('qisf'  , qisf) 
    276          IF( iom_use('fwfisf') )   CALL iom_put('fwfisf', fwfisf * stbl(:,:) / soce ) 
     278         IF( iom_use('qlatisf' ) )   CALL iom_put('qlatisf', qisf) 
     279         IF( iom_use('fwfisf'  ) )   CALL iom_put('fwfisf' , fwfisf * stbl(:,:) / soce ) 
    277280 
    278281         ! if apply only on the trend and not as a volume flux (rdivisf = 0), fwfisf have to be set to 0 now 
     
    284287         CALL lbc_lnk(fwfisf(:,:)   ,'T',1.) 
    285288         CALL lbc_lnk(qisf(:,:)     ,'T',1.) 
     289 
     290!============================================================================================================================================= 
     291         IF ( iom_use('fwfisf3d') .OR. iom_use('qlatisf3d') .OR. iom_use('qhcisf3d') .OR. iom_use('qhcisf')) THEN 
     292            CALL wrk_alloc( jpi,jpj,jpk, zfwfisf3d, zqhcisf3d, zqlatisf3d ) 
     293            CALL wrk_alloc( jpi,jpj,     zqhcisf2d                        ) 
     294 
     295            zfwfisf3d(:,:,:) = 0.0_wp                         ! 3d ice shelf melting (kg/m2/s) 
     296            zqhcisf3d(:,:,:) = 0.0_wp                         ! 3d heat content flux (W/m2) 
     297            zqlatisf3d(:,:,:)= 0.0_wp                         ! 3d ice shelf melting latent heat flux (W/m2) 
     298            zqhcisf2d(:,:)   = fwfisf(:,:) * zt_frz * rcp     ! 2d heat content flux (W/m2) 
     299 
     300            DO jj = 1,jpj 
     301               DO ji = 1,jpi 
     302                  ikt = misfkt(ji,jj) 
     303                  ikb = misfkb(ji,jj) 
     304                  DO jk = ikt, ikb - 1 
     305                     zfwfisf3d (ji,jj,jk) = zfwfisf3d (ji,jj,jk) + fwfisf   (ji,jj) * r1_hisf_tbl(ji,jj) * fse3t(ji,jj,jk) 
     306                     zqhcisf3d (ji,jj,jk) = zqhcisf3d (ji,jj,jk) + zqhcisf2d(ji,jj) * r1_hisf_tbl(ji,jj) * fse3t(ji,jj,jk) 
     307                     zqlatisf3d(ji,jj,jk) = zqlatisf3d(ji,jj,jk) + qisf     (ji,jj) * r1_hisf_tbl(ji,jj) * fse3t(ji,jj,jk) 
     308                  END DO 
     309                  zfwfisf3d (ji,jj,jk) = zfwfisf3d (ji,jj,jk) + fwfisf   (ji,jj) * r1_hisf_tbl(ji,jj) * ralpha(ji,jj) * fse3t(ji,jj,jk) 
     310                  zqhcisf3d (ji,jj,jk) = zqhcisf3d (ji,jj,jk) + zqhcisf2d(ji,jj) * r1_hisf_tbl(ji,jj) * ralpha(ji,jj) * fse3t(ji,jj,jk) 
     311                  zqlatisf3d(ji,jj,jk) = zqlatisf3d(ji,jj,jk) + qisf     (ji,jj) * r1_hisf_tbl(ji,jj) * ralpha(ji,jj) * fse3t(ji,jj,jk) 
     312               END DO 
     313            END DO 
     314 
     315            CALL iom_put('fwfisf3d' , zfwfisf3d (:,:,:)) 
     316            CALL iom_put('qlatisf3d', zqlatisf3d(:,:,:)) 
     317            CALL iom_put('qhcisf3d' , zqhcisf3d (:,:,:)) 
     318            CALL iom_put('qhcisf'   , zqhcisf2d (:,:  )) 
     319 
     320            CALL wrk_dealloc( jpi,jpj,jpk, zfwfisf3d, zqhcisf3d, zqlatisf3d ) 
     321            CALL wrk_dealloc( jpi,jpj,     zqhcisf2d                        ) 
     322         END IF 
     323!============================================================================================================================================= 
    286324 
    287325         IF( kt == nit000 ) THEN                          !   set the forcing field at nit000 - 1    ! 
Note: See TracChangeset for help on using the changeset viewer.