[10156] | 1 | MODULE trcnam_fabm |
---|
| 2 | !!====================================================================== |
---|
| 3 | !! *** MODULE trcnam_fabm *** |
---|
| 4 | !! TOP : initialisation of some run parameters for FABM bio-model |
---|
| 5 | !!====================================================================== |
---|
[13241] | 6 | !! History : 1.0 ! 2015-04 (PML) Original code |
---|
| 7 | !! History : 1.1 ! 2020-06 (PML) Update to FABM 1.0, improved performance |
---|
[10156] | 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) |
---|
[10270] | 30 | !! $Id$ |
---|
[10156] | 31 | !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) |
---|
| 32 | !!---------------------------------------------------------------------- |
---|
| 33 | |
---|
| 34 | CONTAINS |
---|
| 35 | |
---|
| 36 | SUBROUTINE trc_nam_fabm |
---|
[13241] | 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.' ) |
---|
[10156] | 56 | END SUBROUTINE trc_nam_fabm |
---|
| 57 | |
---|
[13241] | 58 | SUBROUTINE trc_nam_fabm_override(sn_tracer) |
---|
| 59 | TYPE(PTRACER), DIMENSION(jpmaxtrc), INTENT(INOUT) :: sn_tracer |
---|
| 60 | |
---|
[10156] | 61 | INTEGER :: jn |
---|
[13241] | 62 | CHARACTER(LEN=3) :: index |
---|
[10156] | 63 | |
---|
| 64 | DO jn=1,jp_fabm |
---|
[13241] | 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. |
---|
[10156] | 73 | END DO |
---|
| 74 | END SUBROUTINE trc_nam_fabm_override |
---|
[13241] | 75 | |
---|
[10156] | 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 |
---|