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 – NEMO

Changeset 12


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

CT : UPDATE001 : First major NEMO update

Location:
trunk/NEMO/LIM_SRC
Files:
13 edited

Legend:

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

    r3 r12  
    11MODULE dom_ice 
    22   !!====================================================================== 
    3    !!             ***  MODULE  dom_ice  *** 
    4    !!                   Sea Ice Domain   
     3   !!                   ***  MODULE  dom_ice  *** 
     4   !! LIM Sea Ice :   Domain  variables 
    55   !!====================================================================== 
    6    !! 
    7    !! ** Purpose : 
    8    !!       - Define in memory coefficients of Sea Ice model 
    9    !! 
    106   !! History : 
    117   !!   2.0  !  03-08  (C. Ethe)  Free form and module 
     8   !!---------------------------------------------------------------------- 
     9   !!  LIM 2.0, UCL-LODYC-IPSL (2002) 
     10   !!---------------------------------------------------------------------- 
    1211   !! * Modules used 
    1312   USE par_ice 
    1413 
    1514   IMPLICIT NONE 
     15   PUBLIC 
    1616 
    17    !!---------------------------------------------------------------------- 
    18    !!  LIM 2.0, UCL-LODYC-IPSL (2002) 
    19    !!---------------------------------------------------------------------- 
     17   REAL(wp) ::  &   !: 
     18      dz            !: depht of the 1st ocean level 
    2019 
    21    REAL(wp),DIMENSION(jpi,jpj) ::  &   
    22       area          ! Surface of a grid square 
    23   
     20   REAL(wp),DIMENSION(jpi,jpj) ::  &  !: 
     21      area          !: Surface of a grid square 
    2422 
    25    REAL(wp),DIMENSION(jpi,jpj,2,2) ::  & 
    26       wght   ,   &  ! weight of the 4 neighbours to compute averages 
    27       akappa ,   &  ! first group of metric coefficients 
    28       bkappa        ! third group of metric coefficients 
     23   REAL(wp),DIMENSION(jpi,jpj,2,2) ::  &  !: 
     24      wght   ,   &  !: weight of the 4 neighbours to compute averages 
     25      akappa ,   &  !: first group of metric coefficients 
     26      bkappa        !: third group of metric coefficients 
    2927 
    30    REAL(wp),DIMENSION(jpi,jpj) :: & 
    31       tms  ,tmu     ! masks arrays 
     28   REAL(wp),DIMENSION(jpi,jpj) :: &  !: 
     29      tms , tmu     !: masks arrays 
    3230 
    33    REAL(wp),DIMENSION(jpi,jpj,2,2,2,2) ::  & 
    34       alambd        ! second group of metric coefficients 
     31   REAL(wp),DIMENSION(jpi,jpj,2,2,2,2) ::  &  !: 
     32      alambd        !: second group of metric coefficients 
    3533 
    36    REAL(wp) ::  & 
    37       dz            ! depht of the 1st ocean level 
     34   REAL(wp),DIMENSION(jpi,jpj) ::  &  !: 
     35      fs2cor ,   &  !:  coriolis factor 
     36      fcor   ,   &  !:  coriolis coefficient 
     37      covrai ,   &  !:  sine of geographic latitude 
     38      aire          !:  total area  
    3839 
    39    REAL(wp),DIMENSION(jpi,jpj) ::  &   
    40       fs2cor ,   &  !  coriolis factor 
    41       fcor   ,   &  !  coriolis coefficient 
    42       covrai ,   &  !  sine of geographic latitude 
    43       aire          !  total area  
    44  
    45    INTEGER  :: & 
    46       jeq , jeqm1 
     40   INTEGER  :: &    !: 
     41      jeq , jeqm1   !: 
    4742 
    4843   !!====================================================================== 
  • trunk/NEMO/LIM_SRC/ice.F90

    r3 r12  
    88   !!   'key_ice_lim' :                                   LIM sea-ice model 
    99   !!---------------------------------------------------------------------- 
    10    !! 
    11    !! ** Purpose :   Define in memory diagnostics Sea Ice variables 
    12    !! 
    1310   !! History : 
    1411   !!   2.0  !  03-08  (C. Ethe)  F90: Free form and module 
     
    2017 
    2118   IMPLICIT NONE 
    22    PUBLIC 
     19   PRIVATE 
    2320 
    2421   !! * Share Module variables 
    25    INTEGER , PUBLIC ::   & !!! ** ice-dynamic namelist (namicedyn) ** 
    26       nlminn = 103    ,  & ! minimum index for computation of ice drift(NH) 
    27       nlmaxs = 45     ,  & ! maximum index for computation of ice drift(SH) 
    28       nbiter = 1      ,  & ! number of sub-time steps for relaxation 
    29       nbitdr = 250         ! maximum number of iterations for relaxation 
     22   INTEGER , PUBLIC ::   & !!: ** ice-dynamic namelist (namicedyn) ** 
     23      nbiter = 1      ,  &  !: number of sub-time steps for relaxation 
     24      nbitdr = 250          !: maximum number of iterations for relaxation 
    3025 
    31    REAL(wp), PUBLIC ::   & !!! ** ice-dynamic namelist (namicedyn) ** 
    32       epsd   = 1.0e-20,  & ! tolerance parameter for dynamic 
    33       alpha  = 0.5    ,  & ! coefficient for semi-implicit coriolis 
    34       dm     = 0.6e+03,  & ! diffusion constant for dynamics 
    35       om     = 0.5    ,  & ! relaxation constant 
    36       resl   = 5.0e-05,  & ! maximum value for the residual of relaxation 
    37       cw     = 5.0e-03,  & ! drag coefficient for oceanic stress 
    38       angvg  = 0.0    ,  & ! turning angle for oceanic stress 
    39       pstar  = 1.0e+04,  & ! first bulk-rheology parameter 
    40       c_rhg  = 20.0   ,  & ! second bulk-rhelogy parameter 
    41       etamn  = 0.0e+07,  & ! minimun value for viscosity 
    42       creepl = 2.0e-08,  & ! creep limit 
    43       ecc    = 2.0    ,  & ! eccentricity of the elliptical yield curve 
    44       ahi0   = 350.e0      ! sea-ice hor. eddy diffusivity coeff. (m2/s) 
     26   REAL(wp), PUBLIC ::   & !!: ** ice-dynamic namelist (namicedyn) ** 
     27      epsd   = 1.0e-20,  &  !: tolerance parameter for dynamic 
     28      alpha  = 0.5    ,  &  !: coefficient for semi-implicit coriolis 
     29      dm     = 0.6e+03,  &  !: diffusion constant for dynamics 
     30      om     = 0.5    ,  &  !: relaxation constant 
     31      resl   = 5.0e-05,  &  !: maximum value for the residual of relaxation 
     32      cw     = 5.0e-03,  &  !: drag coefficient for oceanic stress 
     33      angvg  = 0.0    ,  &  !: turning angle for oceanic stress 
     34      pstar  = 1.0e+04,  &  !: first bulk-rheology parameter 
     35      c_rhg  = 20.0   ,  &  !: second bulk-rhelogy parameter 
     36      etamn  = 0.0e+07,  &  !: minimun value for viscosity 
     37      creepl = 2.0e-08,  &  !: creep limit 
     38      ecc    = 2.0    ,  &  !: eccentricity of the elliptical yield curve 
     39      ahi0   = 350.e0       !: sea-ice hor. eddy diffusivity coeff. (m2/s) 
    4540 
    46    INTEGER , PUBLIC ::   & 
    47       nlmaxn = jpjm1  ,  & ! maximum index for computation of ice drift(NH) 
    48 #if defined key_mpp 
    49       nlmins = 2           ! minimum index for computation of ice drift(SH) 
    50 #else 
    51       nlmins = 3           ! minimum index for computation of ice drift(SH) 
    52 #endif 
     41   REAL(wp), PUBLIC ::   &  !: 
     42      usecc2          ,  &  !:  = 1.0 / ( ecc * ecc ) 
     43      rhoco           ,  &  !: = rau0 * cw 
     44      sangvg, cangvg  ,  &  !: sin and cos of the turning angle for ocean stress 
     45      pstarh                !: pstar / 2.0 
    5346 
    54    REAL(wp), PUBLIC ::   & 
    55       usecc2          ,  & !  = 1.0 / ( ecc * ecc ) 
    56       rhoco           ,  & ! = rau0 * cw 
    57       sangvg, cangvg  ,  & ! sin and cos of the turning angle for ocean stress 
    58       pstarh               ! pstar / 2.0 
    59  
    60    REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::  & 
    61       u_oce, v_oce,      & ! surface ocean velocity used in ice dynamics 
    62       ahiu , ahiv ,      & ! hor. diffusivity coeff. at ocean U- and V-points (m2/s) 
    63       pahu , pahv ,      & ! ice hor. eddy diffusivity coef. at ocean U- and V-points 
    64       hsnm , hicm ,      & ! mean snow and ice thicknesses 
    65       ust2s                ! friction velocity 
     47   REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::  &  !: 
     48      u_oce, v_oce,      &  !: surface ocean velocity used in ice dynamics 
     49      ahiu , ahiv ,      &  !: hor. diffusivity coeff. at ocean U- and V-points (m2/s) 
     50      pahu , pahv ,      &  !: ice hor. eddy diffusivity coef. at ocean U- and V-points 
     51      hsnm , hicm ,      &  !: mean snow and ice thicknesses 
     52      ust2s                 !: friction velocity 
    6653 
    6754 
    68    REAL(wp), DIMENSION(jpi,jpj) ::   & 
    69       firic  ,   &  ! IR flux over the ice (only used for outputs) 
    70       fcsic  ,   &  ! Sensible heat flux over the ice (only used for outputs) 
    71       fleic  ,   &  ! Latent heat flux over the ice (only used for outputs) 
    72       qlatic ,   &  ! latent flux 
    73       rdvosif,   &  ! Variation of volume at surface (only used for outputs) 
    74       rdvobif,   &  ! Variation of ice volume at the bottom ice (only used for outputs) 
    75       fdvolif,   &  ! Total variation of ice volume (only used for outputs) 
    76       rdvonif,   &  ! Lateral Variation of ice volume (only used for outputs) 
    77       sist   ,   &  ! Sea-Ice Surface Temperature (Kelvin ??? degree ??? I don't know) 
    78       tfu    ,   &  ! Melting point temperature of sea water 
    79       hsnif  ,   &  ! Snow thickness 
    80       hicif  ,   &  ! Ice thickness 
    81       hicifp ,   &  ! Ice production/melting 
    82       frld   ,   &  ! Leads fraction = 1-a/totalarea 
    83       phicif ,   &  ! ice thickness  at previous time  
    84       pfrld  ,   &  ! Leads fraction at previous time   
    85       qstoif ,   &  ! Energy stored in the brine pockets 
    86       fbif   ,   &  ! Heat flux at the ice base 
    87       rdmsnif,   &  ! Variation of snow mass 
    88       rdmicif,   &  ! Variation of ice mass 
    89       qldif  ,   &  ! heat balance of the lead (or of the open ocean) 
    90       qcmif  ,   &  ! Energy needed to bring the ocean surface layer until its freezing  
    91       fdtcn  ,   &  ! net downward heat flux from the ice to the ocean 
    92       qdtcn  ,   &  ! energy from the ice to the ocean 
    93                     ! point (at a factor 2) 
    94       thcm   ,   &  ! part of the solar energy used in the lead heat budget 
    95       fstric ,   &  ! Solar flux transmitted trough the ice 
    96       ffltbif,   &  ! Array linked with the max heat contained in brine pockets (?) 
    97       fscmbq ,   &  ! Linked with the solar flux below the ice (?) 
    98       fsbbq  ,   &  ! Also linked with the solar flux below the ice (?) 
    99       qfvbq  ,   &  ! Array used to store energy in case of toral lateral ablation (?) 
    100       dmgwi         ! Variation of the mass of snow ice 
     55   REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   &  !: 
     56      firic  ,   &  !: IR flux over the ice (only used for outputs) 
     57      fcsic  ,   &  !: Sensible heat flux over the ice (only used for outputs) 
     58      fleic  ,   &  !: Latent heat flux over the ice (only used for outputs) 
     59      qlatic ,   &  !: latent flux 
     60      rdvosif,   &  !: Variation of volume at surface (only used for outputs) 
     61      rdvobif,   &  !: Variation of ice volume at the bottom ice (only used for outputs) 
     62      fdvolif,   &  !: Total variation of ice volume (only used for outputs) 
     63      rdvonif,   &  !: Lateral Variation of ice volume (only used for outputs) 
     64      sist   ,   &  !: Sea-Ice Surface Temperature (Kelvin ??? degree ??? I don't know) 
     65      tfu    ,   &  !: Melting point temperature of sea water 
     66      hsnif  ,   &  !: Snow thickness 
     67      hicif  ,   &  !: Ice thickness 
     68      hicifp ,   &  !: Ice production/melting 
     69      frld   ,   &  !: Leads fraction = 1-a/totalarea 
     70      phicif ,   &  !: ice thickness  at previous time  
     71      pfrld  ,   &  !: Leads fraction at previous time   
     72      qstoif ,   &  !: Energy stored in the brine pockets 
     73      fbif   ,   &  !: Heat flux at the ice base 
     74      rdmsnif,   &  !: Variation of snow mass 
     75      rdmicif,   &  !: Variation of ice mass 
     76      qldif  ,   &  !: heat balance of the lead (or of the open ocean) 
     77      qcmif  ,   &  !: Energy needed to bring the ocean surface layer until its freezing  
     78      fdtcn  ,   &  !: net downward heat flux from the ice to the ocean 
     79      qdtcn  ,   &  !: energy from the ice to the ocean 
     80      !             ! point (at a factor 2) 
     81      thcm   ,   &  !: part of the solar energy used in the lead heat budget 
     82      fstric ,   &  !: Solar flux transmitted trough the ice 
     83      ffltbif,   &  !: Array linked with the max heat contained in brine pockets (?) 
     84      fscmbq ,   &  !: Linked with the solar flux below the ice (?) 
     85      fsbbq  ,   &  !: Also linked with the solar flux below the ice (?) 
     86      qfvbq  ,   &  !: Array used to store energy in case of toral lateral ablation (?) 
     87      dmgwi         !: Variation of the mass of snow ice 
    10188 
    102    REAL(wp), DIMENSION(jpi,jpj) ::   & 
    103       albege ,   &  ! Albedo of the snow or ice (only for outputs) 
    104       albecn ,   &  ! Albedo of the ocean (only for outputs) 
    105       tauc   ,   &  ! Cloud optical depth 
    106       sdvt          ! u*^2/(Stress/density) 
     89   REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   &  !: 
     90      albege ,   &  !: Albedo of the snow or ice (only for outputs) 
     91      albecn ,   &  !: Albedo of the ocean (only for outputs) 
     92      tauc   ,   &  !: Cloud optical depth 
     93      sdvt          !: u*^2/(Stress/density) 
    10794 
    10895 
    109    REAL(wp),DIMENSION(jpi,jpj) ::  &   
    110       u_ice, v_ice,   &  ! two components of the ice velocity (m/s) 
    111       tio_u, tio_v       ! two components of the ice-ocean stress (N/m2) 
     96   REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   &  !: 
     97      u_ice, v_ice,   &  !: two components of the ice velocity (m/s) 
     98      tio_u, tio_v       !: two components of the ice-ocean stress (N/m2) 
    11299 
    113    REAL(wp),DIMENSION(jpi,jpj,nsmax) :: & 
    114       scal0 
     100   REAL(wp), PUBLIC, DIMENSION(jpi,jpj,nsmax) ::   &  !: 
     101      scal0              !: ??? 
    115102 
    116    REAL(wp), DIMENSION(jpi,jpj,nlayersp1) ::   & 
    117       tbif          ! Temperature inside the ice/snow layer 
     103   REAL(wp), PUBLIC, DIMENSION(jpi,jpj,nlayersp1) ::   &  !: 
     104      tbif          !: Temperature inside the ice/snow layer 
    118105 
    119    REAL(wp), DIMENSION(jpi,jpj,0:kmax+1) ::    & 
    120       reslum        ! Relative absorption of solar radiation in each ocean level 
     106   REAL(wp), DIMENSION(jpi,jpj,0:kmax+1) ::    &  !: 
     107      reslum        !: Relative absorption of solar radiation in each ocean level 
    121108 
    122    REAL(wp), DIMENSION(jpi,jpj) ::   & 
    123          sxice, syice, sxxice, syyice, sxyice,      &  ! moments for advection 
    124          sxsn,  sysn,  sxxsn,  syysn,  sxysn,       & 
    125          sxa,   sya,   sxxa,   syya,   sxya,        & 
    126          sxc0,  syc0,  sxxc0,  syyc0,  sxyc0,       & 
    127          sxc1,  syc1,  sxxc1,  syyc1,  sxyc1,       & 
    128          sxc2,  syc2,  sxxc2,  syyc2,  sxyc2,       & 
    129          sxst,  syst,  sxxst,  syyst,  sxyst       
     109   REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   &  !: 
     110         sxice, syice, sxxice, syyice, sxyice,      &  !: moments for advection 
     111         sxsn,  sysn,  sxxsn,  syysn,  sxysn,       &  !: 
     112         sxa,   sya,   sxxa,   syya,   sxya,        &  !: 
     113         sxc0,  syc0,  sxxc0,  syyc0,  sxyc0,       &  !: 
     114         sxc1,  syc1,  sxxc1,  syyc1,  sxyc1,       &  !: 
     115         sxc2,  syc2,  sxxc2,  syyc2,  sxyc2,       &  !: 
     116         sxst,  syst,  sxxst,  syyst,  sxyst           !: 
    130117 
    131118#else 
  • trunk/NEMO/LIM_SRC/iceini.F90

    r3 r12  
    2828 
    2929   !! * Share Module variables 
    30    LOGICAL , PUBLIC  ::  & !!! ** init namelist (namicerun) ** 
    31       ldyn   = .TRUE.       ! flag for ice dynamics (T) or not (F) 
    32  
    33    REAL(wp), PUBLIC  ::  & 
    34       hsndif = 0.0     , & ! computation of temp. in snow (0) or not (9999) 
    35       hicdif = 0.0         ! computation of temp. in ice (0) or not (9999) 
    36  
    37    !! * Module variables 
    38    REAL(wp), PUBLIC, DIMENSION(2)  ::  &    
    39       acrit  = (/ 1.0e-06 , 1.0e-06 /)   ! minimum fraction for leads in  
    40       !                                  ! north and south hemisphere 
    41  
    42    INTEGER, PUBLIC   ::   & 
    43       nstart ,   &  ! iteration number of the begining of the run  
    44       nlast  ,   &  ! iteration number of the end of the run  
    45       nitrun ,   &  ! number of iteration 
    46       numit         ! iteration number 
    47   
    48   REAL(wp), PUBLIC ::   & 
    49       tpstot         ! time of the run in seconds 
     30   LOGICAL , PUBLIC  ::   & !!! ** init namelist (namicerun) ** 
     31      ldyn   = .TRUE.        !: flag for ice dynamics (T) or not (F) 
     32   INTEGER , PUBLIC  ::   &  !: 
     33      nstart ,            &  !: iteration number of the begining of the run  
     34      nlast  ,            &  !: iteration number of the end of the run  
     35      nitrun ,            &  !: number of iteration 
     36      numit                  !: iteration number 
     37   REAL(wp), PUBLIC  ::   &  !: 
     38      hsndif = 0.0 ,      &  !: computation of temp. in snow (0) or not (9999) 
     39      hicdif = 0.0 ,      &  !: computation of temp. in ice (0) or not (9999) 
     40      tpstot                 !: time of the run in seconds 
     41   REAL(wp), PUBLIC, DIMENSION(2)  ::  &  !: 
     42      acrit  = (/ 1.0e-06 , 1.0e-06 /)    !: minimum fraction for leads in  
     43      !                                   !  north and south hemisphere 
    5044   !!---------------------------------------------------------------------- 
    5145   !!   LIM 2.0   UCL-LODYC-IPSL (2003) 
  • 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 
  • trunk/NEMO/LIM_SRC/limdyn.F90

    r3 r12  
    204204      !!  8.5  ! 03-08 (C. Ethe) original code 
    205205      !!------------------------------------------------------------------- 
    206       NAMELIST/namicedyn/ epsd, nlminn, nlmaxs, alpha,     & 
     206      NAMELIST/namicedyn/ epsd, alpha,     & 
    207207         &                dm, nbiter, nbitdr, om, resl, cw, angvg, pstar,   & 
    208208         &                c_rhg, etamn, creepl, ecc, ahi0 
     
    220220         WRITE(numout,*) '~~~~~~~~~~~~' 
    221221         WRITE(numout,*) '   tolerance parameter                              epsd   = ', epsd 
    222          WRITE(numout,*) '   northern minimum index for ice drift             nlminn = ', nlminn 
    223          WRITE(numout,*) '   southern minimum index for ice drift             nlmaxs = ', nlmaxs 
    224222         WRITE(numout,*) '   coefficient for semi-implicit coriolis           alpha  = ', alpha 
    225223         WRITE(numout,*) '   diffusion constant for dynamics                  dm     = ', dm 
  • trunk/NEMO/LIM_SRC/limhdf.F90

    r3 r12  
    1616!  USE limdyn 
    1717   USE lbclnk 
     18   USE lib_mpp 
    1819 
    1920   IMPLICIT NONE 
     
    8384      zdiv0(:, 1 ) = 0.e0 
    8485      zdiv0(:,jpj) = 0.e0 
    85 #if ! defined key_vectopt_loop 
    86       zflu (jpi,:) = 0.e0    
    87       zflv (jpi,:) = 0.e0 
    88       zdiv0(1,  :) = 0.e0 
    89       zdiv0(jpi,:) = 0.e0 
    90 #endif 
     86      IF( .NOT.lk_vopt_loop ) THEN 
     87         zflu (jpi,:) = 0.e0    
     88         zflv (jpi,:) = 0.e0 
     89         zdiv0(1,  :) = 0.e0 
     90         zdiv0(jpi,:) = 0.e0 
     91      ENDIF 
    9192 
    9293      ! Metric coefficient (compute at the first call and saved in 
     
    149150            END DO 
    150151         END DO 
    151 #if defined key_mpp 
    152          CALL mpp_max( zconv ) 
    153 #endif 
     152         IF( lk_mpp )   CALL mpp_max( zconv )   ! max over the global domain 
     153 
    154154         DO jj = 2, jpjm1 
    155155            DO ji = 2 , jpim1 
  • trunk/NEMO/LIM_SRC/limmsh.F90

    r3 r12  
    33   !!====================================================================== 
    44   !!                     ***  MODULE  limmsh  *** 
    5    !!                    definition of the ice mesh 
     5   !! LIM ice model :   definition of the ice mesh parameters 
    66   !!====================================================================== 
    77 
     
    4545      !!---------------------------------------------------------------------  
    4646      !! * Local variables 
    47       INTEGER :: ji, jj     ! dummy loop indices 
     47      INTEGER :: ji, jj      ! dummy loop indices 
    4848 
    4949      REAL(wp), DIMENSION(jpi,jpj) ::  & 
    50          zd2d1 , zd1d2      !  Derivative of zh2 (resp. zh1) in the x direction (defined at the center) 
    51  
     50         zd2d1 , zd1d2       ! Derivative of zh2 (resp. zh1) in the x direction 
     51         !                   ! (resp. y direction) (defined at the center) 
    5252      REAL(wp) ::         & 
    53          zh1p  , zh2p  ,  & !  Idem zh1, zh2 for the bottom left corner of the grid 
    54          zd2d1p, zd1d2p,  & !  Idem zd2d1, zd1d2 for the bottom left corner of the grid 
    55          zusden, zusden2, zaire4  !  tempory scalars 
     53         zh1p  , zh2p  ,  &  ! Idem zh1, zh2 for the bottom left corner of the grid 
     54         zd2d1p, zd1d2p,  &  ! Idem zd2d1, zd1d2 for the bottom left corner of the grid 
     55         zusden, zusden2, &  ! temporary scalars 
     56         zaire4              !    "         " 
    5657      !!--------------------------------------------------------------------- 
    5758      !!  LIM 2.0, UCL-LODYC-IPSL (2002) 
     
    8384      ! metric coefficients for sea ice dynamic 
    8485      !---------------------------------------- 
    85        
    8686      !                                                       ! akappa 
    87       DO jj = 2 , jpj 
    88          DO ji = 1 , jpi 
     87      DO jj = 2, jpj 
     88         DO ji = 1, jpi 
    8989            zd1d2(ji,jj) = e1v(ji,jj) - e1v(ji,jj-1) 
    9090         END DO 
    9191      END DO 
    92       CALL lbc_lnk( zd1d2 , 'T', -1. ) 
    93  
    94       DO jj = 1 , jpj 
    95          DO ji = 2 , jpi 
     92      CALL lbc_lnk( zd1d2, 'T', -1. ) 
     93 
     94      DO jj = 1, jpj 
     95         DO ji = 2, jpi 
    9696            zd2d1(ji,jj) = e2u(ji,jj) - e2u(ji-1,jj) 
    9797         END DO 
    9898      END DO 
    99       CALL lbc_lnk( zd2d1 , 'T', -1. ) 
    100  
    101       DO jj = 1 , jpj 
    102          DO ji = 1 , jpi 
     99      CALL lbc_lnk( zd2d1, 'T', -1. ) 
     100 
     101      DO jj = 1, jpj 
     102         DO ji = 1, jpi 
    103103            zaire4            = 4.0 * e1t(ji,jj) * e2t(ji,jj) 
    104104            akappa(ji,jj,1,1) =          1.0 / ( 2.0 * e1t(ji,jj) ) 
     
    110110       
    111111      !                                                      ! weights (wght) 
    112       DO jj = 2 , jpj 
    113          DO ji = 2 , jpi 
     112      DO jj = 2, jpj 
     113         DO ji = 2, jpi 
    114114            zusden = 1. / (  ( e1t(ji,jj) + e1t(ji-1,jj  ) )   & 
    115115               &           * ( e2t(ji,jj) + e2t(ji  ,jj-1) ) ) 
     
    128128      !------------------------------------------------- 
    129129 
    130       DO jj = 2,jpj 
    131          DO ji = 2 , jpi 
     130      DO jj = 2, jpj 
     131         DO ji = 2, jpi 
    132132            zh1p  =  e1t(ji  ,jj  ) * wght(ji,jj,2,2)   & 
    133133               &   + e1t(ji-1,jj  ) * wght(ji,jj,1,2)   & 
     
    211211      tmu(1,:) = 0.e0 
    212212      DO jj = 2, jpj               ! ice U.V-point: computed from ice T-point mask 
    213          DO ji = 2 , jpim1 
     213         DO ji = 2, jpim1 
    214214            tmu(ji,jj) =  tms(ji,jj) * tms(ji-1,jj) * tms(ji,jj-1) * tms(ji-1,jj-1)             
    215215         END DO 
  • trunk/NEMO/LIM_SRC/limrhg.F90

    r3 r12  
    3535   SUBROUTINE lim_rhg( khemi ) 
    3636      !!------------------------------------------------------------------- 
    37       !! 
    38       !!  This routine determines the velocity field of sea ice 
    39       !!  by using atmospheric (wind stress) and oceanic (water 
    40       !!  stress and surface tilt) forcings. Ice-ice interaction 
    41       !!  is described by a non-linear viscous-plastic law inclu- 
    42       !!  ding shear strength and a bulk rheology.  
     37      !!                 ***  SUBROUTINR lim_rhg  *** 
     38      !! ** purpose :   determines the velocity field of sea ice by using 
     39      !!  atmospheric (wind stress) and oceanic (water stress and surface 
     40      !!  tilt) forcings. Ice-ice interaction is described by a non-linear 
     41      !!  viscous-plastic law including shear strength and a bulk rheology.    
    4342      !! 
    4443      !! ** Action  : - compute u_ice, v_ice the sea-ice velocity 
     
    5352 
    5453      ! * Local variables 
    55       INTEGER ::   ji, jj,          &  ! dummy loop indices 
    56          iim1, ijm1, iip1, ijp1,    &  ! ??? 
    57          njmin, njmax, njmm1,       & 
    58          iter, jter 
    59  
     54      INTEGER ::   ji, jj              ! dummy loop indices 
     55 
     56      INTEGER  :: & 
     57         i_j1, i_j2, i_jpj, i_jpjm1, & ! ???? 
     58         iim1, ijm1, iip1 , ijp1   , & ! temporary integers 
     59         iter, jter                    !    "          " 
     60 
     61      REAL(wp) :: & 
     62         ze11  , ze12  , ze22  , ze21  ,   &  ! temporary scalars 
     63         zt11  , zt12  , zt21  , zt22  ,   &  !    "         " 
     64         zvis11, zvis21, zvis12, zvis22,   &  !    "         " 
     65         zgphsx, ztagnx, zusw  ,           &  !    "         " 
     66         zgphsy, ztagny                       !    "         " 
     67      REAL(wp) :: & 
     68         zresm, zunw, zvnw, zur, zvr, zmod, za, zac, & 
     69         zmpzas, zstms, zindu, zindu1, zusdtp, zmassdt, zcorlal,  & 
     70         ztrace2, zdeter, zdelta, zsang, zmask, zdgp, zdgi, zdiag 
     71      REAL(wp),DIMENSION(jpj) ::   & 
     72         zind                                 ! i-averaged indicator of sea-ice 
    6073      REAL(wp),DIMENSION(jpi,jpj) ::   & 
    6174         zpresh, zfrld, zmass, zcorl,     & 
     
    6376         zc1u, zc1v, zc2u, zc2v, za1ct, za2ct, za1, za2, zb1, zb2,  & 
    6477         zc1, zc2, zd1, zd2, zden, zu_ice, zv_ice, zresr 
    65  
    6678      REAL(wp),DIMENSION(jpi,jpj,2,2) :: & 
    6779         zsigm11, zsigm12, zsigm22, zsigm21 
    68  
    69       REAL(wp) :: & 
    70          ze11, ze12, ze22, ze21,  & 
    71          zvis11, zvis21, zvis12, zvis22 ,   & 
    72          zgphsx, zgphsy, zusw, ztagnx, ztagny,   & 
    73          zt11, zt12, zt21, zt22 
    74  
    75       REAL(wp) :: & 
    76          zresm, zunw, zvnw, zur, zvr, zmod, za, zac, & 
    77          zmpzas, zstms, zindu, zindu1, zusdtp, zmassdt, zcorlal,  & 
    78          ztrace2, zdeter, zdelta, zsang, zmask, zdgp, zdgi, zdiag,   & 
    79          zind 
    80       INTEGER  :: & 
    81          i_j1, i_j2, i_jpj, i_jpjm1 
    8280      !!------------------------------------------------------------------- 
    8381       
    84  
    85       ! Numerical characteristics.                                        
    86       ! -------------------------- 
    87  
    88       !  Define the limits where ice dynamics is computed 
    89       IF( khemi ==  1 )  THEN      ! Northern hemisphere 
    90          njmin = nlminn 
    91          njmax = nlmaxn 
    92       ELSE                         ! Southern hemisphere 
    93          njmin = nlmins 
    94          njmax = nlmaxs 
    95       ENDIF 
    96       njmm1 = njmin - 1 
    97  
    9882      !  Store initial velocities. 
    9983      zu0(:,:) = u_ice(:,:) 
    10084      zv0(:,:) = v_ice(:,:) 
    10185 
    102       IF( l_ctl .AND. lwp )   WRITE(numout,*) 'lim_rhg :  njmin = ', njmin, ' njmax = ', njmax 
    103 !i essai control zone de calcul 
    104       IF( l_ctl .AND. lwp ) THEN 
     86      ! Numerical characteristics.                                        
     87      ! -------------------------- 
     88 
     89      !  Define the j-limits where ice dynamics is computed 
     90      ! --------------------------------------------------- 
     91 
     92      DO jj = 1, jpj 
     93         zind(jj) = SUM( frld(:,jj) )   ! = FLOAT(jpj) if ocean everwhere on a j-line 
     94      END DO 
     95 
    10596      IF( khemi ==  1 )  THEN      ! Northern hemisphere 
    106       i_j1  = jeq 
    107       i_jpj = jpj 
    108       DO jj = jpj, jeq, -1 
    109          zind = INT( SUM( frld(:,jj) ) ) 
    110             IF( zind < jpi ) i_j1 = jj 
    111       END DO 
    112       WRITE(numout,*) 'lim_rhg : NH i_j1 = ', i_j1, ' ij_pj = ', i_jpj 
    113       i_j1 = MAX( 1, i_j1-2) 
    114 !        njmin = nlminn 
    115 !        njmax = nlmaxn 
     97         i_j1  = jeq 
     98         i_jpj = jpj 
     99         DO jj = jpj, jeq, -1 
     100            IF( zind(jj) < FLOAT(jpi) )   i_j1 = jj 
     101         END DO 
     102         i_j1 = MAX( 1, i_j1-1) 
     103         IF( l_ctl .AND. lwp ) WRITE(numout,*) 'lim_rhg : NH i_j1 = ', i_j1, ' ij_pj = ', i_jpj 
    116104      ELSE                         ! Southern hemisphere 
    117       i_j1  = 2 
    118       i_jpj = jpj 
    119       DO jj = 1, jeq 
    120          zind = INT( SUM( frld(:,jj) ) ) 
    121             IF( zind < jpi ) i_jpj = jj 
    122       END DO 
    123       WRITE(numout,*) 'lim_rhg : SH i_j1 = ', i_j1, ' ij_pj = ', i_jpj 
    124       i_j1 = MAX( jpj, i_jpj+2) 
    125 !        njmin = nlmins 
    126 !        njmax = nlmaxs 
     105         i_j1  = 2 
     106         i_jpj = jpj 
     107         DO jj = 1, jeq 
     108            IF( zind(jj) < FLOAT(jpi) ) i_jpj = jj 
     109         END DO 
     110         i_jpj = MIN( jpj, i_jpj+2) 
     111         IF( l_ctl .AND. lwp ) WRITE(numout,*) 'lim_rhg : SH i_j1 = ', i_j1, ' ij_pj = ', i_jpj 
    127112      ENDIF 
    128       i_j2    = i_j1  + 1 
     113      i_j2    = i_j1  + 1   ! inner domain indices 
    129114      i_jpjm1 = i_jpj - 1 
    130       ENDIF 
     115 
    131116 
    132117      !  2) Sign of turning angle for oceanic drag.                          | 
     
    140125      !----------------------------------------------------------------------- 
    141126 
    142       DO jj = njmm1 , njmax 
     127      DO jj = i_j1 , i_jpjm1 
    143128         DO ji = 1 , jpi 
    144129            za1(ji,jj)    = tms(ji,jj) * ( rhosn * hsnm(ji,jj) + rhoic * hicm(ji,jj) ) 
     
    160145      !--------------------------------------------------------------------------- 
    161146          
    162       DO jj = njmin, njmax 
     147      DO jj = i_j2, i_jpjm1 
    163148         DO ji = 2, jpi 
    164149            zstms = tms(ji,jj  ) * wght(ji,jj,2,2) + tms(ji-1,jj  ) * wght(ji,jj,1,2)   & 
     
    226211         ! Computation of free drift field for free slip boundary conditions. 
    227212 
    228            DO jj = njmm1, njmax 
     213           DO jj = i_j1, i_jpjm1 
    229214              DO ji = 1, jpim1 
    230215                 !- Rate of strain tensor. 
     
    257242 
    258243           !-  Determination of zc1u, zc2u, zc1v and zc2v. 
    259            DO jj = njmin, njmax 
     244           DO jj = i_j2, i_jpjm1 
    260245              DO ji = 2, jpim1 
    261246                 ze11   =  akappa(ji-1,jj-1,1,1) 
     
    321306           END DO 
    322307 
    323            DO jj = njmin, njmax 
     308           DO jj = i_j2, i_jpjm1 
    324309              DO ji = 2, jpim1 
    325310                 zc1u(ji,jj) = alambd(ji,jj,2,2,2,1) * zsigm11(ji,jj,2,1) + alambd(ji,jj,2,2,2,2) * zsigm11(ji,jj,2,2)   & 
     
    343328           END DO 
    344329 
    345            DO jj = njmin, njmax 
     330           DO jj = i_j2, i_jpjm1 
    346331              DO ji = 2, jpim1 
    347332                 !  zc1v , zc2v. 
     
    409394           END DO 
    410395 
    411            DO jj = njmin, njmax 
     396           DO jj = i_j2, i_jpjm1 
    412397              DO ji = 2, jpim1 
    413398                 zc1v(ji,jj) = alambd(ji,jj,2,2,2,1) * zsigm11(ji,jj,2,1) + alambd(ji,jj,2,2,2,2) * zsigm11(ji,jj,2,2)   & 
     
    435420 
    436421            !  Store previous drift field.    
    437             DO jj = njmm1, njmax 
     422            DO jj = i_j1, i_jpjm1 
    438423               zu_ice(:,jj) = u_ice(:,jj) 
    439424               zv_ice(:,jj) = v_ice(:,jj) 
    440425            END DO 
    441426 
    442             DO jj = njmin, njmax 
     427            DO jj = i_j2, i_jpjm1 
    443428                DO ji = 2, jpim1 
    444429                  zur     = u_ice(ji,jj) - u_oce(ji,jj) 
     
    471456            ! Terms that do not involve already up-dated velocities. 
    472457          
    473             DO jj = njmin, njmax 
     458            DO jj = i_j2, i_jpjm1 
    474459               DO ji = 2, jpim1 
    475460                  iim1 = ji 
     
    544529            ! Using arrays u and v in the computation of the terms ze leads to GAUSS-SEIDEL method.    
    545530              
    546             DO jj = njmin, njmax 
     531            DO jj = i_j2, i_jpjm1 
    547532               DO ji = 2, jpim1 
    548533                  iim1 = ji - 1 
     
    613598!i          END DO 
    614599 
    615 !i          DO jj = njmin, njmax 
     600!i          DO jj = i_j2, i_jpjm1 
    616601!i             DO ji = 2, jpim1 
    617602                  zd1(ji,jj) = alambd(ji,jj,2,2,2,1) * zsigm11(ji,jj,2,1) + alambd(ji,jj,2,2,2,2) * zsigm11(ji,jj,2,2)  & 
     
    635620            END DO 
    636621 
    637             DO jj = njmin, njmax 
     622            DO jj = i_j2, i_jpjm1 
    638623               DO ji = 2, jpim1 
    639624                  zunw = (  ( za1(ji,jj) + zd1(ji,jj) ) * zc2(ji,jj)        & 
     
    654639 
    655640            !---  5.2.5.4. Convergence test. 
    656             DO jj = njmin , njmax 
     641            DO jj = i_j2 , i_jpjm1 
    657642               zresr(:,jj) = MAX( ABS( u_ice(:,jj) - zu_ice(:,jj) ) , ABS( v_ice(:,jj) - zv_ice(:,jj) ) ) 
    658643            END DO 
    659             zresm = MAXVAL( zresr( 1:jpi , njmin:njmax ) ) 
     644            zresm = MAXVAL( zresr( 1:jpi , i_j2:i_jpjm1 ) ) 
    660645 
    661646            IF ( zresm <= resl) EXIT iflag 
     
    664649 
    665650         zindu1 = 1.0 - zindu 
    666          DO jj = njmm1 , njmax 
     651         DO jj = i_j1 , i_jpjm1 
    667652            zu0(:,jj) = zindu * zu0(:,jj) + zindu1 * u_ice(:,jj) 
    668653            zv0(:,jj) = zindu * zv0(:,jj) + zindu1 * v_ice(:,jj) 
  • trunk/NEMO/LIM_SRC/limthd_lac.F90

    r3 r12  
    99   !!   lim_lat_acr    : lateral accretion of ice 
    1010   !! * Modules used 
     11   USE par_oce          ! ocean parameters 
    1112   USE phycst 
    1213   USE ice_oce         ! ice variables 
     
    3233CONTAINS 
    3334     
    34     SUBROUTINE lim_thd_lac( kideb , kiut) 
     35    SUBROUTINE lim_thd_lac( kideb, kiut ) 
    3536      !!------------------------------------------------------------------- 
    3637      !!               ***   ROUTINE lim_thd_lac  *** 
  • trunk/NEMO/LIM_SRC/limthd_zdf.F90

    r3 r12  
    99   !!   lim_thd_zdf  : vertical accr./abl. and lateral ablation of sea ice 
    1010   !! * Modules used 
    11    USE phycst 
    12    USE ice_oce         ! ice variables 
     11   USE par_oce          ! ocean parameters 
     12   USE phycst           ! ??? 
     13   USE ice_oce          ! ice variables 
    1314   USE thd_ice 
    1415   USE iceini 
  • trunk/NEMO/LIM_SRC/limtrp.F90

    r3 r12  
    2323   USE limadv 
    2424   USE limhdf 
    25 !  USE limdyn 
    2625   USE lbclnk 
    2726 
     
    3231   PUBLIC lim_trp       ! called by ice_step 
    3332 
     33   !! * Shared module variables 
     34   REAL(wp), PUBLIC  ::   &  !: 
     35      bound  = 0.0           !: boundary condit. (0.0 no-slip, 1.0 free-slip) 
     36 
    3437   !! * Module variables 
    35    REAL(wp), PUBLIC  ::   & 
    36       bound  = 0.0           ! boundary condit. (0.0 no-slip, 1.0 free-slip) 
    37  
    3838   REAL(wp)  ::           &  ! constant values 
    3939      epsi06 = 1.e-06  ,  & 
  • trunk/NEMO/LIM_SRC/par_ice.F90

    r3 r12  
    77   USE par_oce 
    88 
    9    INTEGER, PARAMETER ::   & 
    10       kmax =   1    ,      &  ! ??? 
    11       nsmax =  2              ! ??? 
     9   INTEGER, PARAMETER ::   &  !: 
     10      kmax =   1    ,      &  !: ??? 
     11      nsmax =  2              !: ??? 
    1212 
    1313   !!-- Parameter providing the number of vertical ice layers 
    1414    
    15    INTEGER , PARAMETER ::   & 
    16       nlayers   = 2 ,          &  ! ??? 
    17       nlayersp1 = nlayers + 1     ! ??? 
     15   INTEGER , PARAMETER ::      &  !: 
     16      nlayers   = 2 ,          &  !: ??? 
     17      nlayersp1 = nlayers + 1     !: ??? 
    1818 
    1919   ! maximum number of variable for output 
    20    INTEGER, PARAMETER ::   & 
    21       noumax = 40                 ! ??? 
     20   INTEGER, PARAMETER ::   &  !: 
     21      noumax = 40             !: ??? 
    2222 
    2323   ! Parameters for outputs to files "evolu" made by routine "informe" : ??? 
    24    INTEGER, PARAMETER :: & 
    25       ninfmx = 100                ! maximum number of key variables 
    26    INTEGER, PARAMETER :: & 
    27       nchinf = 5                  ! ??? 
    28    INTEGER, PARAMETER :: & 
    29       nchsep = nchinf + 2         ! ??? 
     24   INTEGER, PARAMETER ::       &  !: 
     25      ninfmx = 100        ,    &  !: maximum number of key variables 
     26      nchinf = 5          ,    &  !: ??? 
     27      nchsep = nchinf + 2         !: ??? 
    3028 
    3129   !!====================================================================== 
  • trunk/NEMO/LIM_SRC/thd_ice.F90

    r3 r12  
    44   !! LIM sea-ice :   Ice thermodynamics in 1D 
    55   !!===================================================================== 
    6    !! 
    7    !! ** Purpose : - Define in memory LIM thermodynamical variables in 1D 
    8    !! 
    96   !! History : 
    107   !!   2.0  !  02-11  (C. Ethe)  F90: Free form and module 
     
    1512   USE par_ice 
    1613 
     14   IMPLICIT NONE 
     15   PRIVATE 
     16 
    1717   !! * Share Module variables 
    1818   REAL(wp) , PUBLIC ::   & !!! ** ice-thermo namelist (namicethd) ** 
    19       hmelt   = -0.15  ,  & ! maximum melting at the bottom 
    20       hicmin  = 0.2    ,  & ! ice th. corr. to max. ener. in brine pocket 
    21       hiclim  = 0.05   ,  & ! minimum ice thickness 
    22       amax    = 0.999  ,  & ! maximum lead fraction 
    23       swiqst  = 1.0    ,  & ! energy stored in brine pocket (1) or not (0) 
    24       sbeta   = 1.0    ,  & ! numerical scheme for diffusion in ice  
    25       parlat  = 0.0    ,  & ! percent. of energy used for lateral ablation 
    26       hakspl  = 0.5    ,  & ! slope of distr. for Hakkinen-Mellro's lat. melt 
    27       hibspl  = 0.5    ,  & ! slope of distribution for Hibler's lat. melt 
    28       exld    = 2.0    ,  & ! exponent for leads-closure rate 
    29       hakdif  = 1.0    ,  & ! coefficient for diffusions of ice and snow 
    30       thth    = 0.2    ,  & ! thick. for comp. of eq. thermal conduct 
    31       hnzst   = 0.1    ,  & ! thick. of the surf. layer in temp. comp. 
    32       parsub  = 1.0    ,  & ! switch for snow sublimation or not 
    33       alphs   = 1.0         ! coef. for snow density when snow-ice formation 
     19      hmelt   = -0.15  ,  &  !: maximum melting at the bottom 
     20      hicmin  = 0.2    ,  &  !: ice th. corr. to max. ener. in brine pocket 
     21      hiclim  = 0.05   ,  &  !: minimum ice thickness 
     22      amax    = 0.999  ,  &  !: maximum lead fraction 
     23      swiqst  = 1.0    ,  &  !: energy stored in brine pocket (1) or not (0) 
     24      sbeta   = 1.0    ,  &  !: numerical scheme for diffusion in ice  
     25      parlat  = 0.0    ,  &  !: percent. of energy used for lateral ablation 
     26      hakspl  = 0.5    ,  &  !: slope of distr. for Hakkinen-Mellro's lat. melt 
     27      hibspl  = 0.5    ,  &  !: slope of distribution for Hibler's lat. melt 
     28      exld    = 2.0    ,  &  !: exponent for leads-closure rate 
     29      hakdif  = 1.0    ,  &  !: coefficient for diffusions of ice and snow 
     30      thth    = 0.2    ,  &  !: thick. for comp. of eq. thermal conduct 
     31      hnzst   = 0.1    ,  &  !: thick. of the surf. layer in temp. comp. 
     32      parsub  = 1.0    ,  &  !: switch for snow sublimation or not 
     33      alphs   = 1.0          !: coef. for snow density when snow-ice formation 
    3434 
    35    REAL(wp), PUBLIC, DIMENSION(2)  ::  &   
    36       hiccrit = (/0.3,0.3/) ! ice th. for lateral accretion in the NH (SH) (m) 
     35   REAL(wp), PUBLIC, DIMENSION(2)  ::  &  !:   
     36      hiccrit = (/0.3,0.3/)  !: ice th. for lateral accretion in the NH (SH) (m) 
    3737 
    38    REAL(wp) , PUBLIC ::   & 
    39       uscomi,             & ! inverse of minimum lead fraction 
    40       cnscg                 ! ratio  rcpsn/rcpic 
     38   REAL(wp) , PUBLIC ::   &  !: 
     39      uscomi,             &  !: inverse of minimum lead fraction 
     40      cnscg                  !: ratio  rcpsn/rcpic 
    4141 
    42    INTEGER , DIMENSION(jpij) ::   & 
    43       npb     ,   &  ! number of points where computations has to be done 
    44       npac           ! correspondance between the points 
     42   INTEGER , PUBLIC, DIMENSION(jpij) ::   &  !: 
     43      npb     ,   &   !: number of points where computations has to be done 
     44      npac            !: correspondance between the points 
    4545 
    46    REAL(wp), DIMENSION(jpij) ::   &  
    47       qldif_1d    ,     &  ! corresponding to the 2D var  qldif 
    48       qcmif_1d    ,     &  ! corresponding to the 2D var  qcmif 
    49       thcm_1d     ,     &  !    "                  "      thcm 
    50       fstbif_1d   ,     &  !    "                  "      fstric 
    51       fltbif_1d   ,     &  !    "                  "      ffltbif 
    52       fscbq_1d    ,     &  !    "                  "      fscmcbq 
    53       qsr_ice_1d  ,     &  !    "                  "      qsr_ice 
    54       fr1_i0_1d   ,     &  !    "                  "      fr1_i0 
    55       fr2_i0_1d   ,     &  !    "                  "      fr2_i0 
    56       qnsr_ice_1d ,     &  !    "                  "      qns_ice 
    57       qfvbq_1d    ,     &  !    "                  "      qfvbq 
    58       sist_1d     ,     &  !    "                  "      sist 
    59       tfu_1d      ,     &  !    "                  "      tfu 
    60       sprecip_1d  ,     &  !    "                  "      sprecip 
    61       h_snow_1d   ,     &  !    "                  "      h_snow 
    62       h_ice_1d    ,     &  !    "                  "      h_ice 
    63       frld_1d     ,     &  !    "                  "      frld 
    64       qstbif_1d   ,     &  !    "                  "      qstoif 
    65       fbif_1d     ,     &  !    "                  "      fbif 
    66       rdmicif_1d  ,     &  !    "                  "      rdmicif 
    67       rdmsnif_1d  ,     &  !    "                  "      rdmsnif 
    68       qlbbq_1d    ,     &  !    "                  "      qlbsbq 
    69       dmgwi_1d    ,     &  !    "                  "      dmgwi 
    70       dvsbq_1d    ,     &  !    "                  "      rdvosif 
    71       dvbbq_1d    ,     &  !    "                  "      rdvobif 
    72       dvlbq_1d    ,     &  !    "                  "      rdvolif 
    73       dvnbq_1d    ,     &  !    "                  "      rdvolif 
    74       dqns_ice_1d ,     &  !    "                  "      dqns_ice 
    75       qla_ice_1d  ,     &  !    "                  "      qla_ice 
    76       dqla_ice_1d          !    "                  "      dqla_ice 
     46   REAL(wp), PUBLIC, DIMENSION(jpij) ::   &  !:  
     47      qldif_1d    ,     &  !: corresponding to the 2D var  qldif 
     48      qcmif_1d    ,     &  !: corresponding to the 2D var  qcmif 
     49      thcm_1d     ,     &  !:    "                  "      thcm 
     50      fstbif_1d   ,     &  !:    "                  "      fstric 
     51      fltbif_1d   ,     &  !:    "                  "      ffltbif 
     52      fscbq_1d    ,     &  !:    "                  "      fscmcbq 
     53      qsr_ice_1d  ,     &  !:    "                  "      qsr_ice 
     54      fr1_i0_1d   ,     &  !:    "                  "      fr1_i0 
     55      fr2_i0_1d   ,     &  !:    "                  "      fr2_i0 
     56      qnsr_ice_1d ,     &  !:    "                  "      qns_ice 
     57      qfvbq_1d    ,     &  !:    "                  "      qfvbq 
     58      sist_1d     ,     &  !:    "                  "      sist 
     59      tfu_1d      ,     &  !:    "                  "      tfu 
     60      sprecip_1d  ,     &  !:    "                  "      sprecip 
     61      h_snow_1d   ,     &  !:    "                  "      h_snow 
     62      h_ice_1d    ,     &  !:    "                  "      h_ice 
     63      frld_1d     ,     &  !:    "                  "      frld 
     64      qstbif_1d   ,     &  !:    "                  "      qstoif 
     65      fbif_1d     ,     &  !:    "                  "      fbif 
     66      rdmicif_1d  ,     &  !:    "                  "      rdmicif 
     67      rdmsnif_1d  ,     &  !:    "                  "      rdmsnif 
     68      qlbbq_1d    ,     &  !:    "                  "      qlbsbq 
     69      dmgwi_1d    ,     &  !:    "                  "      dmgwi 
     70      dvsbq_1d    ,     &  !:    "                  "      rdvosif 
     71      dvbbq_1d    ,     &  !:    "                  "      rdvobif 
     72      dvlbq_1d    ,     &  !:    "                  "      rdvolif 
     73      dvnbq_1d    ,     &  !:    "                  "      rdvolif 
     74      dqns_ice_1d ,     &  !:    "                  "      dqns_ice 
     75      qla_ice_1d  ,     &  !:    "                  "      qla_ice 
     76      dqla_ice_1d          !:    "                  "      dqla_ice 
    7777 
    78    REAL(wp), DIMENSION(jpij,nlayersp1) ::   & 
    79       tbif_1d              ! corresponding to the 2D var  tbif 
     78   REAL(wp), PUBLIC, DIMENSION(jpij,nlayersp1) ::   &  !: 
     79      tbif_1d              !: corresponding to the 2D var  tbif 
    8080 
    8181   !!====================================================================== 
Note: See TracChangeset for help on using the changeset viewer.