1 | MODULE 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 | |
---|
34 | CONTAINS |
---|
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 | !!---------------------------------------------------------------------- |
---|
80 | CONTAINS |
---|
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 | !!====================================================================== |
---|
89 | END MODULE trcnam_fabm |
---|