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 4967 for branches/2014/dev_MERGE_2014 – NEMO

Ignore:
Timestamp:
2014-12-03T15:06:15+01:00 (9 years ago)
Author:
smasson
Message:

dev_MERGE_2014: add iom_use

Location:
branches/2014/dev_MERGE_2014/NEMOGCM/NEMO
Files:
19 edited

Legend:

Unmodified
Added
Removed
  • branches/2014/dev_MERGE_2014/NEMOGCM/NEMO/LIM_SRC_2/limsbc_2.F90

    r4946 r4967  
    3636   USE wrk_nemo         ! work arrays 
    3737   USE in_out_manager   ! I/O manager 
    38    USE diaar5, ONLY :   lk_diaar5 
    3938   USE iom              ! I/O library 
    4039   USE prtctl           ! Print control 
     
    242241      ENDIF 
    243242 
    244       CALL iom_put( 'hflx_ice_cea', - fdtcn(:,:) )       
    245       CALL iom_put( 'qns_io_cea', qns(:,:) - zqnsoce(:,:) * pfrld(:,:) )       
    246       CALL iom_put( 'qsr_io_cea', fstric(:,:) * (1.e0 - pfrld(:,:)) ) 
    247  
    248       IF( lk_diaar5 ) THEN       ! AR5 diagnostics 
    249          CALL iom_put( 'isnwmlt_cea'  ,                 rdm_snw(:,:) * r1_rdtice ) 
    250          CALL iom_put( 'fsal_virt_cea',   soce_0(:,:) * rdm_ice(:,:) * r1_rdtice ) 
    251          CALL iom_put( 'fsal_real_cea', - sice_0(:,:) * rdm_ice(:,:) * r1_rdtice ) 
    252       ENDIF 
     243      IF( iom_use('hflx_ice_cea' ) )   CALL iom_put( 'hflx_ice_cea', - fdtcn(:,:) )       
     244      IF( iom_use('qns_io_cea'   ) )   CALL iom_put( 'qns_io_cea', qns(:,:) - zqnsoce(:,:) * pfrld(:,:) )       
     245      IF( iom_use('qsr_io_cea'   ) )   CALL iom_put( 'qsr_io_cea', fstric(:,:) * (1.e0 - pfrld(:,:)) ) 
     246 
     247      IF( iom_use('isnwmlt_cea'  ) )   CALL iom_put( 'isnwmlt_cea'  ,                 rdm_snw(:,:) * r1_rdtice ) 
     248      IF( iom_use('fsal_virt_cea') )   CALL iom_put( 'fsal_virt_cea',   soce_0(:,:) * rdm_ice(:,:) * r1_rdtice ) 
     249      IF( iom_use('fsal_real_cea') )   CALL iom_put( 'fsal_real_cea', - sice_0(:,:) * rdm_ice(:,:) * r1_rdtice ) 
    253250 
    254251      !-----------------------------------------------! 
     
    264261         CALL albedo_ice( tn_ice, ht_i, ht_s, zalbp, zalb ) 
    265262         alb_ice(:,:,1) =  0.5 * ( zalbp(:,:,1) + zalb (:,:,1) )   ! Ice albedo (mean clear and overcast skys) 
    266          CALL iom_put( "icealb_cea", alb_ice(:,:,1) * fr_i(:,:) )  ! ice albedo 
     263         IF( iom_use('icealb_cea' ) )   CALL iom_put( 'icealb_cea', alb_ice(:,:,1) * fr_i(:,:) )  ! ice albedo 
    267264      ENDIF 
    268265 
  • branches/2014/dev_MERGE_2014/NEMOGCM/NEMO/LIM_SRC_2/limthd_2.F90

    r4946 r4967  
    3333   USE limtab_2 
    3434   USE prtctl           ! Print control 
    35    USE diaar5    , ONLY :   lk_diaar5 
    3635   USE lib_fortran      ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    3736    
     
    439438      !-------------------------------------------------------------------------------- 
    440439      ztmp(:,:) = 1. - pfrld(:,:)                                ! fraction of ice after the dynamic, before the thermodynamic 
    441       CALL iom_put( 'ist_cea', (sist(:,:) - rt0) * ztmp(:,:) )   ! Ice surface temperature                [Celius] 
    442       CALL iom_put( 'qsr_ai_cea', qsr_ice(:,:,1) * ztmp(:,:) )   ! Solar flux over the ice                [W/m2] 
    443       CALL iom_put( 'qns_ai_cea', qns_ice(:,:,1) * ztmp(:,:) )   ! Non-solar flux over the ice            [W/m2] 
    444       IF( .NOT. lk_cpl )   CALL iom_put( 'qla_ai_cea', qla_ice(:,:,1) * ztmp(:,:) )     ! Latent flux over the ice  [W/m2] 
     440      IF( iom_use('ist_cea'    ) )   CALL iom_put( 'ist_cea', (sist(:,:) - rt0) * ztmp(:,:) )   ! Ice surface temperature   [Celius] 
     441      IF( iom_use('qsr_ai_cea' ) )   CALL iom_put( 'qsr_ai_cea', qsr_ice(:,:,1) * ztmp(:,:) )   ! Solar flux over the ice     [W/m2] 
     442      IF( iom_use('qns_ai_cea' ) )   CALL iom_put( 'qns_ai_cea', qns_ice(:,:,1) * ztmp(:,:) )   ! Non-solar flux over the ice [W/m2] 
     443      IF( iom_use('qla_ai_cea' ) .AND. .NOT. lk_cpl ) & 
     444         &                           CALL iom_put( 'qla_ai_cea', qla_ice(:,:,1) * ztmp(:,:) )   ! Latent flux over the ice [W/m2] 
    445445      ! 
    446       CALL iom_put( 'snowthic_cea', hsnif  (:,:) * fr_i(:,:) )   ! Snow thickness             [m] 
    447       CALL iom_put( 'icethic_cea' , hicif  (:,:) * fr_i(:,:) )   ! Ice thickness              [m] 
     446      IF( iom_use('snowthic_cea'))   CALL iom_put( 'snowthic_cea', hsnif  (:,:) * fr_i(:,:) )   ! Snow thickness           [m] 
     447      IF( iom_use('icethic_cea' ))   CALL iom_put( 'icethic_cea' , hicif  (:,:) * fr_i(:,:) )   ! Ice thickness            [m] 
    448448      zztmp = 1.0 / rdt_ice 
    449       CALL iom_put( 'iceprod_cea' , hicifp (:,:) * zztmp     )   ! Ice produced               [m/s] 
    450       CALL iom_put( 'iiceconc'    , fr_i(:,:)                )   ! Ice concentration          [-] 
    451       IF( lk_diaar5 ) THEN 
    452          CALL iom_put( 'snowmel_cea' , rdm_snw(:,:) * zztmp     )   ! Snow melt                  [kg/m2/s] 
    453          zztmp = rhoic / rdt_ice 
    454          CALL iom_put( 'sntoice_cea' , zdvonif(:,:) * zztmp     )   ! Snow to Ice transformation [kg/m2/s] 
    455          CALL iom_put( 'ticemel_cea' , zdvosif(:,:) * zztmp     )   ! Melt at Sea Ice top        [kg/m2/s] 
    456          CALL iom_put( 'bicemel_cea' , zdvomif(:,:) * zztmp     )   ! Melt at Sea Ice bottom     [kg/m2/s] 
     449      IF( iom_use('iceprod_cea') )   CALL iom_put( 'iceprod_cea' , hicifp (:,:) * zztmp     )   ! Ice produced             [m/s] 
     450      IF( iom_use('iiceconc'   ) )   CALL iom_put( 'iiceconc'    , fr_i(:,:)                )   ! Ice concentration        [-] 
     451      IF( iom_use('snowmel_cea') )   CALL iom_put( 'snowmel_cea' , rdm_snw(:,:) * zztmp     )   ! Snow melt                [kg/m2/s] 
     452      zztmp = rhoic / rdt_ice 
     453      IF( iom_use('sntoice_cea') )   CALL iom_put( 'sntoice_cea' , zdvonif(:,:) * zztmp     ) ! Snow to Ice transformation [kg/m2/s] 
     454      IF( iom_use('ticemel_cea') )   CALL iom_put( 'ticemel_cea' , zdvosif(:,:) * zztmp     )   ! Melt at Sea Ice top      [kg/m2/s] 
     455      IF( iom_use('bicemel_cea') )   CALL iom_put( 'bicemel_cea' , zdvomif(:,:) * zztmp     )   ! Melt at Sea Ice bottom   [kg/m2/s] 
     456      IF( iom_use('licepro_cea') ) THEN 
    457457         zlicegr(:,:) = MAX( 0.e0, rdm_ice(:,:)-zlicegr(:,:) ) 
    458          CALL iom_put( 'licepro_cea' , zlicegr(:,:) * zztmp     )   ! Lateral sea ice growth     [kg/m2/s] 
     458                                     CALL iom_put( 'licepro_cea' , zlicegr(:,:) * zztmp     )   ! Lateral sea ice growth   [kg/m2/s] 
    459459      ENDIF 
    460460      ! 
    461461      ! Compute the Eastward & Northward sea-ice transport 
    462       zztmp = 0.25 * rhoic 
    463       DO jj = 1, jpjm1  
    464          DO ji = 1, jpim1   ! NO vector opt. 
    465             ! Ice velocities, volume & transport at U & V-points 
    466             zuice_m = u_ice(ji+1,jj+1) + u_ice(ji+1,jj ) 
    467             zvice_m = v_ice(ji+1,jj+1) + v_ice(ji ,jj+1) 
    468             zhice_u = hicif(ji,jj)*e2t(ji,jj)*fr_i(ji,jj) + hicif(ji+1,jj  )*e2t(ji+1,jj  )*fr_i(ji+1,jj  ) 
    469             zhice_v = hicif(ji,jj)*e1t(ji,jj)*fr_i(ji,jj) + hicif(ji  ,jj+1)*e1t(ji  ,jj+1)*fr_i(ji  ,jj+1) 
    470             zu_imasstr(ji,jj) = zztmp * zhice_u * zuice_m  
    471             zv_imasstr(ji,jj) = zztmp * zhice_v * zvice_m  
    472          END DO 
    473       END DO 
    474       CALL lbc_lnk( zu_imasstr, 'U', -1. )   ;   CALL lbc_lnk( zv_imasstr, 'V', -1. ) 
    475       CALL iom_put( 'u_imasstr',  zu_imasstr(:,:) )   ! Ice transport along i-axis at U-point [kg/s]  
    476       CALL iom_put( 'v_imasstr',  zv_imasstr(:,:) )   ! Ice transport along j-axis at V-point [kg/s]  
     462      IF( iom_use('u_imasstr') ) THEN 
     463         zztmp = 0.25 * rhoic 
     464         DO jj = 1, jpjm1  
     465            DO ji = 1, jpim1   ! NO vector opt. 
     466               ! Ice velocities, volume & transport at U-points 
     467               zuice_m = u_ice(ji+1,jj+1) + u_ice(ji+1,jj ) 
     468               zhice_u = hicif(ji,jj)*e2t(ji,jj)*fr_i(ji,jj) + hicif(ji+1,jj  )*e2t(ji+1,jj  )*fr_i(ji+1,jj  ) 
     469               zu_imasstr(ji,jj) = zztmp * zhice_u * zuice_m  
     470            END DO 
     471         END DO 
     472         CALL lbc_lnk( zu_imasstr, 'U', -1. ) 
     473         CALL iom_put( 'u_imasstr',  zu_imasstr(:,:) )   ! Ice transport along i-axis at U-point [kg/s]  
     474      ENDIF 
     475      IF( iom_use('v_imasstr') ) THEN 
     476         zztmp = 0.25 * rhoic 
     477         DO jj = 1, jpjm1  
     478            DO ji = 1, jpim1   ! NO vector opt. 
     479               ! Ice velocities, volume & transport at V-points 
     480               zvice_m = v_ice(ji+1,jj+1) + v_ice(ji ,jj+1) 
     481               zhice_v = hicif(ji,jj)*e1t(ji,jj)*fr_i(ji,jj) + hicif(ji  ,jj+1)*e1t(ji  ,jj+1)*fr_i(ji  ,jj+1) 
     482               zv_imasstr(ji,jj) = zztmp * zhice_v * zvice_m  
     483            END DO 
     484         END DO 
     485         CALL lbc_lnk( zv_imasstr, 'V', -1. ) 
     486         CALL iom_put( 'v_imasstr',  zv_imasstr(:,:) )   ! Ice transport along j-axis at V-point [kg/s] 
     487      ENDIF 
    477488 
    478489      !! Fram Strait sea-ice transport (sea-ice + snow)  (in ORCA2 = 5 points) 
    479       IF( cp_cfg == "orca" .AND. jp_cfg == 2 ) THEN    ! ORCA R2 configuration 
     490      IF( iom_use('fram_trans') .and. cp_cfg == "orca" .AND. jp_cfg == 2 ) THEN    ! ORCA R2 configuration 
    480491         DO jj = mj0(137), mj1(137) ! B grid 
    481492            IF( mj0(jj-1) >= nldj ) THEN 
     
    491502      ENDIF 
    492503 
     504      IF( iom_use('ice_pres') .OR. iom_use('ist_ipa') .OR. iom_use('uice_ipa') .OR. iom_use('vice_ipa') ) THEN 
    493505!! ce     ztmp(:,:) = 1. - AINT( frld(:,:), wp )                        ! return 1 as soon as there is ice 
    494506!! ce     A big warning because the model crashes on IDRIS/IBM SP6 with xlf 13.1.0.3, see ticket #761 
    495 !! ce     We Unroll the loop and everything works fine  
    496       DO jj = 1, jpj 
    497          DO ji = 1, jpi 
    498             ztmp(ji,jj) = 1. - AINT( frld(ji,jj), wp )                ! return 1 as soon as there is ice 
    499          END DO 
    500       END DO 
    501       ! 
    502       CALL iom_put( 'ice_pres'  , ztmp                            )   ! Ice presence                          [-] 
    503       CALL iom_put( 'ist_ipa'   , ( sist(:,:) - rt0 ) * ztmp(:,:) )   ! Ice surface temperature               [Celius] 
    504       CALL iom_put( 'uice_ipa'  ,  u_ice(:,:)         * ztmp(:,:) )   ! Ice velocity along i-axis at I-point  [m/s]  
    505       CALL iom_put( 'vice_ipa'  ,  v_ice(:,:)         * ztmp(:,:) )   ! Ice velocity along j-axis at I-point  [m/s] 
     507!! ce     We Unroll the loop and everything works fine       
     508         DO jj = 1, jpj 
     509            DO ji = 1, jpi 
     510               ztmp(ji,jj) = 1. - AINT( frld(ji,jj), wp )                ! return 1 as soon as there is ice 
     511            END DO 
     512         END DO 
     513         ! 
     514         IF( iom_use('ice_pres') ) CALL iom_put( 'ice_pres', ztmp                            )   ! Ice presence                 [-] 
     515         IF( iom_use('ist_ipa' ) ) CALL iom_put( 'ist_ipa' , ( sist(:,:) - rt0 ) * ztmp(:,:) )   ! Ice surface temperature [Celius] 
     516         IF( iom_use('uice_ipa') ) CALL iom_put( 'uice_ipa', u_ice(:,:) * ztmp(:,:) ) ! Ice velocity along i-axis at I-point  [m/s]  
     517         IF( iom_use('vice_ipa') ) CALL iom_put( 'vice_ipa', v_ice(:,:) * ztmp(:,:) ) ! Ice velocity along j-axis at I-point  [m/s] 
     518      ENDIF 
    506519 
    507520      IF(ln_ctl) THEN 
  • branches/2014/dev_MERGE_2014/NEMOGCM/NEMO/LIM_SRC_3/limdiahsb.F90

    r4946 r4967  
    3535   !!PUBLIC   lim_diahsb_rst   ! routine called by ice_init.F90 
    3636 
    37    REAL(dp) ::   frc_sal, frc_vol   ! global forcing trends 
    38    REAL(dp) ::   bg_grme            ! global ice growth+melt trends 
     37   real(wp) ::   frc_sal, frc_vol   ! global forcing trends 
     38   real(wp) ::   bg_grme            ! global ice growth+melt trends 
    3939   REAL(wp) ::   epsi06 = 1.e-6_wp  ! small number 
    4040 
     
    5858      !!--------------------------------------------------------------------------- 
    5959      !! 
    60       REAL(dp)   ::   zbg_ivo, zbg_svo, zbg_are, zbg_sal ,zbg_tem ,zbg_ihc ,zbg_shc 
    61       REAL(dp)   ::   zbg_sfx, zbg_sfx_bri, zbg_sfx_bog, zbg_sfx_bom, zbg_sfx_sum, zbg_sfx_sni,   & 
     60      real(wp)   ::   zbg_ivo, zbg_svo, zbg_are, zbg_sal ,zbg_tem ,zbg_ihc ,zbg_shc 
     61      real(wp)   ::   zbg_sfx, zbg_sfx_bri, zbg_sfx_bog, zbg_sfx_bom, zbg_sfx_sum, zbg_sfx_sni,   & 
    6262      &               zbg_sfx_opw, zbg_sfx_res, zbg_sfx_dyn  
    63       REAL(dp)   ::   zbg_vfx, zbg_vfx_bog, zbg_vfx_opw, zbg_vfx_sni, zbg_vfx_dyn 
    64       REAL(dp)   ::   zbg_vfx_bom, zbg_vfx_sum, zbg_vfx_res, zbg_vfx_spr, zbg_vfx_snw, zbg_vfx_sub   
    65       REAL(dp)   ::   zbg_hfx_dhc, zbg_hfx_spr 
    66       REAL(dp)   ::   zbg_hfx_res, zbg_hfx_sub, zbg_hfx_dyn, zbg_hfx_thd, zbg_hfx_snw, zbg_hfx_out, zbg_hfx_in    
    67       REAL(dp)   ::   zbg_hfx_sum, zbg_hfx_bom, zbg_hfx_bog, zbg_hfx_dif, zbg_hfx_opw 
    68       REAL(dp)   ::   z_frc_vol, z_frc_sal, z_bg_grme  
    69       REAL(dp)   ::   z1_area                     !    -     - 
    70       REAL(dp)   ::   zinda, zindb 
     63      real(wp)   ::   zbg_vfx, zbg_vfx_bog, zbg_vfx_opw, zbg_vfx_sni, zbg_vfx_dyn 
     64      real(wp)   ::   zbg_vfx_bom, zbg_vfx_sum, zbg_vfx_res, zbg_vfx_spr, zbg_vfx_snw, zbg_vfx_sub   
     65      real(wp)   ::   zbg_hfx_dhc, zbg_hfx_spr 
     66      real(wp)   ::   zbg_hfx_res, zbg_hfx_sub, zbg_hfx_dyn, zbg_hfx_thd, zbg_hfx_snw, zbg_hfx_out, zbg_hfx_in    
     67      real(wp)   ::   zbg_hfx_sum, zbg_hfx_bom, zbg_hfx_bog, zbg_hfx_dif, zbg_hfx_opw 
     68      real(wp)   ::   z_frc_vol, z_frc_sal, z_bg_grme  
     69      real(wp)   ::   z1_area                     !    -     - 
     70      real(wp)   ::   zinda, zindb 
     71      REAL(wp)   ::   ztmp 
    7172      !!--------------------------------------------------------------------------- 
    7273      IF( nn_timing == 1 )   CALL timing_start('lim_diahsb') 
     
    9192 
    9293      ! Volume 
    93       zbg_vfx     = zinda * glob_sum(      emp(:,:) * area(:,:) * tms(:,:) ) * z1_area * r1_rau0 * rday 
    94       zbg_vfx_bog = zinda * glob_sum( wfx_bog(:,:) * area(:,:) * tms(:,:) ) * z1_area * r1_rau0 * rday 
    95       zbg_vfx_opw = zinda * glob_sum( wfx_opw(:,:) * area(:,:) * tms(:,:) ) * z1_area * r1_rau0 * rday 
    96       zbg_vfx_sni = zinda * glob_sum( wfx_sni(:,:) * area(:,:) * tms(:,:) ) * z1_area * r1_rau0 * rday 
    97       zbg_vfx_dyn = zinda * glob_sum( wfx_dyn(:,:) * area(:,:) * tms(:,:) ) * z1_area * r1_rau0 * rday 
    98       zbg_vfx_bom = zinda * glob_sum( wfx_bom(:,:) * area(:,:) * tms(:,:) ) * z1_area * r1_rau0 * rday 
    99       zbg_vfx_sum = zinda * glob_sum( wfx_sum(:,:) * area(:,:) * tms(:,:) ) * z1_area * r1_rau0 * rday 
    100       zbg_vfx_res = zinda * glob_sum( wfx_res(:,:) * area(:,:) * tms(:,:) ) * z1_area * r1_rau0 * rday 
    101       zbg_vfx_spr = zinda * glob_sum( wfx_spr(:,:) * area(:,:) * tms(:,:) ) * z1_area * r1_rau0 * rday 
    102       zbg_vfx_snw = zinda * glob_sum( wfx_snw(:,:) * area(:,:) * tms(:,:) ) * z1_area * r1_rau0 * rday 
    103       zbg_vfx_sub = zinda * glob_sum( wfx_sub(:,:) * area(:,:) * tms(:,:) ) * z1_area * r1_rau0 * rday 
     94      ztmp = zinda * z1_area * r1_rau0 * rday 
     95      zbg_vfx     = ztmp * glob_sum(     emp(:,:) * area(:,:) * tms(:,:) ) 
     96      zbg_vfx_bog = ztmp * glob_sum( wfx_bog(:,:) * area(:,:) * tms(:,:) ) 
     97      zbg_vfx_opw = ztmp * glob_sum( wfx_opw(:,:) * area(:,:) * tms(:,:) ) 
     98      zbg_vfx_sni = ztmp * glob_sum( wfx_sni(:,:) * area(:,:) * tms(:,:) ) 
     99      zbg_vfx_dyn = ztmp * glob_sum( wfx_dyn(:,:) * area(:,:) * tms(:,:) ) 
     100      zbg_vfx_bom = ztmp * glob_sum( wfx_bom(:,:) * area(:,:) * tms(:,:) ) 
     101      zbg_vfx_sum = ztmp * glob_sum( wfx_sum(:,:) * area(:,:) * tms(:,:) ) 
     102      zbg_vfx_res = ztmp * glob_sum( wfx_res(:,:) * area(:,:) * tms(:,:) ) 
     103      zbg_vfx_spr = ztmp * glob_sum( wfx_spr(:,:) * area(:,:) * tms(:,:) ) 
     104      zbg_vfx_snw = ztmp * glob_sum( wfx_snw(:,:) * area(:,:) * tms(:,:) ) 
     105      zbg_vfx_sub = ztmp * glob_sum( wfx_sub(:,:) * area(:,:) * tms(:,:) ) 
    104106 
    105107      ! Salt 
    106       zbg_sfx     = zinda * glob_sum(     sfx(:,:) * area(:,:) * tms(:,:) ) * z1_area * r1_rau0 * rday 
    107       zbg_sfx_bri = zinda * glob_sum( sfx_bri(:,:) * area(:,:) * tms(:,:) ) * z1_area * r1_rau0 * rday 
    108       zbg_sfx_res = zinda * glob_sum( sfx_res(:,:) * area(:,:) * tms(:,:) ) * z1_area * r1_rau0 * rday 
    109       zbg_sfx_dyn = zinda * glob_sum( sfx_dyn(:,:) * area(:,:) * tms(:,:) ) * z1_area * r1_rau0 * rday 
    110  
    111       zbg_sfx_bog = zinda * glob_sum( sfx_bog(:,:) * area(:,:) * tms(:,:) ) * z1_area * r1_rau0 * rday 
    112       zbg_sfx_opw = zinda * glob_sum( sfx_opw(:,:) * area(:,:) * tms(:,:) ) * z1_area * r1_rau0 * rday 
    113       zbg_sfx_sni = zinda * glob_sum( sfx_sni(:,:) * area(:,:) * tms(:,:) ) * z1_area * r1_rau0 * rday 
    114       zbg_sfx_bom = zinda * glob_sum( sfx_bom(:,:) * area(:,:) * tms(:,:) ) * z1_area * r1_rau0 * rday 
    115       zbg_sfx_sum = zinda * glob_sum( sfx_sum(:,:) * area(:,:) * tms(:,:) ) * z1_area * r1_rau0 * rday 
     108      zbg_sfx     = ztmp * glob_sum(     sfx(:,:) * area(:,:) * tms(:,:) ) 
     109      zbg_sfx_bri = ztmp * glob_sum( sfx_bri(:,:) * area(:,:) * tms(:,:) ) 
     110      zbg_sfx_res = ztmp * glob_sum( sfx_res(:,:) * area(:,:) * tms(:,:) ) 
     111      zbg_sfx_dyn = ztmp * glob_sum( sfx_dyn(:,:) * area(:,:) * tms(:,:) ) 
     112 
     113      zbg_sfx_bog = ztmp * glob_sum( sfx_bog(:,:) * area(:,:) * tms(:,:) ) 
     114      zbg_sfx_opw = ztmp * glob_sum( sfx_opw(:,:) * area(:,:) * tms(:,:) ) 
     115      zbg_sfx_sni = ztmp * glob_sum( sfx_sni(:,:) * area(:,:) * tms(:,:) ) 
     116      zbg_sfx_bom = ztmp * glob_sum( sfx_bom(:,:) * area(:,:) * tms(:,:) ) 
     117      zbg_sfx_sum = ztmp * glob_sum( sfx_sum(:,:) * area(:,:) * tms(:,:) ) 
    116118 
    117119      ! Heat budget 
     
    155157      zindb = MAX( 0._wp , SIGN( 1._wp , zbg_ivo - epsi06 ) ) 
    156158      ! 
     159      IF( iom_use('ibgvoltot') )   & 
    157160      CALL iom_put( 'ibgvoltot' , zbg_ivo * rhoic * r1_rau0 * 1.e-9        )   ! ice volume (km3 equivalent liquid)          
     161      IF( iom_use('sbgvoltot') )   & 
    158162      CALL iom_put( 'sbgvoltot' , zbg_svo * rhosn * r1_rau0 * 1.e-9        )   ! snw volume (km3 equivalent liquid)        
     163      IF( iom_use('ibgarea') )   & 
    159164      CALL iom_put( 'ibgarea'   , zbg_are * 1.e-6                          )   ! ice area   (km2) 
     165      IF( iom_use('ibgsaline') )   & 
    160166      CALL iom_put( 'ibgsaline' , zindb * zbg_sal / MAX( zbg_ivo, epsi06 ) )   ! ice saline (psu) 
     167      IF( iom_use('ibgtemper') )   & 
    161168      CALL iom_put( 'ibgtemper' , zindb * zbg_tem / MAX( zbg_ivo, epsi06 ) )   ! ice temper (C) 
    162169      CALL iom_put( 'ibgheatco' , zbg_ihc                                  )   ! ice heat content (1.e20 J)         
    163170      CALL iom_put( 'sbgheatco' , zbg_shc                                  )   ! snw heat content (1.e20 J) 
     171      IF( iom_use('ibgsaltco') )   & 
    164172      CALL iom_put( 'ibgsaltco' , zbg_sal * rhoic * r1_rau0 * 1.e-9        )   ! ice salt content (psu*km3 equivalent liquid)         
    165173 
     
    204212      CALL iom_put( 'ibgfrcvol' , frc_vol * 1.e-9                          )   ! vol - forcing     (km3 equivalent liquid)  
    205213      CALL iom_put( 'ibgfrcsfx' , frc_sal * 1.e-9                          )   ! sal - forcing     (psu*km3 equivalent liquid)    
     214      IF( iom_use('ibgvolgrm') )   & 
    206215      CALL iom_put( 'ibgvolgrm' , bg_grme * r1_rau0 * 1.e-9                )   ! vol growth + melt (km3 equivalent liquid)          
    207216 
  • branches/2014/dev_MERGE_2014/NEMOGCM/NEMO/LIM_SRC_3/limsbc.F90

    r4946 r4967  
    116116 
    117117      ! make calls for heat fluxes before it is modified 
    118       CALL iom_put( "qsr_oce" , qsr(:,:) * pfrld(:,:) )   !     solar flux at ocean surface 
    119       CALL iom_put( "qns_oce" , qns(:,:) * pfrld(:,:) )   ! non-solar flux at ocean surface 
    120       CALL iom_put( "qsr_ice" , SUM( qsr_ice(:,:,:) * a_i_b(:,:,:), dim=3 ) ) !     solar flux at ice surface 
    121       CALL iom_put( "qns_ice" , SUM( qns_ice(:,:,:) * a_i_b(:,:,:), dim=3 ) ) ! non-solar flux at ice surface 
    122       CALL iom_put( "qtr_ice" , SUM( ftr_ice(:,:,:) * a_i_b(:,:,:), dim=3 ) ) !     solar flux transmitted thru ice 
    123       CALL iom_put( "qt_oce"  , ( qsr(:,:) + qns(:,:) ) * pfrld(:,:) )   
    124       CALL iom_put( "qt_ice"  , SUM( ( qns_ice(:,:,:) + qsr_ice(:,:,:) ) * a_i_b(:,:,:), dim=3 ) ) 
     118      IF( iom_use('qsr_oce') )   CALL iom_put( "qsr_oce" , qsr(:,:) * pfrld(:,:) )   !     solar flux at ocean surface 
     119      IF( iom_use('qns_oce') )   CALL iom_put( "qns_oce" , qns(:,:) * pfrld(:,:) )   ! non-solar flux at ocean surface 
     120      IF( iom_use('qsr_ice') )   CALL iom_put( "qsr_ice" , SUM( qsr_ice(:,:,:) * a_i_b(:,:,:), dim=3 ) ) !     solar flux at ice surface 
     121      IF( iom_use('qns_ice') )   CALL iom_put( "qns_ice" , SUM( qns_ice(:,:,:) * a_i_b(:,:,:), dim=3 ) ) ! non-solar flux at ice surface 
     122      IF( iom_use('qtr_ice') )   CALL iom_put( "qtr_ice" , SUM( ftr_ice(:,:,:) * a_i_b(:,:,:), dim=3 ) ) !     solar flux transmitted thru ice 
     123      IF( iom_use('qt_oce' ) )   CALL iom_put( "qt_oce"  , ( qsr(:,:) + qns(:,:) ) * pfrld(:,:) )   
     124      IF( iom_use('qt_ice' ) )   CALL iom_put( "qt_ice"  , SUM( ( qns_ice(:,:,:) + qsr_ice(:,:,:) ) * a_i_b(:,:,:), dim=3 ) ) 
    125125 
    126126      ! pfrld is the lead fraction at the previous time step (actually between TRP and THD) 
  • branches/2014/dev_MERGE_2014/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90

    r4924 r4967  
    6161      INTEGER ::  ji, jj, jk, jl  ! dummy loop indices 
    6262      REAL(wp) ::  zinda, zindb, z1_365 
     63      REAL(wp) ::  ztmp 
    6364      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zoi, zei 
    6465      REAL(wp), POINTER, DIMENSION(:,:)   :: z2d, z2da, z2db, zind    ! 2D workspace 
     
    199200      CALL iom_put( "sfx"         , sfx     * rday      )        ! total salt flux 
    200201 
    201       CALL iom_put( "vfxres"     , wfx_res * rday / rhoic  )        ! daily prod./melting due to limupdate  
    202       CALL iom_put( "vfxopw"     , wfx_opw * rday / rhoic  )        ! daily lateral thermodynamic ice production 
    203       CALL iom_put( "vfxsni"     , wfx_sni * rday / rhoic  )        ! daily snowice ice production 
    204       CALL iom_put( "vfxbog"     , wfx_bog * rday / rhoic  )       ! daily bottom thermodynamic ice production 
    205       CALL iom_put( "vfxdyn"     , wfx_dyn * rday / rhoic  )       ! daily dynamic ice production (rid/raft) 
    206       CALL iom_put( "vfxsum"     , wfx_sum * rday / rhoic  )        ! surface melt  
    207       CALL iom_put( "vfxbom"     , wfx_bom * rday / rhoic  )        ! bottom melt  
    208       CALL iom_put( "vfxice"     , wfx_ice * rday / rhoic  )        ! total ice growth/melt  
    209       CALL iom_put( "vfxsnw"     , wfx_snw * rday / rhoic  )        ! total snw growth/melt  
    210       CALL iom_put( "vfxsub"     , wfx_sub * rday / rhoic  )        ! sublimation (snow)  
    211       CALL iom_put( "vfxspr"     , wfx_spr * rday / rhoic  )        ! precip (snow)  
     202      ztmp = rday / rhoic 
     203      CALL iom_put( "vfxres"     , wfx_res * ztmp  )             ! daily prod./melting due to limupdate  
     204      CALL iom_put( "vfxopw"     , wfx_opw * ztmp  )             ! daily lateral thermodynamic ice production 
     205      CALL iom_put( "vfxsni"     , wfx_sni * ztmp  )             ! daily snowice ice production 
     206      CALL iom_put( "vfxbog"     , wfx_bog * ztmp  )             ! daily bottom thermodynamic ice production 
     207      CALL iom_put( "vfxdyn"     , wfx_dyn * ztmp  )             ! daily dynamic ice production (rid/raft) 
     208      CALL iom_put( "vfxsum"     , wfx_sum * ztmp  )             ! surface melt  
     209      CALL iom_put( "vfxbom"     , wfx_bom * ztmp  )             ! bottom melt  
     210      CALL iom_put( "vfxice"     , wfx_ice * ztmp  )             ! total ice growth/melt  
     211      CALL iom_put( "vfxsnw"     , wfx_snw * ztmp  )             ! total snw growth/melt  
     212      CALL iom_put( "vfxsub"     , wfx_sub * ztmp  )             ! sublimation (snow)  
     213      CALL iom_put( "vfxspr"     , wfx_spr * ztmp  )             ! precip (snow)  
    212214 
    213215      CALL iom_put ('hfxthd', hfx_thd(:,:) )   !   
  • branches/2014/dev_MERGE_2014/NEMOGCM/NEMO/OPA_SRC/DIA/diahsb.F90

    r4946 r4967  
    3737   LOGICAL, PUBLIC ::   ln_diahsb   !: check the heat and salt budgets 
    3838 
    39    REAL(dp)                                ::   surf_tot                ! 
    40    REAL(dp)                                ::   frc_t      , frc_s     , frc_v   ! global forcing trends 
    41    REAL(dp)                                ::   frc_wn_t      , frc_wn_s ! global forcing trends 
    42    REAL(dp), DIMENSION(:,:)  , ALLOCATABLE ::   surf      , ssh_ini              ! 
    43    REAL(dp), DIMENSION(:,:,:), ALLOCATABLE ::   hc_loc_ini, sc_loc_ini, e3t_ini  ! 
    44    REAL(dp), DIMENSION(:,:)  , ALLOCATABLE ::   ssh_hc_loc_ini, ssh_sc_loc_ini 
     39   real(wp)                                ::   surf_tot                ! 
     40   real(wp)                                ::   frc_t      , frc_s     , frc_v   ! global forcing trends 
     41   real(wp)                                ::   frc_wn_t      , frc_wn_s ! global forcing trends 
     42   real(wp), DIMENSION(:,:)  , ALLOCATABLE ::   surf      , ssh_ini              ! 
     43   real(wp), DIMENSION(:,:,:), ALLOCATABLE ::   hc_loc_ini, sc_loc_ini, e3t_ini  ! 
     44   real(wp), DIMENSION(:,:)  , ALLOCATABLE ::   ssh_hc_loc_ini, ssh_sc_loc_ini 
    4545 
    4646   !! * Substitutions 
     
    7070      !! 
    7171      INTEGER    ::   jk, ji, jj                          ! dummy loop indice 
    72       REAL(dp)   ::   zdiff_hc    , zdiff_sc      ! heat and salt content variations 
    73       REAL(dp)   ::   zdiff_hc1   , zdiff_sc1     ! -   -   -   -   -   -   -   -  
    74       REAL(dp)   ::   zdiff_v1    , zdiff_v2      ! volume variation 
    75       REAL(dp)   ::   zerr_hc1    , zerr_sc1       ! heat and salt content misfit 
    76       REAL(dp)   ::   zvol_tot                    ! volume 
    77       REAL(dp)   ::   z_frc_trd_t , z_frc_trd_s   !    -     - 
    78       REAL(dp)   ::   z_frc_trd_v                 !    -     - 
    79       REAL(dp)   ::   z_wn_trd_t , z_wn_trd_s   !    -     - 
    80       REAL(dp)   ::   z_ssh_hc , z_ssh_sc   !    -     - 
    81       REAL(dp), DIMENSION(:,:), POINTER       ::   z2d0, z2d1 
     72      real(wp)   ::   zdiff_hc    , zdiff_sc      ! heat and salt content variations 
     73      real(wp)   ::   zdiff_hc1   , zdiff_sc1     ! -   -   -   -   -   -   -   -  
     74      real(wp)   ::   zdiff_v1    , zdiff_v2      ! volume variation 
     75      real(wp)   ::   zerr_hc1    , zerr_sc1       ! heat and salt content misfit 
     76      real(wp)   ::   zvol_tot                    ! volume 
     77      real(wp)   ::   z_frc_trd_t , z_frc_trd_s   !    -     - 
     78      real(wp)   ::   z_frc_trd_v                 !    -     - 
     79      real(wp)   ::   z_wn_trd_t , z_wn_trd_s   !    -     - 
     80      real(wp)   ::   z_ssh_hc , z_ssh_sc   !    -     - 
     81      real(wp), DIMENSION(:,:), POINTER       ::   z2d0, z2d1 
    8282      !!--------------------------------------------------------------------------- 
    8383      IF( nn_timing == 1 )   CALL timing_start('dia_hsb')       
  • branches/2014/dev_MERGE_2014/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90

    r4946 r4967  
    4444   USE in_out_manager  ! I/O manager 
    4545   USE diadimg         ! dimg direct access file format output 
    46    USE diaar5, ONLY :   lk_diaar5 
    4746   USE iom 
    4847   USE ioipsl 
     
    129128      !! 
    130129      REAL(wp), POINTER, DIMENSION(:,:)   :: z2d      ! 2D workspace 
    131       REAL(wp), POINTER, DIMENSION(:,:)   :: z2ds     ! 2D workspace 
    132130      REAL(wp), POINTER, DIMENSION(:,:,:) :: z3d      ! 3D workspace 
    133131      !!---------------------------------------------------------------------- 
     
    135133      IF( nn_timing == 1 )   CALL timing_start('dia_wri') 
    136134      !  
    137       CALL wrk_alloc( jpi , jpj      , z2d , z2ds ) 
     135      CALL wrk_alloc( jpi , jpj      , z2d ) 
    138136      CALL wrk_alloc( jpi , jpj, jpk , z3d ) 
    139137      ! 
     
    175173      ELSE 
    176174         CALL iom_put( "toce" , tsn(:,:,:,jp_tem)        )   ! temperature 
    177          DO jj = 1, jpj 
    178             DO ji = 1, jpi 
    179                z2d(ji,jj) = tsn(ji,jj,mikt(ji,jj),jp_tem) 
    180             END DO 
    181          END DO          
    182          CALL iom_put( "sst"  , z2d(:,:)            ) ! sea surface temperature 
    183          CALL iom_put( "sst2" , z2d(:,:) * z2d(:,:) ) ! square of sea surface 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 
    184184         CALL iom_put( "soce" , tsn(:,:,:,jp_sal)          )   ! salinity 
    185          DO jj = 1, jpj 
    186             DO ji = 1, jpi 
    187                z2d(ji,jj) = tsn(ji,jj,mikt(ji,jj),jp_sal) 
    188             END DO 
    189          END DO 
    190          CALL iom_put( "sss"  , z2d(:,:)            ) ! sea surface 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 
    191193         CALL iom_put( "sss2" , z2d(:,:) * z2d(:,:) ) ! square of sea surface salinity 
    192194      END IF 
     
    197199         CALL iom_put( "uoce" , umask(:,:,:) * un(:,:,:)                  )    ! i-current 
    198200         CALL iom_put( "voce" , vmask(:,:,:) * vn(:,:,:)                  )    ! j-current 
    199          DO jj = 1, jpj 
    200             DO ji = 1, jpi 
    201                z2d(ji,jj) = un(ji,jj,miku(ji,jj)) 
    202             END DO 
    203          END DO 
    204          CALL iom_put( "ssu"   , z2d                                    )    ! i-current 
    205          DO jj = 1, jpj 
    206             DO ji = 1, jpi 
    207                z2d(ji,jj) = vn(ji,jj,mikv(ji,jj)) 
    208             END DO 
    209          END DO 
    210          CALL iom_put( "ssv"   , z2d                                    )    ! j-current 
    211       END IF 
     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 
    212218      CALL iom_put(    "avt"  , avt                        )    ! T vert. eddy diff. coef. 
    213219      CALL iom_put(    "avm"  , avmu                       )    ! T vert. eddy visc. coef. 
     
    216222      ENDIF 
    217223 
    218       DO jj = 2, jpjm1                                    ! sst gradient 
    219          DO ji = fs_2, fs_jpim1   ! vector opt. 
    220             zztmp      = tsn(ji,jj,1,jp_tem) 
    221             zztmpx     = ( tsn(ji+1,jj  ,1,jp_tem) - zztmp ) / e1u(ji,jj) + ( zztmp - tsn(ji-1,jj  ,1,jp_tem) ) / e1u(ji-1,jj  ) 
    222             zztmpy     = ( tsn(ji  ,jj+1,1,jp_tem) - zztmp ) / e2v(ji,jj) + ( zztmp - tsn(ji  ,jj-1,1,jp_tem) ) / e2v(ji  ,jj-1) 
    223             z2d(ji,jj) = 0.25 * ( zztmpx * zztmpx + zztmpy * zztmpy )   & 
    224                &              * umask(ji,jj,1) * umask(ji-1,jj,1) * vmask(ji,jj,1) * umask(ji,jj-1,1) 
    225          END DO 
    226       END DO 
    227       CALL lbc_lnk( z2d, 'T', 1. ) 
    228       CALL iom_put( "sstgrad2",  z2d               )    ! square of module of sst gradient 
    229 !CDIR NOVERRCHK 
    230       z2d(:,:) = SQRT( z2d(:,:) ) 
    231       CALL iom_put( "sstgrad" ,  z2d               )    ! module of sst gradient 
    232  
     224      IF ( iom_use("sstgrad2") .OR. iom_use("sstgrad2") ) THEN 
     225         DO jj = 2, jpjm1                                    ! sst gradient 
     226            DO ji = fs_2, fs_jpim1   ! vector opt. 
     227               zztmp      = tsn(ji,jj,1,jp_tem) 
     228               zztmpx     = ( tsn(ji+1,jj  ,1,jp_tem) - zztmp ) / e1u(ji,jj) + ( zztmp - tsn(ji-1,jj  ,1,jp_tem) ) / e1u(ji-1,jj  ) 
     229               zztmpy     = ( tsn(ji  ,jj+1,1,jp_tem) - zztmp ) / e2v(ji,jj) + ( zztmp - tsn(ji  ,jj-1,1,jp_tem) ) / e2v(ji  ,jj-1) 
     230               z2d(ji,jj) = 0.25 * ( zztmpx * zztmpx + zztmpy * zztmpy )   & 
     231                  &              * umask(ji,jj,1) * umask(ji-1,jj,1) * vmask(ji,jj,1) * umask(ji,jj-1,1) 
     232            END DO 
     233         END DO 
     234         CALL lbc_lnk( z2d, 'T', 1. ) 
     235         CALL iom_put( "sstgrad2",  z2d               )    ! square of module of sst gradient 
     236         !CDIR NOVERRCHK< 
     237         z2d(:,:) = SQRT( z2d(:,:) ) 
     238         CALL iom_put( "sstgrad" ,  z2d               )    ! module of sst gradient 
     239      ENDIF 
     240          
    233241      ! clem: heat and salt content 
    234       z2d(:,:)  = 0._wp  
    235       z2ds(:,:) = 0._wp  
    236       DO jk = 1, jpkm1 
    237          DO jj = 2, jpjm1 
    238             DO ji = fs_2, fs_jpim1   ! vector opt. 
    239                z2d(ji,jj) = z2d(ji,jj) + rau0 * rcp * fse3t(ji,jj,jk) * tsn(ji,jj,jk,jp_tem) * tmask(ji,jj,jk) 
    240                z2ds(ji,jj) = z2ds(ji,jj) + rau0 * fse3t(ji,jj,jk) * tsn(ji,jj,jk,jp_sal) * tmask(ji,jj,jk) 
    241             END DO 
    242          END DO 
    243       END DO 
    244       CALL lbc_lnk( z2d, 'T', 1. ) 
    245       CALL lbc_lnk( z2ds, 'T', 1. ) 
    246       CALL iom_put( "heatc", z2d )    ! vertically integrated heat content (J/m2) 
    247       CALL iom_put( "saltc", z2ds )   ! vertically integrated salt content (PSU*kg/m2) 
    248    
    249       ! 
    250       rke(:,:,jk) = 0._wp                               !      kinetic energy  
    251       DO jk = 1, jpkm1 
    252          DO jj = 2, jpjm1 
    253             DO ji = fs_2, fs_jpim1   ! vector opt. 
    254                zztmp   = 1._wp / ( e1e2t(ji,jj) * fse3t(ji,jj,jk) ) 
    255                zztmpx  = 0.5 * (  un(ji-1,jj,jk) * un(ji-1,jj,jk) * e2u(ji-1,jj) * fse3u(ji-1,jj,jk)    & 
    256                   &             + un(ji  ,jj,jk) * un(ji  ,jj,jk) * e2u(ji  ,jj) * fse3u(ji  ,jj,jk) )  & 
    257                   &          *  zztmp  
    258                ! 
    259                zztmpy  = 0.5 * (  vn(ji,jj-1,jk) * vn(ji,jj-1,jk) * e1v(ji,jj-1) * fse3v(ji,jj-1,jk)    & 
    260                   &             + vn(ji,jj  ,jk) * vn(ji,jj  ,jk) * e1v(ji,jj  ) * fse3v(ji,jj  ,jk) )  & 
    261                   &          *  zztmp  
    262                ! 
    263                rke(ji,jj,jk) = 0.5_wp * ( zztmpx + zztmpy ) 
    264                ! 
     242      IF( iom_use("heatc") ) THEN 
     243         z2d(:,:)  = 0._wp  
     244         DO jk = 1, jpkm1 
     245            DO jj = 2, jpjm1 
     246               DO ji = fs_2, fs_jpim1   ! vector opt. 
     247                  z2d(ji,jj) = z2d(ji,jj) + fse3t(ji,jj,jk) * tsn(ji,jj,jk,jp_tem) * tmask(ji,jj,jk) 
     248               END DO 
     249            END DO 
     250         END DO 
     251         CALL lbc_lnk( z2d, 'T', 1. ) 
     252         CALL iom_put( "heatc", (rau0 * rcp) * z2d )    ! vertically integrated heat content (J/m2) 
     253      ENDIF 
     254 
     255      IF( iom_use("saltc") ) THEN 
     256         z2d(:,:)  = 0._wp  
     257         DO jk = 1, jpkm1 
     258            DO jj = 2, jpjm1 
     259               DO ji = fs_2, fs_jpim1   ! vector opt. 
     260                  z2d(ji,jj) = z2d(ji,jj) + fse3t(ji,jj,jk) * tsn(ji,jj,jk,jp_sal) * tmask(ji,jj,jk) 
     261               END DO 
     262            END DO 
     263         END DO 
     264         CALL lbc_lnk( z2d, 'T', 1. ) 
     265         CALL iom_put( "saltc", rau0 * z2d )   ! vertically integrated salt content (PSU*kg/m2) 
     266      ENDIF 
     267      ! 
     268      IF ( iom_use("eken") ) THEN 
     269         rke(:,:,jk) = 0._wp                               !      kinetic energy  
     270         DO jk = 1, jpkm1 
     271            DO jj = 2, jpjm1 
     272               DO ji = fs_2, fs_jpim1   ! vector opt. 
     273                  zztmp   = 1._wp / ( e1e2t(ji,jj) * fse3t(ji,jj,jk) ) 
     274                  zztmpx  = 0.5 * (  un(ji-1,jj,jk) * un(ji-1,jj,jk) * e2u(ji-1,jj) * fse3u(ji-1,jj,jk)    & 
     275                     &             + un(ji  ,jj,jk) * un(ji  ,jj,jk) * e2u(ji  ,jj) * fse3u(ji  ,jj,jk) )  & 
     276                     &          *  zztmp  
     277                  ! 
     278                  zztmpy  = 0.5 * (  vn(ji,jj-1,jk) * vn(ji,jj-1,jk) * e1v(ji,jj-1) * fse3v(ji,jj-1,jk)    & 
     279                     &             + vn(ji,jj  ,jk) * vn(ji,jj  ,jk) * e1v(ji,jj  ) * fse3v(ji,jj  ,jk) )  & 
     280                     &          *  zztmp  
     281                  ! 
     282                  rke(ji,jj,jk) = 0.5_wp * ( zztmpx + zztmpy ) 
     283                  ! 
     284               ENDDO 
    265285            ENDDO 
    266286         ENDDO 
    267       ENDDO 
    268       CALL lbc_lnk( rke, 'T', 1. ) 
    269       CALL iom_put( "eken", rke )            
    270  
    271       IF( lk_diaar5 ) THEN 
     287         CALL lbc_lnk( rke, 'T', 1. ) 
     288         CALL iom_put( "eken", rke )            
     289      ENDIF 
     290          
     291      IF( iom_use("u_masstr") .OR. iom_use("u_heattr") .OR. iom_use("u_salttr") ) THEN 
    272292         z3d(:,:,jpk) = 0.e0 
    273293         DO jk = 1, jpkm1 
     
    275295         END DO 
    276296         CALL iom_put( "u_masstr", z3d )                  ! mass transport in i-direction 
    277  
    278          zztmp = 0.5 * rcp 
     297      ENDIF 
     298       
     299      IF( iom_use("u_heattr") ) THEN 
    279300         z2d(:,:) = 0.e0  
    280          z2ds(:,:) = 0.e0  
    281301         DO jk = 1, jpkm1 
    282302            DO jj = 2, jpjm1 
    283303               DO ji = fs_2, fs_jpim1   ! vector opt. 
    284                   z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * zztmp * ( tsn(ji,jj,jk,jp_tem) + tsn(ji+1,jj,jk,jp_tem) ) 
    285                   z2ds(ji,jj) = z2ds(ji,jj) + z3d(ji,jj,jk) * 0.5_wp * ( tsn(ji,jj,jk,jp_sal) + tsn(ji+1,jj,jk,jp_sal) ) 
     304                  z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( tsn(ji,jj,jk,jp_tem) + tsn(ji+1,jj,jk,jp_tem) ) 
    286305               END DO 
    287306            END DO 
    288307         END DO 
    289308         CALL lbc_lnk( z2d, 'U', -1. ) 
    290          CALL lbc_lnk( z2ds, 'U', -1. ) 
    291          CALL iom_put( "u_heattr", z2d )                  ! heat transport in i-direction 
    292          CALL iom_put( "u_salttr", z2ds )                 ! salt transport in i-direction 
    293  
     309         CALL iom_put( "u_heattr", (0.5 * rcp) * z2d )    ! heat transport in i-direction 
     310      ENDIF 
     311 
     312      IF( iom_use("u_salttr") ) THEN 
     313         z2d(:,:) = 0.e0  
     314         DO jk = 1, jpkm1 
     315            DO jj = 2, jpjm1 
     316               DO ji = fs_2, fs_jpim1   ! vector opt. 
     317                  z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( tsn(ji,jj,jk,jp_sal) + tsn(ji+1,jj,jk,jp_sal) ) 
     318               END DO 
     319            END DO 
     320         END DO 
     321         CALL lbc_lnk( z2d, 'U', -1. ) 
     322         CALL iom_put( "u_salttr", 0.5 * z2d )            ! heat transport in i-direction 
     323      ENDIF 
     324 
     325       
     326      IF( iom_use("v_masstr") .OR. iom_use("v_heattr") .OR. iom_use("v_salttr") ) THEN 
    294327         z3d(:,:,jpk) = 0.e0 
    295328         DO jk = 1, jpkm1 
     
    297330         END DO 
    298331         CALL iom_put( "v_masstr", z3d )                  ! mass transport in j-direction 
    299  
     332      ENDIF 
     333       
     334      IF( iom_use("v_heattr") ) THEN 
    300335         z2d(:,:) = 0.e0  
    301          z2ds(:,:) = 0.e0  
    302336         DO jk = 1, jpkm1 
    303337            DO jj = 2, jpjm1 
    304338               DO ji = fs_2, fs_jpim1   ! vector opt. 
    305                   z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * zztmp * ( tsn(ji,jj,jk,jp_tem) + tsn(ji,jj+1,jk,jp_tem) ) 
    306                   z2ds(ji,jj) = z2ds(ji,jj) + z3d(ji,jj,jk) * 0.5_wp * ( tsn(ji,jj,jk,jp_sal) + tsn(ji,jj+1,jk,jp_sal) ) 
     339                  z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( tsn(ji,jj,jk,jp_tem) + tsn(ji,jj+1,jk,jp_tem) ) 
    307340               END DO 
    308341            END DO 
    309342         END DO 
    310343         CALL lbc_lnk( z2d, 'V', -1. ) 
    311          CALL lbc_lnk( z2ds, 'V', -1. ) 
    312          CALL iom_put( "v_heattr", z2d )                  !  heat transport in j-direction 
    313          CALL iom_put( "v_salttr", z2ds )                 !  salt transport in j-direction 
    314       ENDIF 
    315       ! 
    316       CALL wrk_dealloc( jpi , jpj      , z2d , z2ds ) 
     344         CALL iom_put( "v_heattr", (0.5 * rcp) * z2d )    !  heat transport in j-direction 
     345      ENDIF 
     346 
     347      IF( iom_use("v_salttr") ) THEN 
     348         z2d(:,:) = 0.e0  
     349         DO jk = 1, jpkm1 
     350            DO jj = 2, jpjm1 
     351               DO ji = fs_2, fs_jpim1   ! vector opt. 
     352                  z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( tsn(ji,jj,jk,jp_sal) + tsn(ji,jj+1,jk,jp_sal) ) 
     353               END DO 
     354            END DO 
     355         END DO 
     356         CALL lbc_lnk( z2d, 'V', -1. ) 
     357         CALL iom_put( "v_salttr", 0.5 * z2d )            !  heat transport in j-direction 
     358      ENDIF 
     359      ! 
     360      CALL wrk_dealloc( jpi , jpj      , z2d ) 
    317361      CALL wrk_dealloc( jpi , jpj, jpk , z3d ) 
    318362      ! 
  • branches/2014/dev_MERGE_2014/NEMOGCM/NEMO/OPA_SRC/DYN/sshwzv.F90

    r4726 r4967  
    3131   USE bdy_par          
    3232   USE bdydyn2d        ! bdy_ssh routine 
    33    USE diaar5, ONLY:   lk_diaar5 
    3433   USE iom 
    3534#if defined key_agrif 
     
    138137      !                                           !           outputs            ! 
    139138      !                                           !------------------------------! 
    140       CALL iom_put( "ssh" , sshn                  )   ! sea surface height 
    141       CALL iom_put( "ssh2", sshn(:,:) * sshn(:,:) )   ! square of sea surface height 
     139      CALL iom_put( "ssh" , sshn )   ! sea surface height 
     140      if( iom_use('ssh2') )   CALL iom_put( "ssh2", sshn(:,:) * sshn(:,:) )   ! square of sea surface height 
    142141      ! 
    143142      IF(ln_ctl)   CALL prt_ctl( tab2d_1=ssha, clinfo1=' ssha  - : ', mask1=tmask, ovlap=1 ) 
     
    233232      !                                           !------------------------------! 
    234233      CALL iom_put( "woce", wn )   ! vertical velocity 
    235       IF( lk_diaar5 ) THEN                            ! vertical mass transport & its square value 
     234      IF( iom_use('w_masstr') .OR. iom_use('w_masstr2') ) THEN   ! vertical mass transport & its square value 
    236235         CALL wrk_alloc( jpi, jpj, z2d )  
    237236         CALL wrk_alloc( jpi, jpj, jpk, z3d )  
     
    241240            z3d(:,:,jk) = wn(:,:,jk) * z2d(:,:) 
    242241         END DO 
    243          CALL iom_put( "w_masstr" , z3d                      
    244          CALL iom_put( "w_masstr2", z3d(:,:,:) * z3d(:,:,:) ) 
     242         CALL iom_put( "w_masstr" , z3d  
     243         IF( iom_use('w_masstr2') )   CALL iom_put( "w_masstr2", z3d(:,:,:) * z3d(:,:,:) ) 
    245244         CALL wrk_dealloc( jpi, jpj, z2d  )  
    246245         CALL wrk_dealloc( jpi, jpj, jpk, z3d )  
  • branches/2014/dev_MERGE_2014/NEMOGCM/NEMO/OPA_SRC/OBS/ddatetoymdhms.h90

    r2287 r4967  
    2121 
    2222      !! * Arguments 
    23       REAL(dp), INTENT(IN) :: ddate 
     23      real(wp), INTENT(IN) :: ddate 
    2424      INTEGER, INTENT(OUT) :: kyea 
    2525      INTEGER, INTENT(OUT) :: kmon 
  • branches/2014/dev_MERGE_2014/NEMOGCM/NEMO/OPA_SRC/OBS/obs_read_prof.F90

    r4932 r4967  
    128128         & zphi, & 
    129129         & zlam 
    130       REAL(dp), DIMENSION(:), ALLOCATABLE :: & 
     130      real(wp), DIMENSION(:), ALLOCATABLE :: & 
    131131         & zdat 
    132132      LOGICAL :: llvalprof 
    133133      TYPE(obfbdata), POINTER, DIMENSION(:) :: & 
    134134         & inpfiles 
    135       REAL(dp), DIMENSION(knumfiles) :: & 
     135      real(wp), DIMENSION(knumfiles) :: & 
    136136         & djulini, & 
    137137         & djulend 
  • branches/2014/dev_MERGE_2014/NEMOGCM/NEMO/OPA_SRC/OBS/obs_read_seaice.F90

    r4932 r4967  
    110110         & zphi, & 
    111111         & zlam 
    112       REAL(dp), DIMENSION(:), ALLOCATABLE :: & 
     112      real(wp), DIMENSION(:), ALLOCATABLE :: & 
    113113         & zdat 
    114114      LOGICAL :: llvalprof 
    115115      TYPE(obfbdata), POINTER, DIMENSION(:) :: & 
    116116         & inpfiles 
    117       REAL(dp), DIMENSION(knumfiles) :: & 
     117      real(wp), DIMENSION(knumfiles) :: & 
    118118         & djulini, & 
    119119         & djulend 
  • branches/2014/dev_MERGE_2014/NEMOGCM/NEMO/OPA_SRC/OBS/obs_read_sla.F90

    r4932 r4967  
    111111         & zphi, & 
    112112         & zlam 
    113       REAL(dp), DIMENSION(:), ALLOCATABLE :: & 
     113      real(wp), DIMENSION(:), ALLOCATABLE :: & 
    114114         & zdat 
    115115      LOGICAL :: llvalprof 
     
    117117      TYPE(obfbdata), POINTER, DIMENSION(:) :: & 
    118118         & inpfiles 
    119       REAL(dp), DIMENSION(knumfiles) :: & 
     119      real(wp), DIMENSION(knumfiles) :: & 
    120120         & djulini, & 
    121121         & djulend 
  • branches/2014/dev_MERGE_2014/NEMOGCM/NEMO/OPA_SRC/OBS/obs_read_sst.F90

    r4932 r4967  
    110110         & zphi, & 
    111111         & zlam 
    112       REAL(dp), DIMENSION(:), ALLOCATABLE :: & 
     112      real(wp), DIMENSION(:), ALLOCATABLE :: & 
    113113         & zdat 
    114114      LOGICAL :: llvalprof 
    115115      TYPE(obfbdata), POINTER, DIMENSION(:) :: & 
    116116         & inpfiles 
    117       REAL(dp), DIMENSION(knumfiles) :: & 
     117      real(wp), DIMENSION(knumfiles) :: & 
    118118         & djulini, & 
    119119         & djulend 
  • branches/2014/dev_MERGE_2014/NEMOGCM/NEMO/OPA_SRC/OBS/obs_read_vel.F90

    r4932 r4967  
    118118         & zphi, & 
    119119         & zlam 
    120       REAL(dp), DIMENSION(:), ALLOCATABLE :: & 
     120      real(wp), DIMENSION(:), ALLOCATABLE :: & 
    121121         & zdat 
    122122      LOGICAL :: & 
     
    124124      TYPE(obfbdata), POINTER, DIMENSION(:) :: & 
    125125         & inpfiles 
    126       REAL(dp), DIMENSION(knumfiles) :: & 
     126      real(wp), DIMENSION(knumfiles) :: & 
    127127         & djulini, & 
    128128         & djulend 
  • branches/2014/dev_MERGE_2014/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90

    r4946 r4967  
    4444   USE p4zflx, ONLY : oce_co2 
    4545#endif 
    46    USE diaar5, ONLY :   lk_diaar5 
    4746#if defined key_cice 
    4847   USE ice_domain_size, only: ncat 
     
    11271126         emp_tot(:,:) = frcv(jpr_tevp)%z3(:,:,1) - tprecip(:,:) 
    11281127         emp_ice(:,:) = frcv(jpr_ievp)%z3(:,:,1) - frcv(jpr_snow)%z3(:,:,1) 
    1129                            CALL iom_put( 'rain'         , frcv(jpr_rain)%z3(:,:,1)              )   ! liquid precipitation  
    1130          IF( lk_diaar5 )   CALL iom_put( 'hflx_rain_cea', frcv(jpr_rain)%z3(:,:,1) * zcptn(:,:) )   ! heat flux from liq. precip.  
    1131          ztmp(:,:) = frcv(jpr_tevp)%z3(:,:,1) - frcv(jpr_ievp)%z3(:,:,1) * zicefr(:,:) 
    1132                            CALL iom_put( 'evap_ao_cea'  , ztmp                            )   ! ice-free oce evap (cell average) 
    1133          IF( lk_diaar5 )   CALL iom_put( 'hflx_evap_cea', ztmp(:,:         ) * zcptn(:,:) )   ! heat flux from from evap (cell ave) 
     1128            CALL iom_put( 'rain'         , frcv(jpr_rain)%z3(:,:,1)              )   ! liquid precipitation  
     1129         IF( iom_use('hflx_rain_cea') )   & 
     1130            CALL iom_put( 'hflx_rain_cea', frcv(jpr_rain)%z3(:,:,1) * zcptn(:,:) )   ! heat flux from liq. precip.  
     1131         IF( iom_use('evap_ao_cea') .OR. iom_use('hflx_evap_cea') )   & 
     1132            ztmp(:,:) = frcv(jpr_tevp)%z3(:,:,1) - frcv(jpr_ievp)%z3(:,:,1) * zicefr(:,:) 
     1133         IF( iom_use('evap_ao_cea'  ) )   & 
     1134            CALL iom_put( 'evap_ao_cea'  , ztmp                   )   ! ice-free oce evap (cell average) 
     1135         IF( iom_use('hflx_evap_cea') )   & 
     1136            CALL iom_put( 'hflx_evap_cea', ztmp(:,:) * zcptn(:,:) )   ! heat flux from from evap (cell average) 
    11341137      CASE( 'oce and ice'   )   ! received fields: jpr_sbpr, jpr_semp, jpr_oemp, jpr_ievp 
    11351138         emp_tot(:,:) = p_frld(:,:) * frcv(jpr_oemp)%z3(:,:,1) + zicefr(:,:) * frcv(jpr_sbpr)%z3(:,:,1) 
     
    11381141      END SELECT 
    11391142 
    1140       CALL iom_put( 'snowpre'    , sprecip                                )   ! Snow 
    1141       CALL iom_put( 'snow_ao_cea', sprecip(:,:         ) * p_frld(:,:)    )   ! Snow        over ice-free ocean  (cell average) 
    1142       CALL iom_put( 'snow_ai_cea', sprecip(:,:         ) * zicefr(:,:)    )   ! Snow        over sea-ice         (cell average) 
    1143       CALL iom_put( 'subl_ai_cea', frcv(jpr_ievp)%z3(:,:,1) * zicefr(:,:) )   ! Sublimation over sea-ice         (cell average) 
     1143         CALL iom_put( 'snowpre'    , sprecip                                )   ! Snow 
     1144      IF( iom_use('snow_ao_cea') )   & 
     1145         CALL iom_put( 'snow_ao_cea', sprecip(:,:) * p_frld(:,:)             )   ! Snow        over ice-free ocean  (cell average) 
     1146      IF( iom_use('snow_ai_cea') )   & 
     1147         CALL iom_put( 'snow_ai_cea', sprecip(:,:) * zicefr(:,:)             )   ! Snow        over sea-ice         (cell average) 
     1148      IF( iom_use('subl_ai_cea') )   & 
     1149         CALL iom_put( 'subl_ai_cea', frcv(jpr_ievp)%z3(:,:,1) * zicefr(:,:) )   ! Sublimation over sea-ice         (cell average) 
    11441150      !    
    11451151      !                                                           ! runoffs and calving (put in emp_tot) 
    11461152      IF( srcv(jpr_rnf)%laction ) THEN  
    11471153         emp_tot(:,:) = emp_tot(:,:) - frcv(jpr_rnf)%z3(:,:,1) 
    1148                            CALL iom_put( 'runoffs'      , frcv(jpr_rnf)%z3(:,:,1)              )   ! rivers 
    1149          IF( lk_diaar5 )   CALL iom_put( 'hflx_rnf_cea' , frcv(jpr_rnf)%z3(:,:,1) * zcptn(:,:) )   ! heat flux from rivers 
     1154            CALL iom_put( 'runoffs'      , frcv(jpr_rnf)%z3(:,:,1)              )   ! rivers 
     1155         IF( iom_use('hflx_rnf_cea') )   & 
     1156            CALL iom_put( 'hflx_rnf_cea' , frcv(jpr_rnf)%z3(:,:,1) * zcptn(:,:) )   ! heat flux from rivers 
    11501157      ENDIF 
    11511158      IF( srcv(jpr_cal)%laction ) THEN  
     
    12091216         &          - (  emp_tot(:,:)                     &            ! remove the heat content of mass flux (assumed to be at SST) 
    12101217         &             - emp_ice(:,:) * zicefr(:,:)  ) * zcptn(:,:)  
    1211       IF( lk_diaar5 )   CALL iom_put( 'hflx_snow_cea', ztmp + sprecip(:,:) * zcptn(:,:) )   ! heat flux from snow (cell average) 
     1218      IF( iom_use('hflx_snow_cea') )   & 
     1219         CALL iom_put( 'hflx_snow_cea', ztmp + sprecip(:,:) * zcptn(:,:) )   ! heat flux from snow (cell average) 
    12121220!!gm 
    12131221!!    currently it is taken into account in leads budget but not in the qns_tot, and thus not in  
     
    12211229         ztmp(:,:) = frcv(jpr_cal)%z3(:,:,1) * lfus               ! add the latent heat of iceberg melting  
    12221230         qns_tot(:,:) = qns_tot(:,:) - ztmp(:,:) 
    1223          IF( lk_diaar5 )   CALL iom_put( 'hflx_cal_cea', ztmp + frcv(jpr_cal)%z3(:,:,1) * zcptn(:,:) )   ! heat flux from calving 
     1231         IF( iom_use('hflx_cal_cea') )   & 
     1232            CALL iom_put( 'hflx_cal_cea', ztmp + frcv(jpr_cal)%z3(:,:,1) * zcptn(:,:) )   ! heat flux from calving 
    12241233      ENDIF 
    12251234 
  • branches/2014/dev_MERGE_2014/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90

    r4946 r4967  
    1717   USE phycst, only : rcp, rau0, r1_rau0, rhosn, rhoic 
    1818   USE in_out_manager  ! I/O manager 
    19    USE iom, only : iom_put              ! I/O manager library !!Joakim edit 
     19   USE iom, ONLY : iom_put,iom_use              ! I/O manager library !!Joakim edit 
    2020   USE lib_mpp         ! distributed memory computing library 
    2121   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
     
    430430! Snowfall 
    431431! Ensure fsnow is positive (as in CICE routine prepare_forcing) 
    432       CALL iom_put('snowpre',MAX( (1.0-fr_i(:,:))*sprecip(:,:) ,0.0)) !!Joakim edit   
     432      IF( iom_use('snowpre') )   CALL iom_put('snowpre',MAX( (1.0-fr_i(:,:))*sprecip(:,:) ,0.0)) !!Joakim edit   
    433433      ztmp(:,:)=MAX(fr_i(:,:)*sprecip(:,:),0.0)   
    434434      CALL nemo2cice(ztmp,fsnow,'T', 1. )  
    435435 
    436436! Rainfall 
    437       CALL iom_put('precip', (1.0-fr_i(:,:))*(tprecip(:,:)-sprecip(:,:)) ) !!Joakim edit 
     437      IF( iom_use('precip') )   CALL iom_put('precip', (1.0-fr_i(:,:))*(tprecip(:,:)-sprecip(:,:)) ) !!Joakim edit 
    438438      ztmp(:,:)=fr_i(:,:)*(tprecip(:,:)-sprecip(:,:)) 
    439439      CALL nemo2cice(ztmp,frain,'T', 1. )  
  • branches/2014/dev_MERGE_2014/NEMOGCM/NEMO/OPA_SRC/SBC/sbcisf.F90

    r4957 r4967  
    298298         ! output 
    299299         CALL iom_put('qisf'  , qisf) 
    300          CALL iom_put('fwfisf', fwfisf * stbl(:,:) / soce ) 
     300         IF( iom_use('fwfisf') )   CALL iom_put('fwfisf', fwfisf * stbl(:,:) / soce ) 
    301301      END IF 
    302302   
  • branches/2014/dev_MERGE_2014/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_eiv.F90

    r3787 r4967  
    2525   USE phycst          ! physical constants 
    2626   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    27    USE diaar5, ONLY:   lk_diaar5 
    2827# endif   
    2928   USE wrk_nemo        ! Memory Allocation 
     
    161160         CALL iom_put( "voce_eiv", v_eiv )    ! j-eiv current 
    162161         CALL iom_put( "woce_eiv", w_eiv )    ! vert. eiv current 
    163          IF( lk_diaar5 ) THEN 
     162         IF( iom_use('ueiv_heattr') ) THEN 
    164163            zztmp = 0.5 * rau0 * rcp  
    165164            z2d(:,:) = 0.e0  
     
    167166               DO jj = 2, jpjm1 
    168167                  DO ji = fs_2, fs_jpim1   ! vector opt. 
    169                      z2d(ji,jj) = z2d(ji,jj) + zztmp * u_eiv(ji,jj,jk) & 
     168                     z2d(ji,jj) = z2d(ji,jj) + u_eiv(ji,jj,jk) & 
    170169                       &         * (tsn(ji,jj,jk,jp_tem)+tsn(ji+1,jj,jk,jp_tem)) * e2u(ji,jj) * fse3u(ji,jj,jk)  
    171170                  END DO 
     
    173172            END DO 
    174173            CALL lbc_lnk( z2d, 'U', -1. ) 
    175             CALL iom_put( "ueiv_heattr", z2d )                  ! heat transport in i-direction 
     174            CALL iom_put( "ueiv_heattr", zztmp * z2d )                  ! heat transport in i-direction 
     175         ENDIF 
     176             
     177         IF( iom_use('veiv_heattr') ) THEN 
     178            zztmp = 0.5 * rau0 * rcp  
    176179            z2d(:,:) = 0.e0  
    177180            DO jk = 1, jpkm1 
    178181               DO jj = 2, jpjm1 
    179182                  DO ji = fs_2, fs_jpim1   ! vector opt. 
    180                      z2d(ji,jj) = z2d(ji,jj) + zztmp * v_eiv(ji,jj,jk) & 
     183                     z2d(ji,jj) = z2d(ji,jj) + v_eiv(ji,jj,jk) & 
    181184                     &           * (tsn(ji,jj,jk,jp_tem)+tsn(ji,jj+1,jk,jp_tem)) * e1v(ji,jj) * fse3v(ji,jj,jk)  
    182185                  END DO 
     
    184187            END DO 
    185188            CALL lbc_lnk( z2d, 'V', -1. ) 
    186             CALL iom_put( "veiv_heattr", z2d )                  !  heat transport in i-direction 
     189            CALL iom_put( "veiv_heattr", zztmp * z2d )                  !  heat transport in i-direction 
    187190         ENDIF 
    188191    END IF 
  • branches/2014/dev_MERGE_2014/NEMOGCM/NEMO/OPA_SRC/TRA/trasbc.F90

    r4946 r4967  
    191191            END DO 
    192192         END DO 
    193          CALL iom_put( "emp_x_sst", emp (:,:) * tsn(:,:,1,jp_tem) )                          ! c/d term on sst 
    194          CALL iom_put( "emp_x_sss", emp (:,:) * tsn(:,:,1,jp_sal) )                          ! c/d term on sss 
     193         IF( iom_use('emp_x_sst') )   CALL iom_put( "emp_x_sst", emp (:,:) * tsn(:,:,1,jp_tem) )   ! c/d term on sst 
     194         IF( iom_use('emp_x_sss') )   CALL iom_put( "emp_x_sss", emp (:,:) * tsn(:,:,1,jp_sal) )   ! c/d term on sss 
    195195      ENDIF 
    196196      ! Concentration dilution effect on (t,s) due to evapouration, precipitation and qns, but not river runoff   
Note: See TracChangeset for help on using the changeset viewer.