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 11371 for NEMO/branches/2019/dev_r10984_HPC-13_IRRMANN_BDY_optimization/src/ICE/icewri.F90 – NEMO

Ignore:
Timestamp:
2019-07-30T16:16:42+02:00 (5 years ago)
Author:
clem
Message:

continue cleaning the ice outputs

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r10984_HPC-13_IRRMANN_BDY_optimization/src/ICE/icewri.F90

    r11362 r11371  
    6363 
    6464      ! get missing value from xml 
    65       CALL iom_miss_val( "icethic", zmiss_val ) 
     65      CALL iom_miss_val( 'icetemp', zmiss_val ) 
    6666 
    6767      ! brine volume 
     
    9191      zrho1 = ( rau0 - rhoi ) * r1_rau0 ; zrho2 = rhos * r1_rau0 
    9292      ! masks 
    93       CALL iom_put( "icemask"  , zmsk00 )   ! ice mask 0% 
    94       CALL iom_put( "icemask05", zmsk05 )   ! ice mask 5% 
    95       CALL iom_put( "icemask15", zmsk15 )   ! ice mask 15% 
    96       CALL iom_put( "icepres"  , zmsk00 )   ! Ice presence (1 or 0)  
     93      CALL iom_put( 'icemask'  , zmsk00 )   ! ice mask 0% 
     94      CALL iom_put( 'icemask05', zmsk05 )   ! ice mask 5% 
     95      CALL iom_put( 'icemask15', zmsk15 )   ! ice mask 15% 
     96      CALL iom_put( 'icepres'  , zmsk00 )   ! Ice presence (1 or 0)  
    9797      ! 
    9898      ! general fields 
    99       IF( iom_use('icemass' ) )   CALL iom_put( "icemass", rhoi * vt_i * zmsk00  )   ! Ice mass per cell area  
    100       IF( iom_use('snwmass' ) )   CALL iom_put( "snwmass", rhos * vt_s * zmsksn  )   ! Snow mass per cell area 
    101       IF( iom_use('iceconc' ) )   CALL iom_put( "iceconc", at_i  * zmsk00        )   ! ice concentration 
    102       IF( iom_use('icevolu' ) )   CALL iom_put( "icevolu", vt_i  * zmsk00        )   ! ice volume = mean ice thickness over the cell 
    103       IF( iom_use('icethic' ) )   CALL iom_put( "icethic", hm_i  * zmsk00 + zmiss_val * ( 1._wp - zmsk00 ) )   ! ice thickness 
    104       IF( iom_use('snwthic' ) )   CALL iom_put( "snwthic", hm_s  * zmsk00 + zmiss_val * ( 1._wp - zmsk00 )       )   ! snw thickness 
    105       IF( iom_use('icebrv'  ) )   CALL iom_put( "icebrv" , bvm_i * zmsk00 * 100. )   ! brine volume 
    106       IF( iom_use('iceage'  ) )   CALL iom_put( "iceage" , om_i * zmsk15 / rday + zmiss_val * ( 1._wp - zmsk15 ) )   ! ice age 
    107       IF( iom_use('icehnew' ) )   CALL iom_put( "icehnew", ht_i_new              )   ! new ice thickness formed in the leads 
    108       IF( iom_use('snwvolu' ) )   CALL iom_put( "snwvolu", vt_s  * zmsksn        )   ! snow volume 
    109       IF( iom_use('icefrb'  ) ) THEN 
     99      IF( iom_use('icemass' ) )   CALL iom_put( 'icemass', vt_i * rhoi * zmsk00 )                                           ! Ice mass per cell area  
     100      IF( iom_use('snwmass' ) )   CALL iom_put( 'snwmass', vt_s * rhos * zmsksn )                                           ! Snow mass per cell area 
     101      IF( iom_use('iceconc' ) )   CALL iom_put( 'iceconc', at_i        * zmsk00 )                                           ! ice concentration 
     102      IF( iom_use('icevolu' ) )   CALL iom_put( 'icevolu', vt_i        * zmsk00 )                                           ! ice volume = mean ice thickness over the cell 
     103      IF( iom_use('icethic' ) )   CALL iom_put( 'icethic', hm_i        * zmsk00 )                                           ! ice thickness 
     104      IF( iom_use('snwthic' ) )   CALL iom_put( 'snwthic', hm_s        * zmsk00 )                                           ! snw thickness 
     105      IF( iom_use('icebrv'  ) )   CALL iom_put( 'icebrv' , bvm_i* 100. * zmsk00 )                                           ! brine volume 
     106      IF( iom_use('iceage'  ) )   CALL iom_put( 'iceage' , om_i / rday * zmsk15 + zmiss_val * ( 1._wp - zmsk15 ) )          ! ice age 
     107      IF( iom_use('icehnew' ) )   CALL iom_put( 'icehnew', ht_i_new             )                                           ! new ice thickness formed in the leads 
     108      IF( iom_use('snwvolu' ) )   CALL iom_put( 'snwvolu', vt_s        * zmsksn )                                           ! snow volume 
     109      IF( iom_use('icefrb'  ) ) THEN                                                                                        ! Ice freeboard 
    110110         z2d(:,:) = ( zrho1 * hm_i(:,:) - zrho2 * hm_s(:,:) )                                          
    111111         WHERE( z2d < 0._wp )   z2d = 0._wp 
    112                                    CALL iom_put( "icefrb" , z2d * zmsk00 + zmiss_val * ( 1._wp - zmsk00 )          )   ! Ice freeboard 
     112                                  CALL iom_put( 'icefrb' , z2d * zmsk00         ) 
    113113      ENDIF 
    114       ! 
    115114      ! melt ponds 
    116       IF( iom_use('iceapnd' ) )   CALL iom_put( "iceapnd", at_ip  * zmsk00       )   ! melt pond total fraction 
    117       IF( iom_use('icevpnd' ) )   CALL iom_put( "icevpnd", vt_ip  * zmsk00       )   ! melt pond total volume per unit area 
    118       ! 
     115      IF( iom_use('iceapnd' ) )   CALL iom_put( 'iceapnd', at_ip  * zmsk00      )                                           ! melt pond total fraction 
     116      IF( iom_use('icevpnd' ) )   CALL iom_put( 'icevpnd', vt_ip  * zmsk00      )                                           ! melt pond total volume per unit area 
    119117      ! salt 
    120       IF( iom_use('icesalt' ) )   CALL iom_put( "icesalt", sm_i                 * zmsk00 + zmiss_val * ( 1._wp - zmsk00 ) )   ! mean ice salinity 
    121       IF( iom_use('icesalm' ) )   CALL iom_put( "icesalm", st_i * rhoi * 1.0e-3 * zmsk00 + zmiss_val * ( 1._wp - zmsk00 ) )   ! Mass of salt in sea ice per cell area 
    122  
     118      IF( iom_use('icesalt' ) )   CALL iom_put( 'icesalt', sm_i                 * zmsk00 + zmiss_val * ( 1._wp - zmsk00 ) ) ! mean ice salinity 
     119      IF( iom_use('icesalm' ) )   CALL iom_put( 'icesalm', st_i * rhoi * 1.0e-3 * zmsk00 )                                  ! Mass of salt in sea ice per cell area 
    123120      ! heat 
    124       IF( iom_use('icetemp' ) )   CALL iom_put( "icetemp", ( tm_i  - rt0 ) * zmsk00 + zmiss_val * ( 1._wp - zmsk00 ) )   ! ice mean temperature 
    125       IF( iom_use('snwtemp' ) )   CALL iom_put( "snwtemp", ( tm_s  - rt0 ) * zmsksn + zmiss_val * ( 1._wp - zmsksn ) )   ! snw mean temperature 
    126       IF( iom_use('icettop' ) )   CALL iom_put( "icettop", ( tm_su - rt0 ) * zmsk00 + zmiss_val * ( 1._wp - zmsk00 ) )   ! temperature at the ice surface 
    127       IF( iom_use('icetbot' ) )   CALL iom_put( "icetbot", ( t_bo  - rt0 ) * zmsk00 + zmiss_val * ( 1._wp - zmsk00 ) )   ! temperature at the ice bottom 
    128       IF( iom_use('icetsni' ) )   CALL iom_put( "icetsni", ( tm_si - rt0 ) * zmsk00 + zmiss_val * ( 1._wp - zmsk00 ) )   ! temperature at the snow-ice interface 
    129       IF( iom_use('icehc'   ) )   CALL iom_put( "icehc"  ,  -et_i          * zmsk00 )   ! ice heat content 
    130       IF( iom_use('snwhc'   ) )   CALL iom_put( "snwhc"  ,  -et_s          * zmsksn )   ! snow heat content 
    131  
     121      IF( iom_use('icetemp' ) )   CALL iom_put( 'icetemp', ( tm_i  - rt0 ) * zmsk00 + zmiss_val * ( 1._wp - zmsk00 ) )      ! ice mean temperature 
     122      IF( iom_use('snwtemp' ) )   CALL iom_put( 'snwtemp', ( tm_s  - rt0 ) * zmsksn + zmiss_val * ( 1._wp - zmsksn ) )      ! snw mean temperature 
     123      IF( iom_use('icettop' ) )   CALL iom_put( 'icettop', ( tm_su - rt0 ) * zmsk00 + zmiss_val * ( 1._wp - zmsk00 ) )      ! temperature at the ice surface 
     124      IF( iom_use('icetbot' ) )   CALL iom_put( 'icetbot', ( t_bo  - rt0 ) * zmsk00 + zmiss_val * ( 1._wp - zmsk00 ) )      ! temperature at the ice bottom 
     125      IF( iom_use('icetsni' ) )   CALL iom_put( 'icetsni', ( tm_si - rt0 ) * zmsk00 + zmiss_val * ( 1._wp - zmsk00 ) )      ! temperature at the snow-ice interface 
     126      IF( iom_use('icehc'   ) )   CALL iom_put( 'icehc'  ,  -et_i          * zmsk00 )                                       ! ice heat content 
     127      IF( iom_use('snwhc'   ) )   CALL iom_put( 'snwhc'  ,  -et_s          * zmsksn )                                       ! snow heat content 
    132128      ! momentum 
    133       IF( iom_use('uice'    ) )   CALL iom_put( "uice"   , u_ice     )   ! ice velocity u 
    134       IF( iom_use('vice'    ) )   CALL iom_put( "vice"   , v_ice     )   ! ice velocity v 
    135       IF( iom_use('utau_ai' ) )   CALL iom_put( "utau_ai", utau_ice * zmsk00 + zmiss_val * ( 1._wp - zmsk00 ) )   ! Wind stress u 
    136       IF( iom_use('vtau_ai' ) )   CALL iom_put( "vtau_ai", vtau_ice * zmsk00 + zmiss_val * ( 1._wp - zmsk00 ) )   ! Wind stress v 
    137  
    138       IF( iom_use('icevel') .OR. iom_use('fasticepres') ) THEN  
    139         ! module of ice velocity 
     129      IF( iom_use('uice'    ) )   CALL iom_put( 'uice'   , u_ice    )                                                       ! ice velocity u 
     130      IF( iom_use('vice'    ) )   CALL iom_put( 'vice'   , v_ice    )                                                       ! ice velocity v 
     131      ! 
     132      IF( iom_use('icevel') .OR. iom_use('fasticepres') ) THEN                                                              ! module of ice velocity 
    140133         DO jj = 2 , jpjm1 
    141134            DO ji = 2 , jpim1 
     
    146139         END DO 
    147140         CALL lbc_lnk( 'icewri', z2d, 'T', 1. ) 
    148          CALL iom_put( "icevel", z2d * zmsk00 + zmiss_val * ( 1._wp - zmsk00 ) ) 
    149  
    150         ! record presence of fast ice 
    151          WHERE( z2d(:,:) < 5.e-04_wp .AND. zmsk15(:,:) == 1._wp ) ; zfast(:,:) = 1._wp 
     141         CALL iom_put( 'icevel', z2d ) 
     142 
     143         WHERE( z2d(:,:) < 5.e-04_wp .AND. zmsk15(:,:) == 1._wp ) ; zfast(:,:) = 1._wp                                      ! record presence of fast ice 
    152144         ELSEWHERE                                                ; zfast(:,:) = 0._wp 
    153145         END WHERE 
    154          CALL iom_put( "fasticepres", zfast ) 
     146         CALL iom_put( 'fasticepres', zfast ) 
    155147      ENDIF 
    156148 
    157149      ! --- category-dependent fields --- ! 
    158       IF( iom_use('icemask_cat' ) )   CALL iom_put( "icemask_cat" , zmsk00l                                                    )  ! ice mask 0% 
    159       IF( iom_use('iceconc_cat' ) )   CALL iom_put( "iceconc_cat" , a_i * zmsk00l                                              )  ! area for categories 
    160       IF( iom_use('icethic_cat' ) )   CALL iom_put( "icethic_cat" , h_i * zmsk00l + zmiss_val * ( 1._wp - zmsk00l )            )  ! thickness for categories 
    161       IF( iom_use('snwthic_cat' ) )   CALL iom_put( "snwthic_cat" , h_s * zmsksnl + zmiss_val * ( 1._wp - zmsksnl )            )  ! snow depth for categories 
    162       IF( iom_use('icesalt_cat' ) )   CALL iom_put( "icesalt_cat" , s_i * zmsk00l + zmiss_val * ( 1._wp - zmsk00l )            )  ! salinity for categories 
    163       IF( iom_use('iceage_cat'  ) )   CALL iom_put( "iceage_cat"  , o_i * zmsk00l / rday + zmiss_val * ( 1._wp - zmsk00l )     )  ! ice age 
    164       IF( iom_use('icetemp_cat' ) )   CALL iom_put( "icetemp_cat" , ( SUM( t_i(:,:,:,:), dim=3 ) * r1_nlay_i - rt0 ) * zmsk00l & 
    165          &                                                          + zmiss_val * ( 1._wp - zmsk00l ) )                            ! ice temperature 
    166       IF( iom_use('snwtemp_cat' ) )   CALL iom_put( "snwtemp_cat" , ( SUM( t_s(:,:,:,:), dim=3 ) * r1_nlay_s - rt0 ) * zmsksnl & 
    167          &                                                          + zmiss_val * ( 1._wp - zmsksnl ) )                            ! snow temperature 
    168       IF( iom_use('icettop_cat' ) )   CALL iom_put( "icettop_cat" , ( t_su - rt0 ) * zmsk00l + zmiss_val * ( 1._wp - zmsk00l ) )  ! surface temperature 
    169       IF( iom_use('icebrv_cat'  ) )   CALL iom_put( "icebrv_cat"  ,   bv_i * 100.  * zmsk00l                                   )  ! brine volume 
    170       IF( iom_use('iceapnd_cat' ) )   CALL iom_put( "iceapnd_cat" ,   a_ip         * zmsk00l                                   )  ! melt pond frac for categories 
    171       IF( iom_use('icehpnd_cat' ) )   CALL iom_put( "icehpnd_cat" ,   h_ip         * zmsk00l + zmiss_val * ( 1._wp - zmsk00l ) )  ! melt pond frac for categories 
    172       IF( iom_use('iceafpnd_cat') )   CALL iom_put( "iceafpnd_cat",   a_ip_frac    * zmsk00l                                   )  ! melt pond frac for categories 
     150      IF( iom_use('icemask_cat' ) )   CALL iom_put( 'icemask_cat' ,                  zmsk00l                                   ) ! ice mask 0% 
     151      IF( iom_use('iceconc_cat' ) )   CALL iom_put( 'iceconc_cat' , a_i            * zmsk00l                                   ) ! area for categories 
     152      IF( iom_use('icethic_cat' ) )   CALL iom_put( 'icethic_cat' , h_i            * zmsk00l + zmiss_val * ( 1._wp - zmsk00l ) ) ! thickness for categories 
     153      IF( iom_use('snwthic_cat' ) )   CALL iom_put( 'snwthic_cat' , h_s            * zmsksnl + zmiss_val * ( 1._wp - zmsksnl ) ) ! snow depth for categories 
     154      IF( iom_use('icesalt_cat' ) )   CALL iom_put( 'icesalt_cat' , s_i            * zmsk00l + zmiss_val * ( 1._wp - zmsk00l ) ) ! salinity for categories 
     155      IF( iom_use('iceage_cat'  ) )   CALL iom_put( 'iceage_cat'  , o_i / rday     * zmsk00l + zmiss_val * ( 1._wp - zmsk00l ) ) ! ice age 
     156      IF( iom_use('icetemp_cat' ) )   CALL iom_put( 'icetemp_cat' , ( SUM( t_i, dim=3 ) * r1_nlay_i - rt0 ) & 
     157         &                                                                         * zmsk00l + zmiss_val * ( 1._wp - zmsk00l ) ) ! ice temperature 
     158      IF( iom_use('snwtemp_cat' ) )   CALL iom_put( 'snwtemp_cat' , ( SUM( t_s, dim=3 ) * r1_nlay_s - rt0 ) & 
     159         &                                                                         * zmsksnl + zmiss_val * ( 1._wp - zmsksnl ) ) ! snow temperature 
     160      IF( iom_use('icettop_cat' ) )   CALL iom_put( 'icettop_cat' , ( t_su - rt0 ) * zmsk00l + zmiss_val * ( 1._wp - zmsk00l ) ) ! surface temperature 
     161      IF( iom_use('icebrv_cat'  ) )   CALL iom_put( 'icebrv_cat'  ,   bv_i * 100.  * zmsk00l + zmiss_val * ( 1._wp - zmsk00l ) ) ! brine volume 
     162      IF( iom_use('iceapnd_cat' ) )   CALL iom_put( 'iceapnd_cat' ,   a_ip         * zmsk00l                                   ) ! melt pond frac for categories 
     163      IF( iom_use('icehpnd_cat' ) )   CALL iom_put( 'icehpnd_cat' ,   h_ip         * zmsk00l + zmiss_val * ( 1._wp - zmsk00l ) ) ! melt pond frac for categories 
     164      IF( iom_use('iceafpnd_cat') )   CALL iom_put( 'iceafpnd_cat',   a_ip_frac    * zmsk00l                                   ) ! melt pond frac for categories 
    173165 
    174166      !------------------ 
     
    176168      !------------------ 
    177169      ! trends 
    178       IF( iom_use('dmithd') )   CALL iom_put( "dmithd", - wfx_bog - wfx_bom - wfx_sum - wfx_sni - wfx_opw - wfx_lam - wfx_res ) ! Sea-ice mass change from thermodynamics 
    179       IF( iom_use('dmidyn') )   CALL iom_put( "dmidyn", - wfx_dyn + rhoi * diag_trp_vi      )  ! Sea-ice mass change from dynamics(kg/m2/s) 
    180       IF( iom_use('dmiopw') )   CALL iom_put( "dmiopw", - wfx_opw                           )  ! Sea-ice mass change through growth in open water 
    181       IF( iom_use('dmibog') )   CALL iom_put( "dmibog", - wfx_bog                           )  ! Sea-ice mass change through basal growth 
    182       IF( iom_use('dmisni') )   CALL iom_put( "dmisni", - wfx_sni                           )  ! Sea-ice mass change through snow-to-ice conversion 
    183       IF( iom_use('dmisum') )   CALL iom_put( "dmisum", - wfx_sum                           )  ! Sea-ice mass change through surface melting 
    184       IF( iom_use('dmibom') )   CALL iom_put( "dmibom", - wfx_bom                           )  ! Sea-ice mass change through bottom melting 
    185       IF( iom_use('dmtsub') )   CALL iom_put( "dmtsub", - wfx_sub                           )  ! Sea-ice mass change through evaporation and sublimation 
    186       IF( iom_use('dmssub') )   CALL iom_put( "dmssub", - wfx_snw_sub                       )  ! Snow mass change through sublimation 
    187       IF( iom_use('dmisub') )   CALL iom_put( "dmisub", - wfx_ice_sub                       )  ! Sea-ice mass change through sublimation 
    188       IF( iom_use('dmsspr') )   CALL iom_put( "dmsspr", - wfx_spr                           )  ! Snow mass change through snow fall 
    189       IF( iom_use('dmsssi') )   CALL iom_put( "dmsssi",   wfx_sni*rhos*r1_rhoi              )  ! Snow mass change through snow-to-ice conversion 
    190       IF( iom_use('dmsmel') )   CALL iom_put( "dmsmel", - wfx_snw_sum                       )  ! Snow mass change through melt 
    191       IF( iom_use('dmsdyn') )   CALL iom_put( "dmsdyn", - wfx_snw_dyn + rhos * diag_trp_vs  )  ! Snow mass change through dynamics(kg/m2/s) 
     170      IF( iom_use('dmithd') )   CALL iom_put( 'dmithd', - wfx_bog - wfx_bom - wfx_sum - wfx_sni - wfx_opw - wfx_lam - wfx_res ) ! Sea-ice mass change from thermodynamics 
     171      IF( iom_use('dmidyn') )   CALL iom_put( 'dmidyn', - wfx_dyn + rhoi * diag_trp_vi                                        ) ! Sea-ice mass change from dynamics(kg/m2/s) 
     172      IF( iom_use('dmiopw') )   CALL iom_put( 'dmiopw', - wfx_opw                                                             ) ! Sea-ice mass change through growth in open water 
     173      IF( iom_use('dmibog') )   CALL iom_put( 'dmibog', - wfx_bog                                                             ) ! Sea-ice mass change through basal growth 
     174      IF( iom_use('dmisni') )   CALL iom_put( 'dmisni', - wfx_sni                                                             ) ! Sea-ice mass change through snow-to-ice conversion 
     175      IF( iom_use('dmisum') )   CALL iom_put( 'dmisum', - wfx_sum                                                             ) ! Sea-ice mass change through surface melting 
     176      IF( iom_use('dmibom') )   CALL iom_put( 'dmibom', - wfx_bom                                                             ) ! Sea-ice mass change through bottom melting 
     177      IF( iom_use('dmtsub') )   CALL iom_put( 'dmtsub', - wfx_sub                                                             ) ! Sea-ice mass change through evaporation and sublimation 
     178      IF( iom_use('dmssub') )   CALL iom_put( 'dmssub', - wfx_snw_sub                                                         ) ! Snow mass change through sublimation 
     179      IF( iom_use('dmisub') )   CALL iom_put( 'dmisub', - wfx_ice_sub                                                         ) ! Sea-ice mass change through sublimation 
     180      IF( iom_use('dmsspr') )   CALL iom_put( 'dmsspr', - wfx_spr                                                             ) ! Snow mass change through snow fall 
     181      IF( iom_use('dmsssi') )   CALL iom_put( 'dmsssi',   wfx_sni*rhos*r1_rhoi                                                ) ! Snow mass change through snow-to-ice conversion 
     182      IF( iom_use('dmsmel') )   CALL iom_put( 'dmsmel', - wfx_snw_sum                                                         ) ! Snow mass change through melt 
     183      IF( iom_use('dmsdyn') )   CALL iom_put( 'dmsdyn', - wfx_snw_dyn + rhos * diag_trp_vs                                    ) ! Snow mass change through dynamics(kg/m2/s) 
    192184       
    193185      ! Global ice diagnostics 
     
    207199         IF( iom_use('SH_iceextt') )   zdiag_extt_sh = glob_sum( 'icewri',        ( 1._wp - z2d ) * e1e2t * 1.e-12 * zmsk15 ) 
    208200         ! 
    209          CALL iom_put( "NH_icearea" , zdiag_area_nh ) 
    210          CALL iom_put( "NH_icevolu" , zdiag_volu_nh ) 
    211          CALL iom_put( "NH_iceextt" , zdiag_extt_nh ) 
    212          CALL iom_put( "SH_icearea" , zdiag_area_sh ) 
    213          CALL iom_put( "SH_icevolu" , zdiag_volu_sh ) 
    214          CALL iom_put( "SH_iceextt" , zdiag_extt_sh ) 
     201         CALL iom_put( 'NH_icearea' , zdiag_area_nh ) 
     202         CALL iom_put( 'NH_icevolu' , zdiag_volu_nh ) 
     203         CALL iom_put( 'NH_iceextt' , zdiag_extt_nh ) 
     204         CALL iom_put( 'SH_icearea' , zdiag_area_sh ) 
     205         CALL iom_put( 'SH_icevolu' , zdiag_volu_sh ) 
     206         CALL iom_put( 'SH_iceextt' , zdiag_extt_sh ) 
    215207         ! 
    216208      ENDIF 
Note: See TracChangeset for help on using the changeset viewer.