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.
trcnam_fabm.F90 in branches/UKMO/AMM15_v3_6_STABLE_package_collate_utils366_fabmv1/NEMOGCM/NEMO/TOP_SRC/FABM – NEMO

source: branches/UKMO/AMM15_v3_6_STABLE_package_collate_utils366_fabmv1/NEMOGCM/NEMO/TOP_SRC/FABM/trcnam_fabm.F90 @ 13241

Last change on this file since 13241 was 13241, checked in by dford, 4 years ago

Update NEMO-FABM coupler for compatability with FABM v1.0.

File size: 3.8 KB
Line 
1MODULE trcnam_fabm
2   !!======================================================================
3   !!                      ***  MODULE trcnam_fabm  ***
4   !! TOP :   initialisation of some run parameters for FABM bio-model
5   !!======================================================================
6   !! History :   1.0  !  2015-04  (PML) Original code
7   !! History :   1.1  !  2020-06  (PML) Update to FABM 1.0, improved performance
8   !!----------------------------------------------------------------------
9#if defined key_fabm
10   !!----------------------------------------------------------------------
11   !!   'key_fabm'   :                                       FABM model
12   !!----------------------------------------------------------------------
13   !! trc_nam_fabm      : FABM initialisation
14   !!----------------------------------------------------------------------
15   USE oce_trc         ! Ocean variables
16   USE par_trc         ! TOP parameters
17   USE trc             ! TOP variables
18
19   USE par_fabm
20   USE trcsms_fabm
21
22   IMPLICIT NONE
23   PRIVATE
24
25   PUBLIC   trc_nam_fabm   ! called by trcnam.F90 module
26   PUBLIC   trc_nam_fabm_override ! called by trcnam.F90 module
27
28   !!----------------------------------------------------------------------
29   !! NEMO/TOP 3.3 , NEMO Consortium (2010)
30   !! $Id$
31   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
32   !!----------------------------------------------------------------------
33
34CONTAINS
35
36   SUBROUTINE trc_nam_fabm
37      LOGICAL :: l_ext
38      INTEGER :: nmlunit, ios
39      NAMELIST/namfabm/ nn_adv
40
41      ! Read NEMO-FABM coupler settings from namfabm
42      nn_adv = 3
43      INQUIRE( FILE='namelist_fabm_ref', EXIST=l_ext )
44      IF (l_ext) then
45         CALL ctl_opn( nmlunit, 'namelist_fabm_ref', 'OLD', 'FORMATTED', 'SEQUENTIAL', -1, 6, .FALSE.)
46         READ(nmlunit, nml=namfabm, iostat=ios)
47         IF( ios /= 0 ) CALL ctl_nam ( ios , 'namfabm in namelist_fabm_ref', .TRUE. )
48      END IF
49      INQUIRE( FILE='namelist_fabm_cfg', EXIST=l_ext )
50      IF (l_ext) then
51         CALL ctl_opn( nmlunit, 'namelist_fabm_cfg', 'OLD', 'FORMATTED', 'SEQUENTIAL', -1, 6, .FALSE.)
52         READ(nmlunit, nml=namfabm, iostat=ios)
53         IF( ios /= 0 ) CALL ctl_nam ( ios , 'namfabm in namelist_fabm_cfg', .TRUE. )
54      END IF
55      IF (nn_adv /= 1 .and. nn_adv /= 3) CALL ctl_stop( 'STOP', 'trc_ini_fabm: nn_adv must be 1 or 3.' )
56   END SUBROUTINE trc_nam_fabm
57
58   SUBROUTINE trc_nam_fabm_override(sn_tracer)
59      TYPE(PTRACER), DIMENSION(jpmaxtrc), INTENT(INOUT) :: sn_tracer
60
61      INTEGER :: jn
62      CHARACTER(LEN=3) :: index
63
64      DO jn=1,jp_fabm
65         IF (sn_tracer(jn)%clsname /= 'NONAME' .AND. sn_tracer(jn)%clsname /= model%interior_state_variables(jn)%name) THEN
66            WRITE (index,'(i0)') jn
67            CALL ctl_stop('Tracer name mismatch in namtrc: '//TRIM(sn_tracer(jn)%clsname)//' found at sn_tracer('//TRIM(index)//') where '//TRIM(model%interior_state_variables(jn)%name)//' was expected.')
68         END IF
69         sn_tracer(jn)%clsname = TRIM(model%interior_state_variables(jn)%name)
70         sn_tracer(jn)%cllname = TRIM(model%interior_state_variables(jn)%long_name)
71         sn_tracer(jn)%clunit = TRIM(model%interior_state_variables(jn)%units)
72         sn_tracer(jn)%llinit = .FALSE.
73      END DO
74   END SUBROUTINE trc_nam_fabm_override
75
76#else
77   !!----------------------------------------------------------------------
78   !!  Dummy module :                                             No FABM
79   !!----------------------------------------------------------------------
80CONTAINS
81   SUBROUTINE trc_nam_fabm                      ! Empty routine
82   END  SUBROUTINE  trc_nam_fabm
83
84   SUBROUTINE trc_nam_fabm_override
85   END SUBROUTINE trc_nam_fabm_override
86#endif 
87
88   !!======================================================================
89END MODULE trcnam_fabm
Note: See TracBrowser for help on using the repository browser.