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 12 for trunk/NEMO/LIM_SRC/limdia.F90 – NEMO

Ignore:
Timestamp:
2004-02-17T07:56:53+01:00 (20 years ago)
Author:
opalod
Message:

CT : UPDATE001 : First major NEMO update

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/LIM_SRC/limdia.F90

    r3 r12  
    2727   PUBLIC lim_dia       ! called by ice_step 
    2828 
     29   !! * Shared module variables 
     30   INTEGER, PUBLIC  ::  & 
     31      ntmoy   = 1 ,     &  !: instantaneous values of ice evolution or averaging ntmoy 
     32      ninfo   = 1          !: frequency of ouputs on file ice_evolu in case of averaging 
     33 
    2934   !! * Module variables 
    30    INTEGER, PUBLIC  ::  & 
    31       ntmoy   = 1 ,     &  !  instantaneous values of ice evolution or averaging ntmoy 
    32       ninfo   = 1          !  frequency of ouputs on file ice_evolu in case of averaging 
    33  
    3435   INTEGER          ::  & 
    3536      nfrinf  = 4          ! number of variables written in one line  
     
    4849 
    4950   CHARACTER(len=30) :: & 
    50       fmtw  ,           &  !  formats 
    51       fmtr  ,           &  !  
    52       fmtitr               !  
     51      fmtw  ,           &  ! formats 
     52      fmtr  ,           &  ! ??? 
     53      fmtitr               ! ??? 
    5354 
    5455   CHARACTER(len=nchsep), DIMENSION(ninfmx) ::   & 
     
    7879      !!------------------------------------------------------------------- 
    7980      !! * Local variables 
    80        INTEGER ::   jv,ji, jj    ! dummy loop indices 
    81        INTEGER ::   nv           ! indice of variable  
     81       INTEGER  ::   jv,ji, jj   ! dummy loop indices 
     82       INTEGER  ::   nv          ! indice of variable  
    8283       REAL(wp), DIMENSION(ninfmx) ::  &  
    83           vinfor        ! temporary working space  
    84        REAL(wp)  ::    & 
    85           area    ,    &  ! sea ice area 
    86           ldarea  ,    &  ! leads area 
    87           extent15,    &  ! sea ice extent (15%) 
    88           extent85,    &  ! sea ice extent (85%) 
    89           icevol  ,    &  ! sea ice volume 
    90           snwvol  ,    &  ! snow volume over sea ice 
    91           icespd          ! sea ice velocity 
     84          vinfor           ! temporary working space  
     85       REAL(wp) ::    & 
     86          zarea    ,    &  ! sea ice area 
     87          zldarea  ,    &  ! leads area 
     88          zextent15,    &  ! sea ice extent (15%) 
     89          zextent85,    &  ! sea ice extent (85%) 
     90          zicevol  ,    &  ! sea ice volume 
     91          zsnwvol  ,    &  ! snow volume over sea ice 
     92          zicespd          ! sea ice velocity 
    9293       !!------------------------------------------------------------------- 
    9394 
     
    101102       vinfor(nv) = nyear 
    102103  
    103        DO  jv = nbvt + 1, nvinfo 
     104       DO jv = nbvt + 1, nvinfo 
    104105          vinfor(jv) = 0.0 
    105106       END DO 
    106107 
    107        extent15 = 0.e0 
    108        extent85 = 0.e0 
     108       zextent15 = 0.e0 
     109       zextent85 = 0.e0 
    109110       ! variables in northern Hemis 
    110        DO  jj = jeq , jpjm1 
    111           DO  ji = fs_2 , fs_jpim1 
     111       DO jj = jeq, jpjm1 
     112          DO ji = fs_2, fs_jpim1   ! vector opt. 
    112113             IF( tms(ji,jj) == 1 ) THEN 
    113                 area = ( 1.0 - frld(ji,jj) ) * aire(ji,jj) 
    114                 IF (frld(ji,jj) <= 0.15 ) extent15 = aire(ji,jj)     
    115                 IF (frld(ji,jj) <= 0.85 ) extent85 = aire(ji,jj)    
    116                 ldarea = area   / MAX( ( 1 - frld(ji,jj) ) , epsi06 ) 
    117                 icevol = area   * hicif(ji,jj) 
    118                 snwvol = area   * hsnif(ji,jj) 
    119                 icespd = icevol * ( u_ice(ji,jj) * u_ice(ji,jj) + v_ice(ji,jj) * v_ice(ji,jj) ) 
    120  
    121                 vinfor(nv +  1) = vinfor(nv +  1) + area 
    122                 vinfor(nv +  3) = vinfor(nv +  3) + extent15 
    123                 vinfor(nv +  5) = vinfor(nv +  5) + extent85 
    124                 vinfor(nv +  7) = vinfor(nv +  7) + ldarea 
    125                 vinfor(nv +  9) = vinfor(nv +  9) + icevol 
    126                 vinfor(nv + 11) = vinfor(nv + 11) + snwvol 
    127                 vinfor(nv + 13) = vinfor(nv + 13) + icespd 
     114                zarea = ( 1.0 - frld(ji,jj) ) * aire(ji,jj) 
     115                IF (frld(ji,jj) <= 0.15 ) zextent15 = aire(ji,jj)     
     116                IF (frld(ji,jj) <= 0.85 ) zextent85 = aire(ji,jj)    
     117                zldarea = zarea   / MAX( ( 1 - frld(ji,jj) ) , epsi06 ) 
     118                zicevol = zarea   * hicif(ji,jj) 
     119                zsnwvol = zarea   * hsnif(ji,jj) 
     120                zicespd = zicevol * ( u_ice(ji,jj) * u_ice(ji,jj)   & 
     121                   &                + v_ice(ji,jj) * v_ice(ji,jj) ) 
     122                vinfor(nv+ 1) = vinfor(nv+ 1) + zarea 
     123                vinfor(nv+ 3) = vinfor(nv+ 3) + zextent15 
     124                vinfor(nv+ 5) = vinfor(nv+ 5) + zextent85 
     125                vinfor(nv+ 7) = vinfor(nv+ 7) + zldarea 
     126                vinfor(nv+ 9) = vinfor(nv+ 9) + zicevol 
     127                vinfor(nv+11) = vinfor(nv+11) + zsnwvol 
     128                vinfor(nv+13) = vinfor(nv+13) + zicespd 
    128129             ENDIF 
    129130          END DO 
    130131       END DO 
    131        vinfor(nv + 13) = SQRT( vinfor(nv + 13) / MAX( vinfor(nv + 9 ) , epsi06 ) ) 
     132       vinfor(nv+13) = SQRT( vinfor(nv+13) / MAX( vinfor(nv+9) , epsi06 ) ) 
    132133 
    133134 
    134135      ! variables in southern Hemis 
    135136       nv = nv + 1 
    136        DO  jj = 2 , jeqm1 
    137           DO  ji = fs_2 , fs_jpim1 
     137       DO jj = 2, jeqm1 
     138          DO ji = fs_2, fs_jpim1   ! vector opt. 
    138139             IF( tms(ji,jj) == 1 ) THEN 
    139                 area = ( 1.0 - frld(ji,jj) ) * aire(ji,jj) 
    140                 IF (frld(ji,jj) <= 0.15 ) extent15 = aire(ji,jj)     
    141                 IF (frld(ji,jj) <= 0.85 ) extent85 = aire(ji,jj)    
    142                 ldarea = area   / MAX( ( 1 - frld(ji,jj) ) , epsi06 ) 
    143                 icevol = area   * hicif(ji,jj) 
    144                 snwvol = area   * hsnif(ji,jj) 
    145                 icespd = icevol * ( u_ice(ji,jj) * u_ice(ji,jj) + v_ice(ji,jj) * v_ice(ji,jj) ) 
    146  
    147                 vinfor(nv + 1)  = vinfor(nv + 1)  + area 
    148                 vinfor(nv + 3)  = vinfor(nv + 3)  + extent15 
    149                 vinfor(nv + 5)  = vinfor(nv + 5)  + extent85 
    150                 vinfor(nv + 7)  = vinfor(nv + 7)  + ldarea 
    151                 vinfor(nv + 9)  = vinfor(nv + 9)  + icevol 
    152                 vinfor(nv + 11) = vinfor(nv + 11) + snwvol 
    153                 vinfor(nv + 13) = vinfor(nv + 13) + icespd 
     140                zarea = ( 1.0 - frld(ji,jj) ) * aire(ji,jj) 
     141                IF (frld(ji,jj) <= 0.15 ) zextent15 = aire(ji,jj)     
     142                IF (frld(ji,jj) <= 0.85 ) zextent85 = aire(ji,jj)    
     143                zldarea = zarea   / MAX( ( 1 - frld(ji,jj) ) , epsi06 ) 
     144                zicevol = zarea   * hicif(ji,jj) 
     145                zsnwvol = zarea   * hsnif(ji,jj) 
     146                zicespd = zicevol * ( u_ice(ji,jj) * u_ice(ji,jj)   & 
     147                   &                + v_ice(ji,jj) * v_ice(ji,jj) ) 
     148                vinfor(nv+ 1) = vinfor(nv+ 1) + zarea 
     149                vinfor(nv+ 3) = vinfor(nv+ 3) + zextent15 
     150                vinfor(nv+ 5) = vinfor(nv+ 5) + zextent85 
     151                vinfor(nv+ 7) = vinfor(nv+ 7) + zldarea 
     152                vinfor(nv+ 9) = vinfor(nv+ 9) + zicevol 
     153                vinfor(nv+11) = vinfor(nv+11) + zsnwvol 
     154                vinfor(nv+13) = vinfor(nv+13) + zicespd 
    154155             ENDIF 
    155156          END DO 
    156157       END DO 
    157        vinfor(nv + 13) = SQRT( vinfor(nv + 13) / MAX( vinfor(nv + 9 ) , epsi06 ) )     
     158       vinfor(nv+13) = SQRT( vinfor(nv+13) / MAX( vinfor(nv+9) , epsi06 ) )     
    158159 
    159160       !  Accumulation before averaging  
    160        DO jv = 1 , nvinfo 
     161       DO jv = 1, nvinfo 
    161162          vinfom(jv) = vinfom(jv) + vinfor(jv) 
    162163       END DO 
     
    167168          WRITE(90,fmtw) ( titvar(jv), vinfom(jv)/naveg, jv = 1, nvinfo ) 
    168169          naveg = 0 
    169           DO  jv = 1, nvinfo 
     170          DO jv = 1, nvinfo 
    170171             vinfom(jv)=0.0 
    171172          END DO 
Note: See TracChangeset for help on using the changeset viewer.