source: branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icerhg.F90 @ 8516

Last change on this file since 8516 was 8516, checked in by clem, 3 years ago

changes in style - part5 - I think I can see the end of the tunnel

File size: 6.1 KB
Line 
1MODULE icerhg
2   !!======================================================================
3   !!                     ***  MODULE  icerhg  ***
4   !!   Sea-Ice dynamics : 
5   !!======================================================================
6   !! history :  1.0  ! 2002-08  (C. Ethe, G. Madec)  original VP code
7   !!            3.0  ! 2007-03  (MA Morales Maqueda, S. Bouillon, M. Vancoppenolle)  LIM3: EVP-Cgrid
8   !!            3.5  ! 2011-02  (G. Madec) dynamical allocation
9   !!----------------------------------------------------------------------
10#if defined key_lim3
11   !!----------------------------------------------------------------------
12   !!   'key_lim3'                                       LIM3 sea-ice model
13   !!----------------------------------------------------------------------
14   !!    ice_rhg      : computes ice velocities
15   !!    ice_rhg_init : initialization and namelist read
16   !!----------------------------------------------------------------------
17   USE phycst         ! physical constants
18   USE dom_oce        ! ocean space and time domain
19   USE ice            ! sea-ice: variables
20   USE icerhg_evp     ! sea-ice: EVP rheology
21   USE icectl         ! sea-ice: control prints
22   !
23   USE lbclnk         ! lateral boundary conditions - MPP exchanges
24   USE lib_mpp        ! MPP library
25   USE in_out_manager ! I/O manager
26   USE lib_fortran    ! glob_sum
27   USE timing         ! Timing
28
29   IMPLICIT NONE
30   PRIVATE
31
32   PUBLIC   ice_rhg        ! called by icestp.F90
33   PUBLIC   ice_rhg_init   ! called by icestp.F90
34   
35   !! * Substitutions
36#  include "vectopt_loop_substitute.h90"
37   !!----------------------------------------------------------------------
38   !! NEMO/ICE 4.0 , NEMO Consortium (2017)
39   !! $Id: icerhg.F90 8378 2017-07-26 13:55:59Z clem $
40   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
41   !!----------------------------------------------------------------------
42CONTAINS
43
44   SUBROUTINE ice_rhg( kt )
45      !!-------------------------------------------------------------------
46      !!               ***  ROUTINE ice_rhg  ***
47      !!               
48      !! ** Purpose :   compute ice velocity
49      !!
50      !! ** Action  : comupte - ice velocity (u_ice, v_ice)
51      !!                      - 3 components of the stress tensor (stress1_i, stress2_i, stress12_i)
52      !!                      - shear, divergence and delta (shear_i, divu_i, delta_i)
53      !!--------------------------------------------------------------------
54      INTEGER, INTENT(in) ::   kt     ! ice time step
55      !!
56      REAL(wp) :: zvi_b, zsmv_b, zei_b, zfs_b, zfw_b, zft_b 
57      !!--------------------------------------------------------------------
58      !
59      IF( nn_timing == 1 )  CALL timing_start('icerhg')
60      !
61      IF( kt == nit000 .AND. lwp ) THEN
62         WRITE(numout,*)
63         WRITE(numout,*)'ice_rhg: sea-ice rheology'
64         WRITE(numout,*)'~~~~~~~'
65      ENDIF
66      !                             ! -- conservation test
67      IF( ln_icediachk   )   CALL ice_cons_hsm(0, 'icerhg', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b)
68
69      ! -----------------------
70      ! Rheology (ice dynamics)
71      ! -----------------------   
72      CALL ice_rhg_evp( kt, stress1_i, stress2_i, stress12_i, u_ice, v_ice, shear_i, divu_i, delta_i )
73      !
74      !                             !- conservation test
75      IF( ln_icediachk   )   CALL ice_cons_hsm(1, 'icerhg', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b)
76      IF( ln_ctl         )   CALL ice_prt3D  ('icerhg')   !- Control prints
77      IF( nn_timing == 1 )   CALL timing_stop('icerhg')   !- timing
78      !
79   END SUBROUTINE ice_rhg
80
81
82   SUBROUTINE ice_rhg_init
83      !!-------------------------------------------------------------------
84      !!                  ***  ROUTINE ice_rhg_init  ***
85      !!
86      !! ** Purpose : Physical constants and parameters linked to the ice
87      !!      dynamics
88      !!
89      !! ** Method  :  Read the namice_rhg namelist and check the ice-dynamic
90      !!       parameter values called at the first timestep (nit000)
91      !!
92      !! ** input   :   Namelist namice_rhg
93      !!-------------------------------------------------------------------
94      INTEGER ::   ios   ! Local integer output status for namelist read
95      !!
96      NAMELIST/namice_rhg/  ln_rhg_EVP, rn_creepl, rn_ecc , nn_nevp, rn_relast
97      !!-------------------------------------------------------------------
98      !
99      REWIND( numnam_ice_ref )         ! Namelist namice_rhg in reference namelist : Ice dynamics
100      READ  ( numnam_ice_ref, namice_rhg, IOSTAT = ios, ERR = 901)
101901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice_rhg in reference namelist', lwp )
102      !
103      REWIND( numnam_ice_cfg )         ! Namelist namice_rhg in configuration namelist : Ice dynamics
104      READ  ( numnam_ice_cfg, namice_rhg, IOSTAT = ios, ERR = 902 )
105902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namice_rhg in configuration namelist', lwp )
106      IF(lwm) WRITE ( numoni, namice_rhg )
107      !
108      IF(lwp) THEN                     ! control print
109         WRITE(numout,*)
110         WRITE(numout,*) 'ice_rhg_init: ice parameters for ice dynamics '
111         WRITE(numout,*) '~~~~~~~~~~~~'
112         WRITE(numout,*) '   Namelist namice_rhg'
113         WRITE(numout,*) '      rheology EVP (icerhg_evp)                                   ln_rhg_EVP    = ', ln_rhg_EVP
114         WRITE(numout,*) '         creep limit                                              rn_creepl     = ', rn_creepl
115         WRITE(numout,*) '         eccentricity of the elliptical yield curve               rn_ecc        = ', rn_ecc
116         WRITE(numout,*) '         number of iterations for subcycling                      nn_nevp       = ', nn_nevp
117         WRITE(numout,*) '         ratio of elastic timescale over ice time step            rn_relast     = ', rn_relast
118      ENDIF
119      !
120   END SUBROUTINE ice_rhg_init
121
122#else
123   !!----------------------------------------------------------------------
124   !!   Default option         Empty module          NO LIM-3 sea-ice model
125   !!----------------------------------------------------------------------
126#endif 
127
128   !!======================================================================
129END MODULE icerhg
Note: See TracBrowser for help on using the repository browser.