source: NEMO/trunk/src/TOP/trcice.F90

Last change on this file was 14086, checked in by cetlod, 3 months ago

Adding AGRIF branches into the trunk

  • Property svn:keywords set to Id
File size: 4.8 KB
Line 
1MODULE trcice
2   !!======================================================================
3   !!                         ***  MODULE trcice  ***
4   !! TOP :   Manage the communication between TOP and sea ice
5   !!======================================================================
6   !! History :  3.5  ! 2013    (M. Vancoppenolle, O. Aumont, G. Madec), original code
7   !!----------------------------------------------------------------------
8#if defined key_top
9   !!----------------------------------------------------------------------
10   !!   'key_top'                                                TOP models
11   !!----------------------------------------------------------------------
12   !!   trc_ice       :  Call the appropriate sea ice tracer subroutine
13   !!----------------------------------------------------------------------
14   USE par_trc         ! need jptra, number of passive tracers
15   USE oce_trc        ! shared variables between ocean and passive tracers
16   USE trc            ! passive tracers common variables
17   USE trcice_cfc     ! CFC      initialisation
18   USE trcice_pisces  ! PISCES   initialisation
19   USE trcice_c14     ! C14 bomb initialisation
20   USE trcice_age     ! AGE      initialisation
21   USE trcice_my_trc  ! MY_TRC   initialisation
22   
23   IMPLICIT NONE
24   PRIVATE
25   
26   PUBLIC   trc_ice_ini   ! called by trc_nam
27
28   !!----------------------------------------------------------------------
29   !! NEMO/TOP 4.0 , NEMO Consortium (2018)
30   !! $Id$
31   !! Software governed by the CeCILL license (see ./LICENSE)
32   !!----------------------------------------------------------------------
33CONTAINS
34   
35   SUBROUTINE trc_ice_ini
36      !!---------------------------------------------------------------------
37      !!                     ***  ROUTINE trc_ice_ini ***
38      !!
39      !! ** Purpose :   Initialization of the ice module for tracers
40      !!
41      !! ** Method  : -
42      !!---------------------------------------------------------------------
43      !
44      IF(lwp) THEN
45         WRITE(numout,*)
46         WRITE(numout,*) 'trc_ice_ini : Initialize sea ice tracer boundary condition'
47         WRITE(numout,*) '~~~~~~~~~~~~~'
48      ENDIF
49      !
50      CALL trc_nam_ice
51      !
52      trc_i(:,:,:) = 0._wp   ! by default
53      trc_o(:,:,:) = 0._wp   ! by default
54      !
55      IF ( nn_ice_tr == 1 ) THEN
56         IF( ln_pisces  )    CALL trc_ice_ini_pisces       ! PISCES  bio-model
57         IF( ll_cfc     )    CALL trc_ice_ini_cfc          ! CFC     tracers
58         IF( ln_c14     )    CALL trc_ice_ini_c14          ! C14     tracer
59         IF( ln_age     )    CALL trc_ice_ini_age          ! AGE     tracer
60         IF( ln_my_trc  )    CALL trc_ice_ini_my_trc       ! MY_TRC  tracers
61      ENDIF
62      !
63   END SUBROUTINE trc_ice_ini
64
65
66   SUBROUTINE trc_nam_ice
67      !!---------------------------------------------------------------------
68      !!                     ***  ROUTINE trc_nam_ice ***
69      !!
70      !! ** Purpose :   Read the namelist for the ice effect on tracers
71      !!
72      !! ** Method  : -
73      !!---------------------------------------------------------------------
74      INTEGER :: jn      ! dummy loop indices
75      INTEGER :: ios, ierr     ! Local integer output status for namelist read
76      !
77      TYPE(TRC_I_NML), DIMENSION(jpmaxtrc) ::   sn_tri_tracer
78      !!
79      NAMELIST/namtrc_ice/ nn_ice_tr, sn_tri_tracer
80      !!---------------------------------------------------------------------
81      !
82      IF(lwp) THEN
83         WRITE(numout,*)
84         WRITE(numout,*) 'trc_nam_ice : Read the namelist for trc_ice'
85         WRITE(numout,*) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
86      ENDIF
87      !
88      READ  ( numnat_ref, namtrc_ice, IOSTAT = ios, ERR = 901)
89 901  IF( ios /= 0 )   CALL ctl_nam ( ios , ' namtrc_ice in reference namelist ' )
90      READ  ( numnat_cfg, namtrc_ice, IOSTAT = ios, ERR = 902 )
91 902  IF( ios >  0 )   CALL ctl_nam ( ios , 'namtrc_ice in configuration namelist' )
92
93      IF( lwp ) THEN
94         WRITE(numout,*) ' '
95         WRITE(numout,*) '   Namelist : namtrc_ice'
96         WRITE(numout,*) '      Sea ice tracers option (nn_ice_tr) : ', nn_ice_tr
97      ENDIF
98      !
99      ! Assign namelist stuff
100      DO jn = 1, jptra
101         trc_ice_ratio (jn) = sn_tri_tracer(jn)%trc_ratio
102         trc_ice_prescr(jn) = sn_tri_tracer(jn)%trc_prescr
103         cn_trc_o      (jn) = sn_tri_tracer(jn)%ctrc_o
104      END DO
105      !
106   END SUBROUTINE trc_nam_ice
107
108#else
109   !!----------------------------------------------------------------------
110   !!  Empty module :                                     No passive tracer
111   !!----------------------------------------------------------------------
112CONTAINS
113   SUBROUTINE trc_ice_ini                   ! Dummy routine   
114   END SUBROUTINE trc_ice_ini
115   SUBROUTINE trc_nam_ice
116   END SUBROUTINE trc_nam_ice
117#endif
118
119   !!======================================================================
120END MODULE trcice
Note: See TracBrowser for help on using the repository browser.