- Timestamp:
- 2019-12-05T12:06:36+01:00 (5 years ago)
- Location:
- NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP
- Files:
-
- 48 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/AGE/trcnam_age.F90
r10069 r12065 56 56 REWIND( numnat_ref ) ! Namelist namagedate in reference namelist : AGE parameters 57 57 READ ( numnat_ref, namage, IOSTAT = ios, ERR = 901) 58 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namage in reference namelist' , lwp)58 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namage in reference namelist' ) 59 59 REWIND( numnat_cfg ) ! Namelist namagedate in configuration namelist : AGE parameters 60 60 READ ( numnat_cfg, namage, IOSTAT = ios, ERR = 902 ) 61 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namage in configuration namelist' , lwp)61 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namage in configuration namelist' ) 62 62 IF(lwm) WRITE ( numont, namage ) 63 63 ! -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/C14/trcnam_c14.F90
r10069 r12065 63 63 REWIND( numtrc_ref ) ! Namelist namc14_typ in reference namelist : 64 64 READ ( numtrc_ref, namc14_typ, IOSTAT = ios, ERR = 901) 65 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namc14_typ in reference namelist' , lwp)65 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namc14_typ in reference namelist' ) 66 66 REWIND( numtrc_cfg ) ! Namelist namcfcdate in configuration namelist 67 67 READ ( numtrc_cfg, namc14_typ, IOSTAT = ios, ERR = 902) 68 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namc14_typ in configuration namelist' , lwp)68 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namc14_typ in configuration namelist' ) 69 69 IF(lwm) WRITE ( numonr, namc14_typ ) 70 70 ! … … 80 80 REWIND( numtrc_ref ) ! Namelist namc14_typ in reference namelist : 81 81 READ ( numtrc_ref, namc14_sbc, IOSTAT = ios, ERR = 903) 82 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namc14_sbc in reference namelist' , lwp)82 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namc14_sbc in reference namelist' ) 83 83 REWIND( numtrc_cfg ) ! Namelist namcfcdate in configuration namelist 84 84 READ ( numtrc_cfg, namc14_sbc, IOSTAT = ios, ERR = 904) 85 904 IF( ios > 0 ) CALL ctl_nam ( ios , 'namc14_sbc in configuration namelist' , lwp)85 904 IF( ios > 0 ) CALL ctl_nam ( ios , 'namc14_sbc in configuration namelist' ) 86 86 IF(lwm) WRITE( numonr, namc14_sbc ) 87 87 ! … … 96 96 REWIND( numtrc_ref ) ! Namelist namc14_typ in reference namelist : 97 97 READ ( numtrc_ref, namc14_fcg, IOSTAT = ios, ERR = 905) 98 905 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namc14_fcg in reference namelist' , lwp)98 905 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namc14_fcg in reference namelist' ) 99 99 REWIND( numtrc_cfg ) ! Namelist namcfcdate in configuration namelist 100 100 READ ( numtrc_cfg, namc14_fcg, IOSTAT = ios, ERR = 906) 101 906 IF( ios > 0 ) CALL ctl_nam ( ios , 'namc14_fcg in configuration namelist' , lwp)101 906 IF( ios > 0 ) CALL ctl_nam ( ios , 'namc14_fcg in configuration namelist' ) 102 102 IF(lwm) WRITE ( numonr, namc14_fcg ) 103 103 ! -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/CFC/trcnam_cfc.F90
r10068 r12065 53 53 REWIND( numtrc_ref ) ! Namelist namcfcdate in reference namelist : CFC parameters 54 54 READ ( numtrc_ref, namcfc, IOSTAT = ios, ERR = 901) 55 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfc in reference namelist' , lwp)55 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfc in reference namelist' ) 56 56 REWIND( numtrc_cfg ) ! Namelist namcfcdate in configuration namelist : CFC parameters 57 57 READ ( numtrc_cfg, namcfc, IOSTAT = ios, ERR = 902 ) 58 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namcfc in configuration namelist' , lwp)58 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namcfc in configuration namelist' ) 59 59 IF(lwm) WRITE( numonr, namcfc ) 60 60 IF(lwm) CALL FLUSH ( numonr ) ! flush output namelist CFC -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/PISCES/P2Z/p2zbio.F90
r10425 r12065 404 404 REWIND( numnatp_ref ) ! Namelist namlobphy in reference namelist : Lobster biological parameters 405 405 READ ( numnatp_ref, namlobphy, IOSTAT = ios, ERR = 901) 406 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobphy in reference namelist' , lwp)406 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobphy in reference namelist' ) 407 407 REWIND( numnatp_cfg ) ! Namelist namlobphy in configuration namelist : Lobster biological parameters 408 408 READ ( numnatp_cfg, namlobphy, IOSTAT = ios, ERR = 902 ) 409 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namlobphy in configuration namelist' , lwp)409 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namlobphy in configuration namelist' ) 410 410 IF(lwm) WRITE ( numonp, namlobphy ) 411 411 ! … … 421 421 REWIND( numnatp_ref ) ! Namelist namlobnut in reference namelist : Lobster nutriments parameters 422 422 READ ( numnatp_ref, namlobnut, IOSTAT = ios, ERR = 903) 423 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobnut in reference namelist' , lwp)423 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobnut in reference namelist' ) 424 424 REWIND( numnatp_cfg ) ! Namelist namlobnut in configuration namelist : Lobster nutriments parameters 425 425 READ ( numnatp_cfg, namlobnut, IOSTAT = ios, ERR = 904 ) 426 904 IF( ios > 0 ) CALL ctl_nam ( ios , 'namlobnut in configuration namelist' , lwp)426 904 IF( ios > 0 ) CALL ctl_nam ( ios , 'namlobnut in configuration namelist' ) 427 427 IF(lwm) WRITE ( numonp, namlobnut ) 428 428 … … 438 438 REWIND( numnatp_ref ) ! Namelist namlobzoo in reference namelist : Lobster zooplankton parameters 439 439 READ ( numnatp_ref, namlobzoo, IOSTAT = ios, ERR = 905) 440 905 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobzoo in reference namelist' , lwp)440 905 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobzoo in reference namelist' ) 441 441 REWIND( numnatp_cfg ) ! Namelist namlobzoo in configuration namelist : Lobster zooplankton parameters 442 442 READ ( numnatp_cfg, namlobzoo, IOSTAT = ios, ERR = 906 ) 443 906 IF( ios > 0 ) CALL ctl_nam ( ios , 'namlobzoo in configuration namelist' , lwp)443 906 IF( ios > 0 ) CALL ctl_nam ( ios , 'namlobzoo in configuration namelist' ) 444 444 IF(lwm) WRITE ( numonp, namlobzoo ) 445 445 … … 460 460 REWIND( numnatp_ref ) ! Namelist namlobdet in reference namelist : Lobster detritus parameters 461 461 READ ( numnatp_ref, namlobdet, IOSTAT = ios, ERR = 907) 462 907 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobdet in reference namelist' , lwp)462 907 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobdet in reference namelist' ) 463 463 REWIND( numnatp_cfg ) ! Namelist namlobdet in configuration namelist : Lobster detritus parameters 464 464 READ ( numnatp_cfg, namlobdet, IOSTAT = ios, ERR = 908 ) 465 908 IF( ios > 0 ) CALL ctl_nam ( ios , 'namlobdet in configuration namelist' , lwp)465 908 IF( ios > 0 ) CALL ctl_nam ( ios , 'namlobdet in configuration namelist' ) 466 466 IF(lwm) WRITE ( numonp, namlobdet ) 467 467 … … 475 475 REWIND( numnatp_ref ) ! Namelist namlobdom in reference namelist : Lobster DOM breakdown rate 476 476 READ ( numnatp_ref, namlobdom, IOSTAT = ios, ERR = 909) 477 909 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobdom in reference namelist' , lwp)477 909 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobdom in reference namelist' ) 478 478 REWIND( numnatp_cfg ) ! Namelist namlobdom in configuration namelist : Lobster DOM breakdown rate 479 479 READ ( numnatp_cfg, namlobdom, IOSTAT = ios, ERR = 910 ) 480 910 IF( ios > 0 ) CALL ctl_nam ( ios , 'namlobdom in configuration namelist' , lwp)480 910 IF( ios > 0 ) CALL ctl_nam ( ios , 'namlobdom in configuration namelist' ) 481 481 IF(lwm) WRITE ( numonp, namlobdom ) 482 482 -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/PISCES/P2Z/p2zopt.F90
r10068 r12065 161 161 REWIND( numnatp_ref ) ! Namelist namlobopt in reference namelist : Lobster options 162 162 READ ( numnatp_ref, namlobopt, IOSTAT = ios, ERR = 901) 163 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobopt in reference namelist' , lwp)163 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobopt in reference namelist' ) 164 164 165 165 REWIND( numnatp_cfg ) ! Namelist namlobopt in configuration namelist : Lobster options 166 166 READ ( numnatp_cfg, namlobopt, IOSTAT = ios, ERR = 902 ) 167 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namlobopt in configuration namelist' , lwp)167 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namlobopt in configuration namelist' ) 168 168 IF(lwm) WRITE ( numonp, namlobopt ) 169 169 … … 183 183 REWIND( numnatp_ref ) ! Namelist namlobrat in reference namelist : Lobster ratios 184 184 READ ( numnatp_ref, namlobrat, IOSTAT = ios, ERR = 903) 185 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobrat in reference namelist' , lwp)185 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobrat in reference namelist' ) 186 186 187 187 REWIND( numnatp_cfg ) ! Namelist namlobrat in configuration namelist : Lobster ratios 188 188 READ ( numnatp_cfg, namlobrat, IOSTAT = ios, ERR = 904 ) 189 904 IF( ios > 0 ) CALL ctl_nam ( ios , 'namlobrat in configuration namelist' , lwp)189 904 IF( ios > 0 ) CALL ctl_nam ( ios , 'namlobrat in configuration namelist' ) 190 190 IF(lwm) WRITE ( numonp, namlobrat ) 191 191 -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/PISCES/P2Z/p2zsed.F90
r10068 r12065 134 134 REWIND( numnatp_ref ) ! Namelist namlobsed in reference namelist : Lobster sediments 135 135 READ ( numnatp_ref, namlobsed, IOSTAT = ios, ERR = 901) 136 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlosed in reference namelist' , lwp)136 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlosed in reference namelist' ) 137 137 REWIND( numnatp_cfg ) ! Namelist namlobsed in configuration namelist : Lobster sediments 138 138 READ ( numnatp_cfg, namlobsed, IOSTAT = ios, ERR = 902 ) 139 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namlobsed in configuration namelist' , lwp)139 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namlobsed in configuration namelist' ) 140 140 IF(lwm) WRITE ( numonp, namlobsed ) 141 141 ! -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/PISCES/P4Z/p4zfechem.F90
r10416 r12065 256 256 REWIND( numnatp_ref ) ! Namelist nampisfer in reference namelist : Pisces iron chemistry 257 257 READ ( numnatp_ref, nampisfer, IOSTAT = ios, ERR = 901) 258 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisfer in reference namelist' , lwp)258 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisfer in reference namelist' ) 259 259 REWIND( numnatp_cfg ) ! Namelist nampisfer in configuration namelist : Pisces iron chemistry 260 260 READ ( numnatp_cfg, nampisfer, IOSTAT = ios, ERR = 902 ) 261 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampisfer in configuration namelist' , lwp)261 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampisfer in configuration namelist' ) 262 262 IF(lwm) WRITE( numonp, nampisfer ) 263 263 -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/PISCES/P4Z/p4zflx.F90
r10425 r12065 241 241 REWIND( numnatp_ref ) ! Namelist nampisext in reference namelist : Pisces atm. conditions 242 242 READ ( numnatp_ref, nampisext, IOSTAT = ios, ERR = 901) 243 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisext in reference namelist' , lwp)243 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisext in reference namelist' ) 244 244 REWIND( numnatp_cfg ) ! Namelist nampisext in configuration namelist : Pisces atm. conditions 245 245 READ ( numnatp_cfg, nampisext, IOSTAT = ios, ERR = 902 ) 246 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampisext in configuration namelist' , lwp)246 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampisext in configuration namelist' ) 247 247 IF(lwm) WRITE ( numonp, nampisext ) 248 248 ! … … 322 322 REWIND( numnatp_ref ) ! Namelist nampisatm in reference namelist : Pisces atm. sea level pressure file 323 323 READ ( numnatp_ref, nampisatm, IOSTAT = ios, ERR = 901) 324 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisatm in reference namelist' , lwp)324 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisatm in reference namelist' ) 325 325 REWIND( numnatp_cfg ) ! Namelist nampisatm in configuration namelist : Pisces atm. sea level pressure file 326 326 READ ( numnatp_cfg, nampisatm, IOSTAT = ios, ERR = 902 ) 327 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampisatm in configuration namelist' , lwp)327 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampisatm in configuration namelist' ) 328 328 IF(lwm) WRITE ( numonp, nampisatm ) 329 329 ! -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/PISCES/P4Z/p4zligand.F90
r10416 r12065 127 127 REWIND( numnatp_ref ) ! Namelist nampislig in reference namelist : Pisces remineralization 128 128 READ ( numnatp_ref, nampislig, IOSTAT = ios, ERR = 901) 129 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampislig in reference namelist' , lwp)129 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampislig in reference namelist' ) 130 130 REWIND( numnatp_cfg ) ! Namelist nampislig in configuration namelist : Pisces remineralization 131 131 READ ( numnatp_cfg, nampislig, IOSTAT = ios, ERR = 902 ) 132 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampislig in configuration namelist' , lwp)132 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampislig in configuration namelist' ) 133 133 IF(lwm) WRITE ( numonp, nampislig ) 134 134 ! -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/PISCES/P4Z/p4zlim.F90
r10425 r12065 254 254 REWIND( numnatp_ref ) ! Namelist nampislim in reference namelist : Pisces nutrient limitation parameters 255 255 READ ( numnatp_ref, namp4zlim, IOSTAT = ios, ERR = 901) 256 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp4zlim in reference namelist' , lwp)256 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp4zlim in reference namelist' ) 257 257 REWIND( numnatp_cfg ) ! Namelist nampislim in configuration namelist : Pisces nutrient limitation parameters 258 258 READ ( numnatp_cfg, namp4zlim, IOSTAT = ios, ERR = 902 ) 259 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namp4zlim in configuration namelist' , lwp)259 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namp4zlim in configuration namelist' ) 260 260 IF(lwm) WRITE( numonp, namp4zlim ) 261 261 ! -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/PISCES/P4Z/p4zlys.F90
r10069 r12065 164 164 REWIND( numnatp_ref ) ! Namelist nampiscal in reference namelist : Pisces CaCO3 dissolution 165 165 READ ( numnatp_ref, nampiscal, IOSTAT = ios, ERR = 901) 166 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampiscal in reference namelist' , lwp)166 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampiscal in reference namelist' ) 167 167 REWIND( numnatp_cfg ) ! Namelist nampiscal in configuration namelist : Pisces CaCO3 dissolution 168 168 READ ( numnatp_cfg, nampiscal, IOSTAT = ios, ERR = 902 ) 169 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampiscal in configuration namelist' , lwp)169 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampiscal in configuration namelist' ) 170 170 IF(lwm) WRITE( numonp, nampiscal ) 171 171 ! -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/PISCES/P4Z/p4zmeso.F90
r10367 r12065 292 292 REWIND( numnatp_ref ) ! Namelist nampismes in reference namelist : Pisces mesozooplankton 293 293 READ ( numnatp_ref, namp4zmes, IOSTAT = ios, ERR = 901) 294 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp4zmes in reference namelist' , lwp)294 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp4zmes in reference namelist' ) 295 295 REWIND( numnatp_cfg ) ! Namelist nampismes in configuration namelist : Pisces mesozooplankton 296 296 READ ( numnatp_cfg, namp4zmes, IOSTAT = ios, ERR = 902 ) 297 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namp4zmes in configuration namelist' , lwp)297 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namp4zmes in configuration namelist' ) 298 298 IF(lwm) WRITE( numonp, namp4zmes ) 299 299 ! -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/PISCES/P4Z/p4zmicro.F90
r10374 r12065 245 245 REWIND( numnatp_ref ) ! Namelist nampiszoo in reference namelist : Pisces microzooplankton 246 246 READ ( numnatp_ref, namp4zzoo, IOSTAT = ios, ERR = 901) 247 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp4zzoo in reference namelist' , lwp)247 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp4zzoo in reference namelist' ) 248 248 REWIND( numnatp_cfg ) ! Namelist nampiszoo in configuration namelist : Pisces microzooplankton 249 249 READ ( numnatp_cfg, namp4zzoo, IOSTAT = ios, ERR = 902 ) 250 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namp4zzoo in configuration namelist' , lwp)250 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namp4zzoo in configuration namelist' ) 251 251 IF(lwm) WRITE( numonp, namp4zzoo ) 252 252 ! -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/PISCES/P4Z/p4zmort.F90
r10227 r12065 229 229 REWIND( numnatp_ref ) ! Namelist nampismort in reference namelist : Pisces phytoplankton 230 230 READ ( numnatp_ref, namp4zmort, IOSTAT = ios, ERR = 901) 231 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp4zmort in reference namelist' , lwp)231 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp4zmort in reference namelist' ) 232 232 REWIND( numnatp_cfg ) ! Namelist nampismort in configuration namelist : Pisces phytoplankton 233 233 READ ( numnatp_cfg, namp4zmort, IOSTAT = ios, ERR = 902 ) 234 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namp4zmort in configuration namelist' , lwp)234 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namp4zmort in configuration namelist' ) 235 235 IF(lwm) WRITE( numonp, namp4zmort ) 236 236 ! -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/PISCES/P4Z/p4zopt.F90
r10522 r12065 402 402 REWIND( numnatp_ref ) ! Namelist nampisopt in reference namelist : Pisces attenuation coef. and PAR 403 403 READ ( numnatp_ref, nampisopt, IOSTAT = ios, ERR = 901) 404 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisopt in reference namelist' , lwp)404 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisopt in reference namelist' ) 405 405 REWIND( numnatp_cfg ) ! Namelist nampisopt in configuration namelist : Pisces attenuation coef. and PAR 406 406 READ ( numnatp_cfg, nampisopt, IOSTAT = ios, ERR = 902 ) 407 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampisopt in configuration namelist' , lwp)407 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampisopt in configuration namelist' ) 408 408 IF(lwm) WRITE ( numonp, nampisopt ) 409 409 -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/PISCES/P4Z/p4zpoc.F90
r10362 r12065 102 102 ! particle scheme. Does not work with Kriest parameterization. 103 103 ! ----------------------------------------------------------------------- 104 ztremint(:,:,:) = zremigoc(:,:,:) 104 105 DO jk = 2, jpkm1 105 106 DO jj = 1, jpj … … 166 167 & + zsizek1 ) ) * zpoc + ( prodgoc(ji,jj,jk-1) / tgfunc(ji,jj,jk-1) * ( 1. & 167 168 & - exp( -reminp(jn) * zsizek1 ) ) * exp( -reminp(jn) * zsizek ) + prodgoc(ji,jj,jk) & 168 & / tgfunc(ji,jj,jk) * ( 1. - exp( -reminp(jn) * zsizek ) ) ) * rday / rfact2 / reminp(jn) 169 & / tgfunc(ji,jj,jk) * ( 1. - exp( -reminp(jn) * zsizek ) ) ) * rday / rfact2 / reminp(jn) * alphan(jn) 169 170 alphat = alphat + alphag(ji,jj,jk,jn) 170 171 remint = remint + alphag(ji,jj,jk,jn) * reminp(jn) … … 285 286 ! layer, this spectrum is supposed to be uniform. 286 287 ! --------------------------------------------------------------------- 288 ztremint(:,:,:) = zremipoc(:,:,:) 287 289 DO jk = 1, jpkm1 288 290 DO jj = 1, jpj … … 497 499 REWIND( numnatp_ref ) ! Namelist nampisrem in reference namelist : Pisces remineralization 498 500 READ ( numnatp_ref, nampispoc, IOSTAT = ios, ERR = 901) 499 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampispoc in reference namelist' , lwp)501 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampispoc in reference namelist' ) 500 502 REWIND( numnatp_cfg ) ! Namelist nampisrem in configuration namelist : Pisces remineralization 501 503 READ ( numnatp_cfg, nampispoc, IOSTAT = ios, ERR = 902 ) 502 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampispoc in configuration namelist' , lwp)504 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampispoc in configuration namelist' ) 503 505 IF(lwm) WRITE( numonp, nampispoc ) 504 506 -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/PISCES/P4Z/p4zprod.F90
r10425 r12065 225 225 DO jj = 1, jpj 226 226 DO ji = 1, jpi 227 zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * ( 1. - fr_i(ji,jj) )228 zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * ( 1. - fr_i(ji,jj) )229 227 zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * ( 1. - fr_i(ji,jj) ) 230 228 zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * ( 1. - fr_i(ji,jj) ) … … 322 320 ! 323 321 IF( ln_ligand ) THEN 322 zpligprod1(:,:,:) = 0._wp ; zpligprod2(:,:,:) = 0._wp 324 323 DO jk = 1, jpkm1 325 324 DO jj = 1, jpj … … 493 492 REWIND( numnatp_ref ) ! Namelist nampisprod in reference namelist : Pisces phytoplankton production 494 493 READ ( numnatp_ref, namp4zprod, IOSTAT = ios, ERR = 901) 495 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp4zprod in reference namelist' , lwp)494 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp4zprod in reference namelist' ) 496 495 REWIND( numnatp_cfg ) ! Namelist nampisprod in configuration namelist : Pisces phytoplankton production 497 496 READ ( numnatp_cfg, namp4zprod, IOSTAT = ios, ERR = 902 ) 498 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namp4zprod in configuration namelist' , lwp)497 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namp4zprod in configuration namelist' ) 499 498 IF(lwm) WRITE( numonp, namp4zprod ) 500 499 -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/PISCES/P4Z/p4zrem.F90
r10425 r12065 329 329 REWIND( numnatp_ref ) ! Namelist nampisrem in reference namelist : Pisces remineralization 330 330 READ ( numnatp_ref, nampisrem, IOSTAT = ios, ERR = 901) 331 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisrem in reference namelist' , lwp)331 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisrem in reference namelist' ) 332 332 REWIND( numnatp_cfg ) ! Namelist nampisrem in configuration namelist : Pisces remineralization 333 333 READ ( numnatp_cfg, nampisrem, IOSTAT = ios, ERR = 902 ) 334 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampisrem in configuration namelist' , lwp)334 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampisrem in configuration namelist' ) 335 335 IF(lwm) WRITE( numonp, nampisrem ) 336 336 -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/PISCES/P4Z/p4zsbc.F90
r10522 r12065 27 27 LOGICAL , PUBLIC :: ln_ironsed !: boolean for Fe input from sediments 28 28 LOGICAL , PUBLIC :: ln_hydrofe !: boolean for Fe input from hydrothermal vents 29 LOGICAL , PUBLIC :: ln_ironice !: boolean for Fe input from sea ice30 29 REAL(wp), PUBLIC :: sedfeinput !: Coastal release of Iron 31 30 REAL(wp), PUBLIC :: dustsolub !: Solubility of the dust … … 109 108 IF( kt == nit000 .OR. ( kt /= nit000 .AND. ntimes_dust > 1 ) ) THEN 110 109 CALL fld_read( kt, 1, sf_dust ) 111 IF( nn_ice_tr == -1 .AND. .NOT.ln_ironice ) THEN ; dust(:,:) = MAX( rtrn, sf_dust(1)%fnow(:,:,1) ) 112 ELSE ; dust(:,:) = MAX( rtrn, sf_dust(1)%fnow(:,:,1) * ( 1.-fr_i(:,:) ) ) 113 ENDIF 110 dust(:,:) = MAX( rtrn, sf_dust(1)%fnow(:,:,1) ) * ( 1.0 - fr_i(:,:) ) 114 111 ENDIF 115 112 ENDIF … … 175 172 IF( ln_ndepo ) THEN 176 173 IF( kt == nit000 .OR. ( kt /= nit000 .AND. ntimes_ndep > 1 ) ) THEN 177 zcoef = rno3 * 14E6 * ryyss174 zcoef = 14. * rno3 178 175 CALL fld_read( kt, 1, sf_ndepo ) 179 176 nitdep(:,:) = MAX( rtrn, sf_ndepo(1)%fnow(:,:,1) / zcoef / e3t_n(:,:,1) ) 180 177 ENDIF 181 178 IF( .NOT.ln_linssh ) THEN 182 zcoef = rno3 * 14E6 * ryyss183 nitdep(:,:) = MAX( rtrn, sf_ndepo(1)%fnow(:,:,1) / zcoef / e3t_n(:,:,1) )179 zcoef = 14. * rno3 180 nitdep(:,:) = MAX( rtrn, sf_ndepo(1)%fnow(:,:,1) / zcoef / e3t_n(:,:,1) ) 184 181 ENDIF 185 182 ENDIF … … 235 232 REWIND( numnatp_ref ) ! Namelist nampissbc in reference namelist : Pisces external sources of nutrients 236 233 READ ( numnatp_ref, nampissbc, IOSTAT = ios, ERR = 901) 237 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampissbc in reference namelist' , lwp)234 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampissbc in reference namelist' ) 238 235 REWIND( numnatp_cfg ) ! Namelist nampissbc in configuration namelist : Pisces external sources of nutrients 239 236 READ ( numnatp_cfg, nampissbc, IOSTAT = ios, ERR = 902 ) 240 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampissbc in configuration namelist' , lwp)237 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampissbc in configuration namelist' ) 241 238 IF(lwm) WRITE ( numonp, nampissbc ) 242 239 … … 265 262 END IF 266 263 267 IF( nn_ice_tr >= 0 .AND. ln_ironice ) THEN268 IF(lwp) THEN269 WRITE(numout,*) ' ==>>> ln_ironice incompatible with nn_ice_tr = ', nn_ice_tr270 WRITE(numout,*) ' Specify your sea ice iron concentration in nampisice instead '271 WRITE(numout,*) ' ln_ironice is forced to .FALSE. '272 ENDIF273 ln_ironice = .FALSE.274 ENDIF275 276 264 IF( ln_dust .OR. ln_river .OR. ln_ndepo ) THEN ; ll_sbc = .TRUE. 277 265 ELSE ; ll_sbc = .FALSE. -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/PISCES/P4Z/p4zsed.F90
r10425 r12065 53 53 INTEGER :: ji, jj, jk, ikt 54 54 REAL(wp) :: zrivalk, zrivsil, zrivno3 55 REAL(wp) :: zwflux, zfminus, zfplus 56 REAL(wp) :: zlim, zfact, zfactcal 55 REAL(wp) :: zwflux, zlim, zfact, zfactcal 57 56 REAL(wp) :: zo2, zno3, zflx, zpdenit, z1pdenit, zolimit 58 57 REAL(wp) :: zsiloss, zcaloss, zws3, zws4, zwsc, zdep … … 104 103 zdep = rfact2 / e3t_n(ji,jj,1) 105 104 zwflux = fmmflx(ji,jj) / 1000._wp 106 zfminus = MIN( 0._wp, -zwflux ) * trb(ji,jj,1,jpfer) * zdep 107 zfplus = MAX( 0._wp, -zwflux ) * icefeinput * zdep 108 zironice(ji,jj) = zfplus + zfminus 105 zironice(ji,jj) = MAX( -0.99 * trb(ji,jj,1,jpfer), -zwflux * icefeinput * zdep ) 109 106 END DO 110 107 END DO -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/PISCES/P4Z/p4zsms.F90
r10425 r12065 203 203 REWIND( numnatp_ref ) ! Namelist nampisbio in reference namelist : Pisces variables 204 204 READ ( numnatp_ref, nampisbio, IOSTAT = ios, ERR = 901) 205 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisbio in reference namelist' , lwp)205 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisbio in reference namelist' ) 206 206 REWIND( numnatp_cfg ) ! Namelist nampisbio in configuration namelist : Pisces variables 207 207 READ ( numnatp_cfg, nampisbio, IOSTAT = ios, ERR = 902 ) 208 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampisbio in configuration namelist' , lwp)208 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampisbio in configuration namelist' ) 209 209 IF(lwm) WRITE( numonp, nampisbio ) 210 210 ! … … 234 234 REWIND( numnatp_ref ) ! Namelist nampisdmp in reference namelist : Pisces damping 235 235 READ ( numnatp_ref, nampisdmp, IOSTAT = ios, ERR = 905) 236 905 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisdmp in reference namelist' , lwp)236 905 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisdmp in reference namelist' ) 237 237 REWIND( numnatp_cfg ) ! Namelist nampisdmp in configuration namelist : Pisces damping 238 238 READ ( numnatp_cfg, nampisdmp, IOSTAT = ios, ERR = 906 ) 239 906 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampisdmp in configuration namelist' , lwp)239 906 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampisdmp in configuration namelist' ) 240 240 IF(lwm) WRITE( numonp, nampisdmp ) 241 241 ! … … 249 249 REWIND( numnatp_ref ) ! Namelist nampismass in reference namelist : Pisces mass conservation check 250 250 READ ( numnatp_ref, nampismass, IOSTAT = ios, ERR = 907) 251 907 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampismass in reference namelist' , lwp)251 907 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampismass in reference namelist' ) 252 252 REWIND( numnatp_cfg ) ! Namelist nampismass in configuration namelist : Pisces mass conservation check 253 253 READ ( numnatp_cfg, nampismass, IOSTAT = ios, ERR = 908 ) 254 908 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampismass in configuration namelist' , lwp)254 908 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampismass in configuration namelist' ) 255 255 IF(lwm) WRITE( numonp, nampismass ) 256 256 -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/PISCES/P4Z/p5zlim.F90
r10425 r12065 450 450 REWIND( numnatp_ref ) ! Namelist nampislim in reference namelist : Pisces nutrient limitation parameters 451 451 READ ( numnatp_ref, namp5zlim, IOSTAT = ios, ERR = 901) 452 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampislim in reference namelist' , lwp)452 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampislim in reference namelist' ) 453 453 ! 454 454 REWIND( numnatp_cfg ) ! Namelist nampislim in configuration namelist : Pisces nutrient limitation parameters 455 455 READ ( numnatp_cfg, namp5zlim, IOSTAT = ios, ERR = 902 ) 456 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampislim in configuration namelist' , lwp)456 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampislim in configuration namelist' ) 457 457 IF(lwm) WRITE ( numonp, namp5zlim ) 458 458 ! … … 491 491 REWIND( numnatp_ref ) ! Namelist nampislim in reference namelist : Pisces nutrient limitation parameters 492 492 READ ( numnatp_ref, namp5zquota, IOSTAT = ios, ERR = 903) 493 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisquota in reference namelist' , lwp)493 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisquota in reference namelist' ) 494 494 ! 495 495 REWIND( numnatp_cfg ) ! Namelist nampislim in configuration namelist : Pisces nutrient limitation parameters 496 496 READ ( numnatp_cfg, namp5zquota, IOSTAT = ios, ERR = 904 ) 497 904 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampisquota in configuration namelist' , lwp)497 904 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampisquota in configuration namelist' ) 498 498 IF(lwm) WRITE ( numonp, namp5zquota ) 499 499 ! -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/PISCES/P4Z/p5zmeso.F90
r10362 r12065 409 409 REWIND( numnatp_ref ) ! Namelist nampismes in reference namelist : Pisces mesozooplankton 410 410 READ ( numnatp_ref, namp5zmes, IOSTAT = ios, ERR = 901) 411 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampismes in reference namelist' , lwp)411 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampismes in reference namelist' ) 412 412 ! 413 413 REWIND( numnatp_cfg ) ! Namelist nampismes in configuration namelist : Pisces mesozooplankton 414 414 READ ( numnatp_cfg, namp5zmes, IOSTAT = ios, ERR = 902 ) 415 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampismes in configuration namelist' , lwp)415 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampismes in configuration namelist' ) 416 416 IF(lwm) WRITE ( numonp, namp5zmes ) 417 417 ! -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/PISCES/P4Z/p5zmicro.F90
r10362 r12065 351 351 REWIND( numnatp_ref ) ! Namelist nampiszoo in reference namelist : Pisces microzooplankton 352 352 READ ( numnatp_ref, namp5zzoo, IOSTAT = ios, ERR = 901) 353 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp5zzoo in reference namelist' , lwp)353 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp5zzoo in reference namelist' ) 354 354 ! 355 355 REWIND( numnatp_cfg ) ! Namelist nampiszoo in configuration namelist : Pisces microzooplankton 356 356 READ ( numnatp_cfg, namp5zzoo, IOSTAT = ios, ERR = 902 ) 357 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namp5zzoo in configuration namelist' , lwp)357 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namp5zzoo in configuration namelist' ) 358 358 IF(lwm) WRITE ( numonp, namp5zzoo ) 359 359 ! -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/PISCES/P4Z/p5zmort.F90
r10362 r12065 288 288 REWIND( numnatp_ref ) ! Namelist nampismort in reference namelist : Pisces phytoplankton 289 289 READ ( numnatp_ref, namp5zmort, IOSTAT = ios, ERR = 901) 290 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp5zmort in reference namelist' , lwp)290 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp5zmort in reference namelist' ) 291 291 292 292 REWIND( numnatp_cfg ) ! Namelist nampismort in configuration namelist : Pisces phytoplankton 293 293 READ ( numnatp_cfg, namp5zmort, IOSTAT = ios, ERR = 902 ) 294 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namp5zmort in configuration namelist' , lwp)294 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namp5zmort in configuration namelist' ) 295 295 IF(lwm) WRITE ( numonp, namp5zmort ) 296 296 -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/PISCES/P4Z/p5zprod.F90
r10425 r12065 444 444 ! 445 445 IF( ln_ligand ) THEN 446 zpligprod1(:,:,:) = 0._wp ; zpligprod2(:,:,:) = 0._wp 446 447 DO jk = 1, jpkm1 447 448 DO jj = 1, jpj … … 583 584 REWIND( numnatp_ref ) ! Namelist nampisprod in reference namelist : Pisces phytoplankton production 584 585 READ ( numnatp_ref, namp5zprod, IOSTAT = ios, ERR = 901) 585 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp5zprod in reference namelist' , lwp)586 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp5zprod in reference namelist' ) 586 587 587 588 REWIND( numnatp_cfg ) ! Namelist nampisprod in configuration namelist : Pisces phytoplankton production 588 589 READ ( numnatp_cfg, namp5zprod, IOSTAT = ios, ERR = 902 ) 589 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namp5zprod in configuration namelist' , lwp)590 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namp5zprod in configuration namelist' ) 590 591 IF(lwm) WRITE ( numonp, namp5zprod ) 591 592 -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/PISCES/SED/sedini.F90
r10362 r12065 460 460 REWIND( numnamsed_ref ) ! Namelist nam_run in reference namelist : Pisces variables 461 461 READ ( numnamsed_ref, nam_run, IOSTAT = ios, ERR = 901) 462 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_run in reference namelist' , lwp)462 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_run in reference namelist' ) 463 463 464 464 REWIND( numnamsed_cfg ) ! Namelist nam_run in reference namelist : Pisces variables 465 465 READ ( numnamsed_cfg, nam_run, IOSTAT = ios, ERR = 902) 466 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_run in configuration namelist' , lwp)466 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_run in configuration namelist' ) 467 467 468 468 IF (lwp) THEN … … 476 476 REWIND( numnamsed_ref ) ! Namelist nam_geom in reference namelist : Pisces variables 477 477 READ ( numnamsed_ref, nam_geom, IOSTAT = ios, ERR = 903) 478 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_geom in reference namelist' , lwp)478 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_geom in reference namelist' ) 479 479 480 480 REWIND( numnamsed_cfg ) ! Namelist nam_geom in reference namelist : Pisces variables 481 481 READ ( numnamsed_cfg, nam_geom, IOSTAT = ios, ERR = 904) 482 904 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_geom in configuration namelist' , lwp)482 904 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_geom in configuration namelist' ) 483 483 484 484 IF (lwp) THEN … … 499 499 REWIND( numnamsed_ref ) ! Namelist nam_trased in reference namelist : Pisces variables 500 500 READ ( numnamsed_ref, nam_trased, IOSTAT = ios, ERR = 905) 501 905 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_trased in reference namelist' , lwp)501 905 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_trased in reference namelist' ) 502 502 503 503 REWIND( numnamsed_cfg ) ! Namelist nam_trased in reference namelist : Pisces variables 504 504 READ ( numnamsed_cfg, nam_trased, IOSTAT = ios, ERR = 906) 505 906 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_trased in configuration namelist' , lwp)505 906 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_trased in configuration namelist' ) 506 506 507 507 DO jn = 1, jpsol … … 532 532 REWIND( numnamsed_ref ) ! Namelist nam_diased in reference namelist : Pisces variables 533 533 READ ( numnamsed_ref, nam_diased, IOSTAT = ios, ERR = 907) 534 907 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_diased in reference namelist' , lwp)534 907 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_diased in reference namelist' ) 535 535 536 536 REWIND( numnamsed_cfg ) ! Namelist nam_diased in reference namelist : Pisces variables 537 537 READ ( numnamsed_cfg, nam_diased, IOSTAT = ios, ERR = 908) 538 908 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_diased in configuration namelist' , lwp)538 908 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_diased in configuration namelist' ) 539 539 540 540 DO jn = 1, jpdia3dsed … … 574 574 REWIND( numnamsed_ref ) ! Namelist nam_inorg in reference namelist : Pisces variables 575 575 READ ( numnamsed_ref, nam_inorg, IOSTAT = ios, ERR = 909) 576 909 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_inorg in reference namelist' , lwp)576 909 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_inorg in reference namelist' ) 577 577 578 578 REWIND( numnamsed_cfg ) ! Namelist nam_inorg in reference namelist : Pisces variables 579 579 READ ( numnamsed_cfg, nam_inorg, IOSTAT = ios, ERR = 910) 580 910 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_inorg in configuration namelist' , lwp)580 910 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_inorg in configuration namelist' ) 581 581 582 582 IF (lwp) THEN … … 600 600 REWIND( numnamsed_ref ) ! Namelist nam_poc in reference namelist : Pisces variables 601 601 READ ( numnamsed_ref, nam_poc, IOSTAT = ios, ERR = 911) 602 911 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_poc in reference namelist' , lwp)602 911 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_poc in reference namelist' ) 603 603 604 604 REWIND( numnamsed_cfg ) ! Namelist nam_poc in reference namelist : Pisces variables 605 605 READ ( numnamsed_cfg, nam_poc, IOSTAT = ios, ERR = 912) 606 912 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_poc in configuration namelist' , lwp)606 912 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_poc in configuration namelist' ) 607 607 608 608 IF (lwp) THEN … … 652 652 REWIND( numnamsed_ref ) ! Namelist nam_btb in reference namelist : Pisces variables 653 653 READ ( numnamsed_ref, nam_btb, IOSTAT = ios, ERR = 913) 654 913 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_btb in reference namelist' , lwp)654 913 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_btb in reference namelist' ) 655 655 656 656 REWIND( numnamsed_cfg ) ! Namelist nam_btb in reference namelist : Pisces variables 657 657 READ ( numnamsed_cfg, nam_btb, IOSTAT = ios, ERR = 914) 658 914 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_btb in configuration namelist' , lwp)658 914 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_btb in configuration namelist' ) 659 659 660 660 IF (lwp) THEN … … 673 673 REWIND( numnamsed_ref ) ! Namelist nam_rst in reference namelist : Pisces variables 674 674 READ ( numnamsed_ref, nam_rst, IOSTAT = ios, ERR = 915) 675 915 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_rst in reference namelist' , lwp)675 915 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_rst in reference namelist' ) 676 676 677 677 REWIND( numnamsed_cfg ) ! Namelist nam_rst in reference namelist : Pisces variables 678 678 READ ( numnamsed_cfg, nam_rst, IOSTAT = ios, ERR = 916) 679 916 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_rst in configuration namelist' , lwp)679 916 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_rst in configuration namelist' ) 680 680 681 681 IF (lwp) THEN -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/PISCES/SED/sedrst.F90
r10425 r12065 49 49 IF( ln_rst_list ) THEN 50 50 nrst_lst = 1 51 nitrst = n stocklist( nrst_lst )51 nitrst = nn_stocklist( nrst_lst ) 52 52 ELSE 53 53 nitrst = nitend 54 54 ENDIF 55 55 ENDIF 56 IF( .NOT. ln_rst_list .AND. MOD( kt - 1, n stock ) == 0 ) THEN56 IF( .NOT. ln_rst_list .AND. MOD( kt - 1, nn_stock ) == 0 ) THEN 57 57 ! we use kt - 1 and not kt - nittrc000 to keep the same periodicity from the beginning of the experiment 58 nitrst = kt + n stock - 1 ! define the next value of nitrst for restart writing58 nitrst = kt + nn_stock - 1 ! define the next value of nitrst for restart writing 59 59 IF( nitrst > nitend ) nitrst = nitend ! make sure we write a restart at the end of the run 60 60 ENDIF … … 62 62 IF( kt == nittrc000 ) lrst_sed = .FALSE. 63 63 ENDIF 64 65 IF( .NOT. ln_rst_list .AND. nn_stock == -1 ) RETURN ! we will never do any restart 64 66 65 67 ! to get better performances with NetCDF format: 66 68 ! we open and define the tracer restart file one tracer time step before writing the data (-> at nitrst - 2*nn_dttrc + 1) 67 69 ! except if we write tracer restart files every tracer time step or if a tracer restart file was writen at nitend - 2*nn_dttrc + 1 68 IF( kt == nitrst - 2*nn_dtsed .OR. n stock == nn_dtsed .OR. ( kt == nitend - nn_dtsed .AND. .NOT. lrst_sed ) ) THEN70 IF( kt == nitrst - 2*nn_dtsed .OR. nn_stock == nn_dtsed .OR. ( kt == nitend - nn_dtsed .AND. .NOT. lrst_sed ) ) THEN 69 71 ! beware of the format used to write kt (default is i8.8, that should be large enough) 70 72 IF( nitrst > 1.0e9 ) THEN ; WRITE(clkt,* ) nitrst … … 300 302 IF( l_offline .AND. ln_rst_list ) THEN 301 303 nrst_lst = nrst_lst + 1 302 nitrst = n stocklist( nrst_lst )304 nitrst = nn_stocklist( nrst_lst ) 303 305 ENDIF 304 306 ENDIF -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/PISCES/sms_pisces.F90
r10425 r12065 67 67 !!* Mass conservation 68 68 LOGICAL :: ln_check_mass !: Flag to check mass conservation 69 LOGICAL , PUBLIC :: ln_ironice !: boolean for Fe input from sea ice 69 70 70 71 !!* Biological fluxes for light : variables shared by pisces & lobster -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/PISCES/trcice_pisces.F90
r10213 r12065 119 119 zpisc(jpno3,1) = 5.79e-6_wp / rno3 120 120 zpisc(jpnh4,1) = 3.22e-7_wp / rno3 121 zpisc(jplgw,1) = 1.0e-9_wp 121 122 122 123 ! ln_p5z … … 162 163 zpisc(jpno3,2) = 3.51e-06_wp / rno3 163 164 zpisc(jpnh4,2) = 6.15e-08_wp / rno3 165 zpisc(jplgw,2) = 1.0e-9_wp 164 166 165 167 ! ln_p5z … … 205 207 zpisc(jpno3,3) = 2.64e-5_wp / rno3 206 208 zpisc(jpnh4,3) = 3.39e-7_wp / rno3 209 zpisc(jplgw,3) = 1.0e-9_wp 207 210 208 211 ! ln_p5z … … 249 252 zpisc(jpno3,4) = 5.36e-5_wp / rno3 250 253 zpisc(jpnh4,4) = 7.18e-7_wp / rno3 254 zpisc(jplgw,4) = 1.0e-9_wp 251 255 252 256 ! ln_p5z … … 266 270 zpisc(jpgon,4) = 1.05e-8_wp 267 271 zpisc(jpgop,4) = 1.05e-8_wp 268 272 ! 273 ! ln_ironice and tracers in seaice are redundant. Thus, if tracers in ice 274 ! is activated, ln_ironice should be set to false 275 ! ------------------------------------------------------------------------ 276 IF( nn_ice_tr /= 0 .AND. ln_ironice ) THEN 277 IF(lwp) THEN 278 WRITE(numout,*) ' ==>>> ln_ironice incompatible with nn_ice_tr = ', nn_ice_tr 279 WRITE(numout,*) ' Specify your sea ice iron concentration in nampisice instead ' 280 WRITE(numout,*) ' ln_ironice is forced to .FALSE. ' 281 ENDIF 282 ln_ironice = .FALSE. 283 ENDIF 284 ! 269 285 DO jn = jp_pcs0, jp_pcs1 270 286 IF( cn_trc_o(jn) == 'GL ' ) trc_o(:,:,jn) = zpisc(jn,1) ! Global case … … 310 326 trc_i(:,:,jn) = trc_ice_prescr(jn) 311 327 ENDIF 312 313 328 !-- Baltic 314 329 IF( cn_cfg == "orca" .OR. cn_cfg == "ORCA" ) THEN … … 318 333 trc_i(:,:,jn) = zratio(jn,2) * trc_o(:,:,jn) 319 334 END WHERE 320 ELSE ! prescribed tracer concentration in ice 321 WHERE( 14._wp <= glamt(:,:) .AND. glamt(:,:) <= 32._wp .AND. & 322 54._wp <= gphit(:,:) .AND. gphit(:,:) <= 66._wp ) 323 trc_i(:,:,jn) = trc_ice_prescr(jn) 324 END WHERE 325 ENDIF ! trc_ice_ratio 335 ENDIF 326 336 ENDIF 327 337 ! -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/PISCES/trcini_pisces.F90
r10425 r12065 275 275 276 276 ! Initialization of the sediment model 277 IF( ln_sediment) THEN 278 CALL sed_init 279 ELSE 280 ALLOCATE( profsed(2) ) 281 ENDIF 277 IF( ln_sediment) CALL sed_init 282 278 283 279 IF(lwp) WRITE(numout,*) -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/PISCES/trcnam_pisces.F90
r10222 r12065 57 57 REWIND( numnatp_ref ) ! Namelist nampisbio in reference namelist : Pisces variables 58 58 READ ( numnatp_ref, nampismod, IOSTAT = ios, ERR = 901) 59 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampismod in reference namelist' , lwp)59 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampismod in reference namelist' ) 60 60 REWIND( numnatp_cfg ) ! Namelist nampisbio in configuration namelist : Pisces variables 61 61 READ ( numnatp_cfg, nampismod, IOSTAT = ios, ERR = 902 ) 62 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampismod in configuration namelist' , lwp)62 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampismod in configuration namelist' ) 63 63 IF(lwm) WRITE( numonp, nampismod ) 64 64 ! -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/README.rst
r10549 r12065 3 3 *************** 4 4 5 .. todo:: 6 7 8 5 9 .. contents:: 6 :local: 7 8 TOP (Tracers in the Ocean Paradigm) is the NEMO hardwired interface toward biogeochemical models and 9 provide the physical constraints/boundaries for oceanic tracers. 10 It consists of a modular framework to handle multiple ocean tracers, including also a variety of built-in modules. 10 :local: 11 12 TOP (Tracers in the Ocean Paradigm) is the NEMO hardwired interface toward 13 biogeochemical models and provide the physical constraints/boundaries for oceanic tracers. 14 It consists of a modular framework to handle multiple ocean tracers, 15 including also a variety of built-in modules. 11 16 12 17 This component of the NEMO framework allows one to exploit available modules (see below) and 13 18 further develop a range of applications, spanning from the implementation of a dye passive tracer to 14 19 evaluate dispersion processes (by means of MY_TRC), track water masses age (AGE module), 15 assess the ocean interior penetration of persistent chemical compounds (e.g., gases like CFC or even PCBs), 16 up to the full set of equations involving marine biogeochemical cycles. 20 assess the ocean interior penetration of persistent chemical compounds 21 (e.g., gases like CFC or even PCBs), up to the full set of equations involving 22 marine biogeochemical cycles. 17 23 18 24 Structure 19 25 ========= 20 26 21 TOP interface has the following location in the source code ``./src/MBG/`` and27 TOP interface has the following location in the source code :file:`./src/TOP` and 22 28 the following modules are available: 23 29 24 ``TRP`` 25 Interface to NEMO physical core for computing tracers transport 26 27 ``CFC`` 28 Inert carbon tracers (CFC11,CFC12,SF6) 29 30 ``C14`` 31 Radiocarbon passive tracer 32 33 ``AGE`` 34 Water age tracking 35 36 ``MY_TRC`` 37 Template for creation of new modules and external BGC models coupling 38 39 ``PISCES`` 40 Built in BGC model. 41 See [https://www.geosci-model-dev.net/8/2465/2015/gmd-8-2465-2015-discussion.html Aumont et al. (2015)] for 42 a throughout description. | 43 44 The usage of TOP is activated i) by including in the configuration definition the component ``MBG`` and 45 ii) by adding the macro ``key_top`` in the configuration CPP file 46 (see for more details [http://forge.ipsl.jussieu.fr/nemo/wiki/Users "Learn more about the model"]). 30 :file:`TRP` 31 Interface to NEMO physical core for computing tracers transport 32 33 :file:`CFC` 34 Inert carbon tracers (CFC11,CFC12,SF6) 35 36 :file:`C14` 37 Radiocarbon passive tracer 38 39 :file:`AGE` 40 Water age tracking 41 42 :file:`MY_TRC` 43 Template for creation of new modules and external BGC models coupling 44 45 :file:`PISCES` 46 Built in BGC model. See :cite:`gmd-8-2465-2015` for a throughout description. 47 48 The usage of TOP is activated 49 *i)* by including in the configuration definition the component ``TOP`` and 50 *ii)* by adding the macro ``key_top`` in the configuration CPP file 51 (see for more details :forge:`"Learn more about the model" <wiki/Users>`). 47 52 48 53 As an example, the user can refer to already available configurations in the code, … … 51 56 (see also Section 4) . 52 57 53 Note that, since version 4.0, TOP interface core functionalities are activated by means of logical keys and 58 Note that, since version 4.0, 59 TOP interface core functionalities are activated by means of logical keys and 54 60 all submodules preprocessing macros from previous versions were removed. 55 61 … … 57 63 58 64 ``key_iomput`` 59 65 use XIOS I/O 60 66 61 67 ``key_agrif`` 62 68 enable AGRIF coupling 63 69 64 70 ``key_trdtrc`` & ``key_trdmxl_trc`` 65 71 trend computation for tracers 66 72 67 73 Synthetic Workflow 68 74 ================== 69 75 70 A synthetic description of the TOP interface workflow is given below to summarize the steps involved in 71 the computation of biogeochemical and physical trends and their time integration and outputs, 76 A synthetic description of the TOP interface workflow is given below to 77 summarize the steps involved in the computation of biogeochemical and physical trends and 78 their time integration and outputs, 72 79 by reporting also the principal Fortran subroutine herein involved. 73 80 74 **Model initialization (OPA_SRC/nemogcm.F90)** 75 76 call to trc_init (trcini.F90) 77 78 ↳ call trc_nam (trcnam.F90) to initialize TOP tracers and run setting 79 80 ↳ call trc_ini_sms, to initialize each submodule 81 82 ↳ call trc_ini_trp, to initialize transport for tracers 83 84 ↳ call trc_ice_ini, to initialize tracers in seaice 85 86 ↳ call trc_ini_state, read passive tracers from a restart or input data 87 88 ↳ call trc_sub_ini, setup substepping if {{{nn_dttrc /= 1}}} 89 90 **Time marching procedure (OPA_SRC/stp.F90)** 91 92 call to trc_stp.F90 (trcstp.F90) 93 94 ↳ call trc_sub_stp, averaging physical variables for sub-stepping 95 96 ↳ call trc_wri, call XIOS for output of data 97 98 ↳ call trc_sms, compute BGC trends for each submodule 99 100 ↳ call trc_sms_my_trc, includes also surface and coastal BCs trends 101 102 ↳ call trc_trp (TRP/trctrp.F90), compute physical trends 103 104 ↳ call trc_sbc, get trend due to surface concentration/dilution 105 106 ↳ call trc_adv, compute tracers advection 107 108 ↳ call to trc_ldf, compute tracers lateral diffusion 109 110 ↳ call to trc_zdf, vertical mixing and after tracer fields 111 112 ↳ call to trc_nxt, tracer fields at next time step. Lateral Boundary Conditions are solved in here. 113 114 ↳ call to trc_rad, Correct artificial negative concentrations 115 116 ↳ call trc_rst_wri, output tracers restart files 81 Model initialization (:file:`./src/OCE/nemogcm.F90`) 82 ---------------------------------------------------- 83 84 Call to ``trc_init`` subroutine (:file:`./src/TOP/trcini.F90`) to initialize TOP. 85 86 .. literalinclude:: ../../../src/TOP/trcini.F90 87 :language: fortran 88 :lines: 41-86 89 :emphasize-lines: 21,30-32,38-40 90 :caption: ``trc_init`` subroutine 91 92 Time marching procedure (:file:`./src/OCE/step.F90`) 93 ---------------------------------------------------- 94 95 Call to ``trc_stp`` subroutine (:file:`./src/TOP/trcstp.F90`) to compute/update passive tracers. 96 97 .. literalinclude:: ../../../src/TOP/trcstp.F90 98 :language: fortran 99 :lines: 46-125 100 :emphasize-lines: 42,55-57 101 :caption: ``trc_stp`` subroutine 102 103 BGC trends computation for each submodule (:file:`./src/TOP/trcsms.F90`) 104 ------------------------------------------------------------------------ 105 106 .. literalinclude:: ../../../src/TOP/trcsms.F90 107 :language: fortran 108 :lines: 21 109 :caption: :file:`trcsms` snippet 110 111 Physical trends computation (:file:`./src/TOP/TRP/trctrp.F90`) 112 -------------------------------------------------------------- 113 114 .. literalinclude:: ../../../src/TOP/TRP/trctrp.F90 115 :language: fortran 116 :lines: 46-95 117 :emphasize-lines: 17,21,29,33-35 118 :caption: ``trc_trp`` subroutine 117 119 118 120 Namelists walkthrough 119 121 ===================== 120 122 121 namelist_top 122 ------------ 123 124 Here below are listed the features/options of the TOP interface accessible through the namelist_top_ref and 125 modifiable by means of namelist_top_cfg (as for NEMO physical ones). 126 127 Note that ## is used to refer to a number in an array field. 123 :file:`namelist_top` 124 -------------------- 125 126 Here below are listed the features/options of the TOP interface accessible through 127 the :file:`namelist_top_ref` and modifiable by means of :file:`namelist_top_cfg` 128 (as for NEMO physical ones). 129 130 Note that ``##`` is used to refer to a number in an array field. 128 131 129 132 .. literalinclude:: ../../namelists/namtrc_run 133 :language: fortran 130 134 131 135 .. literalinclude:: ../../namelists/namtrc 136 :language: fortran 132 137 133 138 .. literalinclude:: ../../namelists/namtrc_dta 139 :language: fortran 134 140 135 141 .. literalinclude:: ../../namelists/namtrc_adv 142 :language: fortran 136 143 137 144 .. literalinclude:: ../../namelists/namtrc_ldf 145 :language: fortran 138 146 139 147 .. literalinclude:: ../../namelists/namtrc_rad 148 :language: fortran 140 149 141 150 .. literalinclude:: ../../namelists/namtrc_snk 151 :language: fortran 142 152 143 153 .. literalinclude:: ../../namelists/namtrc_dmp 154 :language: fortran 144 155 145 156 .. literalinclude:: ../../namelists/namtrc_ice 157 :language: fortran 146 158 147 159 .. literalinclude:: ../../namelists/namtrc_trd 160 :language: fortran 148 161 149 162 .. literalinclude:: ../../namelists/namtrc_bc 163 :language: fortran 150 164 151 165 .. literalinclude:: ../../namelists/namtrc_bdy 166 :language: fortran 152 167 153 168 .. literalinclude:: ../../namelists/namage 154 155 Two main types of data structure are used within TOP interface to initialize tracer properties (1) and 169 :language: fortran 170 171 Two main types of data structure are used within TOP interface 172 to initialize tracer properties (1) and 156 173 to provide related initial and boundary conditions (2). 157 174 158 **1. TOP tracers initialization**: sn_tracer (namtrc) 175 1. TOP tracers initialization: ``sn_tracer`` (``&namtrc``) 176 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 159 177 160 178 Beside providing name and metadata for tracers, 161 here are also defined the use of initial ({{{sn_tracer%llinit}}}) and 162 boundary ({{{sn_tracer%llsbc, sn_tracer%llcbc, sn_tracer%llobc}}}) conditions. 163 164 In the following, an example of the full structure definition is given for two idealized tracers both with 165 initial conditions given, while the first has only surface boundary forcing and 179 here are also defined the use of initial (``sn_tracer%llinit``) and 180 boundary (``sn_tracer%llsbc, sn_tracer%llcbc, sn_tracer%llobc``) conditions. 181 182 In the following, an example of the full structure definition is given for 183 two idealized tracers both with initial conditions given, 184 while the first has only surface boundary forcing and 166 185 the second both surface and coastal forcings: 167 186 168 187 .. code-block:: fortran 169 188 170 171 172 189 ! ! name ! title of the field ! units ! initial data ! sbc ! cbc ! obc ! 190 sn_tracer(1) = 'TRC1' , 'Tracer 1 Concentration ', ' - ' , .true. , .true., .false., .true. 191 sn_tracer(2) = 'TRC2 ' , 'Tracer 2 Concentration ', ' - ' , .true. , .true., .true. , .false. 173 192 174 193 As tracers in BGC models are increasingly growing, … … 177 196 .. code-block:: fortran 178 197 179 180 181 182 183 184 185 186 198 ! ! name ! title of the field ! units ! initial data ! 199 sn_tracer(1) = 'TRC1' , 'Tracer 1 Concentration ', ' - ' , .true. 200 sn_tracer(2) = 'TRC2 ' , 'Tracer 2 Concentration ', ' - ' , .true. 201 ! sbc 202 sn_tracer(1)%llsbc = .true. 203 sn_tracer(2)%llsbc = .true. 204 ! cbc 205 sn_tracer(2)%llcbc = .true. 187 206 188 207 The data structure is internally initialized by code with dummy names and 189 all initialization/forcing logical fields set to .false. . 190 191 **2. Structures to read input initial and boundary conditions**: namtrc_dta (sn_trcdta), namtrc_bc (sn_trcsbc/sn_trccbc/sn_trcobc) 208 all initialization/forcing logical fields set to ``.false.`` . 209 210 2. Structures to read input initial and boundary conditions: ``&namtrc_dta`` (``sn_trcdta``), ``&namtrc_bc`` (``sn_trcsbc`` / ``sn_trccbc`` / ``sn_trcobc``) 211 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 192 212 193 213 The overall data structure (Fortran type) is based on the general one defined for NEMO core in the SBC component 194 (see details in User Manual SBC Chapteron Input Data specification).195 196 Input fields are prescribed within namtrc_dta (with sn_trcdtastructure),197 while Boundary Conditions are applied to the model by means of namtrc_bc,198 with dedicated structure fields for surface ( sn_trcsbc), riverine (sn_trccbc), and199 lateral open ( sn_trcobc) boundaries.214 (see details in ``SBC`` Chapter of :doc:`Reference Manual <cite>` on Input Data specification). 215 216 Input fields are prescribed within ``&namtrc_dta`` (with ``sn_trcdta`` structure), 217 while Boundary Conditions are applied to the model by means of ``&namtrc_bc``, 218 with dedicated structure fields for surface (``sn_trcsbc``), riverine (``sn_trccbc``), and 219 lateral open (``sn_trcobc``) boundaries. 200 220 201 221 The following example illustrates the data structure in the case of initial condition for 202 a single tracer contained in the file named tracer_1_data.nc (.nc is implicitly assumed in namelist filename), 203 with a doubled initial value, and located in the usr/work/model/inputdata/ folder: 222 a single tracer contained in the file named :file:`tracer_1_data.nc` 223 (``.nc`` is implicitly assumed in namelist filename), 224 with a doubled initial value, and located in the :file:`usr/work/model/inputdata` folder: 204 225 205 226 .. code-block:: fortran 206 227 207 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 208 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 209 sn_trcdta(1) = 'tracer_1_data' , -12 , 'TRC1' , .false. , .true. , 'yearly' , '' , '' , '' 210 rf_trfac(1) = 2.0 211 cn_dir = “usr/work/model/inputdata/” 212 213 Note that, the Lateral Open Boundaries conditions are applied on the segments defined for the physical core of NEMO 214 (see BDY description in the User Manual). 215 216 namelist_trc 217 ------------ 218 219 Here below the description of namelist_trc_ref used to handle Carbon tracers modules, namely CFC and C14. 220 221 |||| &'''namcfc''' ! CFC || 222 223 |||| &'''namc14_typ''' ! C14 - type of C14 tracer, default values of C14/C and pco2 || 224 225 |||| &'''namc14_sbc''' ! C14 - surface BC || 226 227 |||| &'''namc14_fcg''' ! files & dates || 228 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 229 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 230 sn_trcdta(1) = 'tracer_1_data' , -12 , 'TRC1' , .false. , .true. , 'yearly' , '' , '' , '' 231 rf_trfac(1) = 2.0 232 cn_dir = 'usr/work/model/inputdata/' 233 234 Note that, the Lateral Open Boundaries conditions are applied on 235 the segments defined for the physical core of NEMO 236 (see ``BDY`` description in the :doc:`Reference Manual <cite>`). 237 238 :file:`namelist_trc` 239 -------------------- 240 241 Here below the description of :file:`namelist_trc_ref` used to handle Carbon tracers modules, 242 namely CFC and C14. 243 244 .. literalinclude:: ../../../cfgs/SHARED/namelist_trc_ref 245 :language: fortran 246 :lines: 7,17,26,34 247 :caption: :file:`namelist_trc_ref` snippet 228 248 229 249 ``MY_TRC`` interface for coupling external BGC models 230 250 ===================================================== 231 251 232 The generalized interface is pivoted on MY_TRC module that contains template files to build the coupling between 252 The generalized interface is pivoted on MY_TRC module that contains template files to 253 build the coupling between 233 254 NEMO and any external BGC model. 234 255 235 The call to MY_TRC is activated by setting ``ln_my_trc = .true.`` (in namtrc)256 The call to MY_TRC is activated by setting ``ln_my_trc = .true.`` (in ``&namtrc``) 236 257 237 258 The following 6 fortran files are available in MY_TRC with the specific purposes here described. 238 259 239 ``par_my_trc.F90`` 240 This module allows to define additional arrays and public variables to be used within the MY_TRC interface 241 242 ``trcini_my_trc.F90`` 243 Here are initialized user defined namelists and the call to the external BGC model initialization procedures to 244 populate general tracer array (trn and trb). Here are also likely to be defined suport arrays related to 245 system metrics that could be needed by the BGC model. 246 247 ``trcnam_my_trc.F90`` 248 This routine is called at the beginning of trcini_my_trc and should contain the initialization of 249 additional namelists for the BGC model or user-defined code. 250 251 ``trcsms_my_trc.F90`` 252 The routine performs the call to Boundary Conditions and its main purpose is to 253 contain the Source-Minus-Sinks terms due to the biogeochemical processes of the external model. 254 Be aware that lateral boundary conditions are applied in trcnxt routine. 255 IMPORTANT: the routines to compute the light penetration along the water column and 256 the tracer vertical sinking should be defined/called in here, as generalized modules are still missing in 257 the code. 258 259 ``trcice_my_trc.F90`` 260 Here it is possible to prescribe the tracers concentrations in the seaice that will be used as 261 boundary conditions when ice melting occurs (nn_ice_tr =1 in namtrc_ice). 262 See e.g. the correspondent PISCES subroutine. 263 264 ``trcwri_my_trc.F90`` 265 This routine performs the output of the model tracers (only those defined in namtrc) using IOM module 266 (see Manual Chapter “Output and Diagnostics”). 267 It is possible to place here the output of additional variables produced by the model, 268 if not done elsewhere in the code, using the call to iom_put. 260 :file:`par_my_trc.F90` 261 This module allows to define additional arrays and public variables to 262 be used within the MY_TRC interface 263 264 :file:`trcini_my_trc.F90` 265 Here are initialized user defined namelists and 266 the call to the external BGC model initialization procedures to populate general tracer array 267 (``trn`` and ``trb``). 268 Here are also likely to be defined support arrays related to system metrics that 269 could be needed by the BGC model. 270 271 :file:`trcnam_my_trc.F90` 272 This routine is called at the beginning of ``trcini_my_trc`` and 273 should contain the initialization of additional namelists for the BGC model or user-defined code. 274 275 :file:`trcsms_my_trc.F90` 276 The routine performs the call to Boundary Conditions and its main purpose is to 277 contain the Source-Minus-Sinks terms due to the biogeochemical processes of the external model. 278 Be aware that lateral boundary conditions are applied in trcnxt routine. 279 280 .. warning:: 281 The routines to compute the light penetration along the water column and 282 the tracer vertical sinking should be defined/called in here, 283 as generalized modules are still missing in the code. 284 285 :file:`trcice_my_trc.F90` 286 Here it is possible to prescribe the tracers concentrations in the sea-ice that 287 will be used as boundary conditions when ice melting occurs (``nn_ice_tr = 1`` in ``&namtrc_ice``). 288 See e.g. the correspondent PISCES subroutine. 289 290 :file:`trcwri_my_trc.F90` 291 This routine performs the output of the model tracers (only those defined in ``&namtrc``) using 292 IOM module (see chapter “Output and Diagnostics” in the :doc:`Reference Manual <cite>`). 293 It is possible to place here the output of additional variables produced by the model, 294 if not done elsewhere in the code, using the call to ``iom_put``. 269 295 270 296 Coupling an external BGC model using NEMO framework … … 273 299 The coupling with an external BGC model through the NEMO compilation framework can be achieved in 274 300 different ways according to the degree of coding complexity of the Biogeochemical model, like e.g., 275 the whole code is made only by one file or it has multiple modules and interfaces spread across several subfolders. 276 277 Beside the 6 core files of MY_TRC module, let’s assume an external BGC model named *MYBGC* and constituted by 278 a rather essential coding structure, likely few Fortran files. 301 the whole code is made only by one file or 302 it has multiple modules and interfaces spread across several subfolders. 303 304 Beside the 6 core files of MY_TRC module, let’s assume an external BGC model named *MYBGC* and 305 constituted by a rather essential coding structure, likely few Fortran files. 279 306 The new coupled configuration name is *NEMO_MYBGC*. 280 307 281 The best solution is to have all files (the modified ``MY_TRC`` routines and the BGC model ones) placed in 282 a unique folder with root ``MYBGCPATH`` and to use the makenemo external readdressing of ``MY_SRC`` folder. 283 284 The coupled configuration listed in ``work_cfgs.txt`` will look like 308 The best solution is to have all files (the modified ``MY_TRC`` routines and the BGC model ones) 309 placed in a unique folder with root ``MYBGCPATH`` and 310 to use the makenemo external readdressing of ``MY_SRC`` folder. 311 312 The coupled configuration listed in :file:`work_cfgs.txt` will look like 285 313 286 314 :: 287 315 288 NEMO_MYBGC OPA_SRC TOP_SRC 316 NEMO_MYBGC OCE TOP 289 317 290 318 and the related ``cpp_MYBGC.fcm`` content will be … … 292 320 .. code-block:: perl 293 321 294 bld::tool::fppkeyskey_iomput key_mpp_mpi key_top295 296 the compilation with ``makenemo`` will be executed through the following syntax322 bld::tool::fppkeys key_iomput key_mpp_mpi key_top 323 324 the compilation with :file:`makenemo` will be executed through the following syntax 297 325 298 326 .. code-block:: console 299 327 300 301 302 The makenemo feature “-e” was introduced to readdress at compilation time the standard MY_SRC folder303 (usually found in NEMO configurations) with a user defined external one. 304 305 The compilation of more articulated BGC model code & infrastructure, like in the case of BFM 306 ([http://www.bfm-community.eu/publications/bfmnemomanual_r1.0_201508.pdf BFM-NEMO coupling manual]),307 requires some additional features.328 $ makenemo -n 'NEMO_MYBGC' -m '<arch_my_machine>' -j 8 -e '<MYBGCPATH>' 329 330 The makenemo feature ``-e`` was introduced to 331 readdress at compilation time the standard MY_SRC folder (usually found in NEMO configurations) with 332 a user defined external one. 333 334 The compilation of more articulated BGC model code & infrastructure, 335 like in the case of BFM (|BFM man|_), requires some additional features. 308 336 309 337 As before, let’s assume a coupled configuration name *NEMO_MYBGC*, 310 but in this case MYBGC model root becomes ``<MYBGCPATH>`` that contains 4 different subfolders for 311 biogeochemistry, named ``initialization``, ``pelagic``, and ``benthic``, and 312 a separate one named ``nemo_coupling`` including the modified ``MY_SRC`` routines. 338 but in this case MYBGC model root becomes :file:`MYBGC` path that 339 contains 4 different subfolders for biogeochemistry, 340 named :file:`initialization`, :file:`pelagic`, and :file:`benthic`, 341 and a separate one named :file:`nemo_coupling` including the modified `MY_SRC` routines. 313 342 The latter folder containing the modified NEMO coupling interface will be still linked using 314 the makenemo “-e”option.343 the makenemo ``-e`` option. 315 344 316 345 In order to include the BGC model subfolders in the compilation of NEMO code, 317 it will be necessary to extend the configuration ``cpp_NEMO_MYBGC.fcm`` file to include the specific paths of 318 ``MYBGC`` folders, as in the following example 346 it will be necessary to extend the configuration :file:`cpp_NEMO_MYBGC.fcm` file to include the specific paths of :file:`MYBGC` folders, as in the following example 319 347 320 348 .. code-block:: perl 321 349 322 323 324 325 326 327 328 329 330 350 bld::tool::fppkeys key_iomput key_mpp_mpi key_top 351 352 src::MYBGC::initialization <MYBGCPATH>/initialization 353 src::MYBGC::pelagic <MYBGCPATH>/pelagic 354 src::MYBGC::benthic <MYBGCPATH>/benthic 355 356 bld::pp::MYBGC 1 357 bld::tool::fppflags::MYBGC %FPPFLAGS 358 bld::tool::fppkeys %bld::tool::fppkeys MYBGC_MACROS 331 359 332 360 where *MYBGC_MACROS* is the space delimited list of macros used in *MYBGC* model for 333 361 selecting/excluding specific parts of the code. 334 The BGC model code will be preprocessed in the configuration ``BLD`` folder as for NEMO,335 but with an independent path, like ``NEMO_MYBGC/BLD/MYBGC/<subforlders>``.362 The BGC model code will be preprocessed in the configuration :file:`BLD` folder as for NEMO, 363 but with an independent path, like :file:`NEMO_MYBGC/BLD/MYBGC/<subforlders>`. 336 364 337 365 The compilation will be performed similarly to in the previous case with the following … … 339 367 .. code-block:: console 340 368 341 $ makenemo -n 'NEMO_MYBGC' -m '<arch_my_machine>' -j 8 -e '<MYBGCPATH>/nemo_coupling' 342 343 Note that, the additional lines specific for the BGC model source and build paths can be written into 344 a separate file, e.g. named ``MYBGC.fcm``, and then simply included in the ``cpp_NEMO_MYBGC.fcm`` as follow 345 346 .. code-block:: perl 347 348 bld::tool::fppkeys key_zdftke key_dynspg_ts key_iomput key_mpp_mpi key_top 349 inc <MYBGCPATH>/MYBGC.fcm 350 351 This will enable a more portable compilation structure for all MYBGC related configurations. 352 353 **Important**: the coupling interface contained in nemo_coupling cannot be added using the FCM syntax, 354 as the same files already exists in NEMO and they are overridden only with the readdressing of MY_SRC contents to 355 avoid compilation conflicts due to duplicate routines. 356 357 All modifications illustrated above, can be easily implemented using shell or python scripting to 358 edit the NEMO configuration CPP.fcm file and to create the BGC model specific FCM compilation file with code paths. 369 $ makenemo -n 'NEMO_MYBGC' -m '<arch_my_machine>' -j 8 -e '<MYBGCPATH>/nemo_coupling' 370 371 .. note:: 372 The additional lines specific for the BGC model source and build paths can be written into 373 a separate file, e.g. named :file:`MYBGC.fcm`, 374 and then simply included in the :file:`cpp_NEMO_MYBGC.fcm` as follow 375 376 .. code-block:: perl 377 378 bld::tool::fppkeys key_zdftke key_dynspg_ts key_iomput key_mpp_mpi key_top 379 inc <MYBGCPATH>/MYBGC.fcm 380 381 This will enable a more portable compilation structure for all MYBGC related configurations. 382 383 .. warning:: 384 The coupling interface contained in :file:`nemo_coupling` cannot be added using the FCM syntax, 385 as the same files already exists in NEMO and they are overridden only with 386 the readdressing of MY_SRC contents to avoid compilation conflicts due to duplicate routines. 387 388 All modifications illustrated above, can be easily implemented using shell or python scripting 389 to edit the NEMO configuration :file:`CPP.fcm` file and 390 to create the BGC model specific FCM compilation file with code paths. 391 392 .. |BFM man| replace:: BFM-NEMO coupling manual -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/TRP/trcadv.F90
r10068 r12065 166 166 REWIND( numnat_ref ) ! namtrc_adv in reference namelist 167 167 READ ( numnat_ref, namtrc_adv, IOSTAT = ios, ERR = 901) 168 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_adv in reference namelist' , lwp)168 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_adv in reference namelist' ) 169 169 REWIND( numnat_cfg ) ! namtrc_adv in configuration namelist 170 170 READ ( numnat_cfg, namtrc_adv, IOSTAT = ios, ERR = 902 ) 171 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtrc_adv in configuration namelist' , lwp)171 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtrc_adv in configuration namelist' ) 172 172 IF(lwm) WRITE ( numont, namtrc_adv ) 173 173 ! -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/TRP/trcdmp.F90
r10351 r12065 183 183 REWIND( numnat_ref ) ! Namelist namtrc_dmp in reference namelist : Passive tracers newtonian damping 184 184 READ ( numnat_ref, namtrc_dmp, IOSTAT = ios, ERR = 909) 185 909 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_dmp in reference namelist' , lwp)185 909 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_dmp in reference namelist' ) 186 186 REWIND( numnat_cfg ) ! Namelist namtrc_dmp in configuration namelist : Passive tracers newtonian damping 187 187 READ ( numnat_cfg, namtrc_dmp, IOSTAT = ios, ERR = 910) 188 910 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtrc_dmp in configuration namelist' , lwp)188 910 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtrc_dmp in configuration namelist' ) 189 189 IF(lwm) WRITE ( numont, namtrc_dmp ) 190 190 -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/TRP/trcldf.F90
r10068 r12065 145 145 REWIND( numnat_ref ) ! namtrc_ldf in reference namelist 146 146 READ ( numnat_ref, namtrc_ldf, IOSTAT = ios, ERR = 903) 147 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_ldf in reference namelist' , lwp)147 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_ldf in reference namelist' ) 148 148 ! 149 149 REWIND( numnat_cfg ) ! namtrc_ldf in configuration namelist 150 150 READ ( numnat_cfg, namtrc_ldf, IOSTAT = ios, ERR = 904 ) 151 904 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtrc_ldf in configuration namelist' , lwp)151 904 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtrc_ldf in configuration namelist' ) 152 152 IF(lwm) WRITE ( numont, namtrc_ldf ) 153 153 ! -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/TRP/trcnxt.F90
r10425 r12065 139 139 ENDIF 140 140 ! ! Leap-Frog + Asselin filter time stepping 141 IF( (neuler == 0 .AND. kt == nittrc000) .OR. ln_top_euler ) THEN ! Euler time-stepping (only swap) 141 IF( (neuler == 0 .AND. kt == nittrc000) ) THEN 142 ! set up for leapfrog on second timestep 143 DO jn = 1, jptra 144 DO jk = 1, jpkm1 145 trb(:,:,jk,jn) = trn(:,:,jk,jn) 146 trn(:,:,jk,jn) = tra(:,:,jk,jn) 147 END DO 148 END DO 149 ELSE IF( ln_top_euler ) THEN 150 ! always doing euler timestepping 142 151 DO jn = 1, jptra 143 152 DO jk = 1, jpkm1 … … 146 155 END DO 147 156 END DO 157 ENDIF 158 IF( (neuler == 0 .AND. kt == nittrc000) .OR. ln_top_euler ) THEN ! Euler time-stepping (only swap) 148 159 IF (l_trdtrc .AND. .NOT. ln_linssh ) THEN ! Zero Asselin filter contribution must be explicitly written out since for vvl 149 160 ! ! Asselin filter is output by tra_nxt_vvl that is not called on this time step -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/TRP/trcrad.F90
r10425 r12065 89 89 REWIND( numnat_ref ) ! namtrc_rad in reference namelist 90 90 READ ( numnat_ref, namtrc_rad, IOSTAT = ios, ERR = 907) 91 907 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_rad in reference namelist' , lwp)91 907 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_rad in reference namelist' ) 92 92 REWIND( numnat_cfg ) ! namtrc_rad in configuration namelist 93 93 READ ( numnat_cfg, namtrc_rad, IOSTAT = ios, ERR = 908 ) 94 908 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtrc_rad in configuration namelist' , lwp)94 908 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtrc_rad in configuration namelist' ) 95 95 IF(lwm) WRITE( numont, namtrc_rad ) 96 96 -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/TRP/trcsbc.F90
r10425 r12065 61 61 ! 62 62 INTEGER :: ji, jj, jn ! dummy loop indices 63 REAL(wp) :: zse3t, zrtrn, z ratio, zfact ! local scalars64 REAL(wp) :: zftra, z cd, zdtra, ztfx, ztra ! - -63 REAL(wp) :: zse3t, zrtrn, zfact ! local scalars 64 REAL(wp) :: zftra, zdtra, ztfx, ztra ! - - 65 65 CHARACTER (len=22) :: charout 66 66 REAL(wp), DIMENSION(jpi,jpj) :: zsfx … … 113 113 114 114 ! 0. initialization 115 IF( nn_ice_tr == -1 ) THEN ! No tracers in sea ice (null concentration in sea ice) 115 SELECT CASE ( nn_ice_tr ) 116 117 CASE ( -1 ) ! No tracers in sea ice (null concentration in sea ice) 116 118 ! 117 119 DO jn = 1, jptra … … 123 125 END DO 124 126 ! 125 ELSE 127 CASE ( 0 ) ! Same concentration in sea ice and in the ocean 128 ! 129 DO jn = 1, jptra 130 DO jj = 2, jpj 131 DO ji = fs_2, fs_jpim1 ! vector opt. 132 sbc_trc(ji,jj,jn) = ( zsfx(ji,jj) + fmmflx(ji,jj) ) * r1_rau0 * trn(ji,jj,1,jn) 133 END DO 134 END DO 135 END DO 136 ! 137 CASE ( 1 ) ! Specific treatment of sea ice fluxes with an imposed concentration in sea ice 126 138 ! 127 139 DO jn = 1, jptra … … 131 143 ! tracer flux at the ice/ocean interface (tracer/m2/s) 132 144 zftra = - trc_i(ji,jj,jn) * fmmflx(ji,jj) ! uptake of tracer in the sea ice 133 zcd = trc_o(ji,jj,jn) * fmmflx(ji,jj) ! concentration dilution due to freezing-melting,134 145 ! ! only used in the levitating sea ice case 135 146 ! tracer flux only : add concentration dilution term in net tracer flux, no F-M in volume flux 136 147 ! tracer and mass fluxes : no concentration dilution term in net tracer flux, F-M term in volume flux 137 ztfx = zftra 148 ztfx = zftra ! net tracer flux 138 149 ! 139 zdtra = r1_rau0 * ( ztfx + zsfx(ji,jj) * trn(ji,jj,1,jn) )150 zdtra = r1_rau0 * ( ztfx + ( zsfx(ji,jj) + fmmflx(ji,jj) ) * trn(ji,jj,1,jn) ) 140 151 IF ( zdtra < 0. ) THEN 141 zratio = -zdtra * zse3t * r2dttrc / ( trn(ji,jj,1,jn) + zrtrn ) 142 zdtra = MIN(1.0, zratio) * zdtra ! avoid negative concentrations to arise 152 zdtra = MAX(zdtra, -trn(ji,jj,1,jn) * e3t_n(ji,jj,1) / r2dttrc ) ! avoid negative concentrations to arise 143 153 ENDIF 144 154 sbc_trc(ji,jj,jn) = zdtra … … 146 156 END DO 147 157 END DO 148 END IF158 END SELECT 149 159 ! 150 160 CALL lbc_lnk( 'trcsbc', sbc_trc(:,:,:), 'T', 1. ) -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/TRP/trcsink.F90
r10376 r12065 81 81 END DO 82 82 END DO 83 iiter( ji,jj) = MIN( iiter(ji,jj), nitermax )83 iiter(:,:) = MIN( iiter(:,:), nitermax ) 84 84 ENDIF 85 85 … … 87 87 DO jj = 1, jpj 88 88 DO ji = 1, jpi 89 IF( tmask(ji,jj,jk) == 1 ) THEN89 IF( tmask(ji,jj,jk) == 1.0 ) THEN 90 90 zwsmax = 0.5 * e3t_n(ji,jj,jk) * rday / rsfact 91 91 zwsink(ji,jj,jk) = MIN( pwsink(ji,jj,jk), zwsmax * REAL( iiter(ji,jj), wp ) ) 92 ELSE 93 ! provide a default value so there is no use of undefinite value in trc_sink2 for zwsink2 initialization 94 zwsink(ji,jj,jk) = 0. 92 95 ENDIF 93 96 END DO … … 215 218 REWIND( numnat_ref ) ! namtrc_rad in reference namelist 216 219 READ ( numnat_ref, namtrc_snk, IOSTAT = ios, ERR = 907) 217 907 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_snk in reference namelist' , lwp)220 907 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_snk in reference namelist' ) 218 221 REWIND( numnat_cfg ) ! namtrc_rad in configuration namelist 219 222 READ ( numnat_cfg, namtrc_snk, IOSTAT = ios, ERR = 908 ) 220 908 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtrc_snk in configuration namelist' , lwp)223 908 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtrc_snk in configuration namelist' ) 221 224 IF(lwm) WRITE( numont, namtrc_snk ) 222 225 -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/TRP/trdmxl_trc.F90
r10425 r12065 108 108 ! ... Set nmld(ji,jj) = index of first T point below control surf. or outside mixed-layer 109 109 SELECT CASE ( nn_ctls_trc ) ! choice of the control surface 110 CASE ( -2 ) ; STOP 'trdmxl_trc : not ready '! -> isopycnal surface (see ???)110 CASE ( -2 ) ; CALL ctl_stop( 'STOP', 'trdmxl_trc : not ready ' ) ! -> isopycnal surface (see ???) 111 111 CASE ( -1 ) ; nmld_trc(:,:) = neln(:,:) ! -> euphotic layer with light criterion 112 112 CASE ( 0 ) ; nmld_trc(:,:) = nmln(:,:) ! -> ML with density criterion (see zdfmxl) … … 431 431 432 432 #if defined key_diainstant 433 STOP 'tmltrd_trc : key_diainstant was never checked within trdmxl. Comment this to proceed.'433 CALL ctl_stop( 'STOP', 'tmltrd_trc : key_diainstant was never checked within trdmxl. Comment this to proceed.' ) 434 434 #endif 435 435 ENDIF … … 857 857 # if defined key_diainstant 858 858 IF( .NOT. ln_trdmxl_trc_instant ) THEN 859 STOP 'trd_mxl_trc : this was never checked. Comment this line to proceed...'859 CALL ctl_stop( 'STOP', 'trd_mxl_trc : this was never checked. Comment this line to proceed...' ) 860 860 ENDIF 861 861 zsto = nn_trd_trc * rdt … … 928 928 !-- Define miscellaneous passive tracer mixed-layer variables 929 929 IF( jpltrd_trc /= jpmxl_trc_atf .OR. jpltrd_trc - 1 /= jpmxl_trc_radb ) THEN 930 STOP 'Error : jpltrd_trc /= jpmxl_trc_atf .OR. jpltrd_trc - 1 /= jpmxl_trc_radb'! see below930 CALL ctl_stop( 'STOP', 'Error : jpltrd_trc /= jpmxl_trc_atf .OR. jpltrd_trc - 1 /= jpmxl_trc_radb' ) ! see below 931 931 ENDIF 932 932 -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/trcbc.F90
r10068 r12065 44 44 TYPE(FLD), SAVE, PUBLIC, ALLOCATABLE, DIMENSION(:), TARGET :: sf_trcobc 45 45 #endif 46 TYPE(MAP_POINTER), ALLOCATABLE, DIMENSION(:) :: nbmap_ptr ! array of pointers to nbmap47 46 48 47 !! * Substitutions … … 123 122 REWIND( numnat_ref ) ! Namelist namtrc_bc in reference namelist : Passive tracer data structure 124 123 READ ( numnat_ref, namtrc_bc, IOSTAT = ios, ERR = 901) 125 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_bc in reference namelist' , lwp)124 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_bc in reference namelist' ) 126 125 REWIND( numnat_cfg ) ! Namelist namtrc_bc in configuration namelist : Passive tracer data structure 127 126 READ ( numnat_cfg, namtrc_bc, IOSTAT = ios, ERR = 902 ) 128 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtrc_bc in configuration namelist' , lwp)127 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtrc_bc in configuration namelist' ) 129 128 IF(lwm) WRITE ( numont, namtrc_bc ) 130 129 … … 132 131 REWIND( numnat_ref ) ! Namelist namtrc_bdy in reference namelist : Passive tracer data structure 133 132 READ ( numnat_ref, namtrc_bdy, IOSTAT = ios, ERR = 903) 134 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_bdy in reference namelist', lwp ) 135 133 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_bdy in reference namelist' ) 134 ! make sur that all elements of the namelist variables have a default definition from namelist_ref 135 cn_trc (2:jp_bdy) = cn_trc (1) 136 cn_trc_dflt(2:jp_bdy) = cn_trc_dflt(1) 136 137 REWIND( numnat_cfg ) ! Namelist namtrc_bdy in configuration namelist : Passive tracer data structure 137 138 READ ( numnat_cfg, namtrc_bdy, IOSTAT = ios, ERR = 904 ) 138 904 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtrc_bdy in configuration namelist' , lwp)139 904 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtrc_bdy in configuration namelist' ) 139 140 IF(lwm) WRITE ( numont, namtrc_bdy ) 140 141 … … 234 235 ! OPEN Lateral boundary conditions 235 236 IF( ln_bdy .AND. nb_trcobc > 0 ) THEN 236 ALLOCATE ( sf_trcobc(nb_trcobc), rf_trofac(nb_trcobc), nbmap_ptr(nb_trcobc),STAT=ierr1 )237 ALLOCATE ( sf_trcobc(nb_trcobc), rf_trofac(nb_trcobc), STAT=ierr1 ) 237 238 IF( ierr1 > 0 ) THEN 238 239 CALL ctl_stop( 'trc_bc_ini: unable to allocate sf_trcobc structure' ) ; RETURN … … 257 258 trcdta_bdy(jn,ib)%trc => sf_trcobc(jl)%fnow(:,1,:) 258 259 trcdta_bdy(jn,ib)%rn_fac = rf_trofac(jl) 259 ! create OBC mapping array260 nbmap_ptr(jl)%ptr => idx_bdy(ib)%nbmap(:,igrd)261 nbmap_ptr(jl)%ll_unstruc = ln_coords_file(igrd)262 !263 260 ELSE !* Initialise obc arrays from initial conditions *! 264 261 ALLOCATE ( trcdta_bdy(jn,ib)%trc(nblen,jpk) ) … … 276 273 ! 277 274 CALL fld_fill( sf_trcobc, slf_i, cn_dir_obc, 'trc_bc_ini', 'Passive tracer OBC data', 'namtrc_bc' ) 275 DO jn = 1, ntrc ! define imap pointer, must be done after the call to fld_fill 276 DO ib = 1, nb_bdy 277 IF( ln_trc_obc(jn) ) THEN !* Initialise from external data *! 278 jl = n_trc_indobc(jn) 279 sf_trcobc(jl)%imap => idx_bdy(ib)%nbmap(1:idx_bdy(ib)%nblen(igrd),igrd) 280 ENDIF 281 END DO 282 END DO 283 ! 278 284 ENDIF 279 285 … … 362 368 IF( PRESENT(jit) ) THEN 363 369 ! 364 ! OPEN boundary conditions (use time_offset=+1 as they are applied at the end of the step)370 ! OPEN boundary conditions (use kt_offset=+1 as they are applied at the end of the step) 365 371 IF( nb_trcobc > 0 ) THEN 366 372 if (lwp) write(numout,'(a,i5,a,i10)') ' reading OBC data for ', nb_trcobc ,' variable(s) at step ', kt 367 CALL fld_read( kt=kt, kn_fsbc=1, sd=sf_trcobc, map=nbmap_ptr,kit=jit, kt_offset=+1)373 CALL fld_read( kt=kt, kn_fsbc=1, sd=sf_trcobc, kit=jit, kt_offset=+1) 368 374 ENDIF 369 375 ! … … 382 388 ELSE 383 389 ! 384 ! OPEN boundary conditions (use time_offset=+1 as they are applied at the end of the step)390 ! OPEN boundary conditions (use kt_offset=+1 as they are applied at the end of the step) 385 391 IF( nb_trcobc > 0 ) THEN 386 392 if (lwp) write(numout,'(a,i5,a,i10)') ' reading OBC data for ', nb_trcobc ,' variable(s) at step ', kt 387 CALL fld_read( kt=kt, kn_fsbc=1, sd=sf_trcobc, map=nbmap_ptr,kt_offset=+1)393 CALL fld_read( kt=kt, kn_fsbc=1, sd=sf_trcobc, kt_offset=+1) 388 394 ENDIF 389 395 ! -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/trcbdy.F90
r10425 r12065 22 22 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 23 23 USE in_out_manager ! I/O manager 24 USE bdy_oce , only: idx_bdy! ocean open boundary conditions24 USE bdy_oce ! ocean open boundary conditions 25 25 26 26 IMPLICIT NONE … … 46 46 INTEGER, INTENT( in ) :: kt ! Main time step counter 47 47 !! 48 INTEGER :: ib_bdy , jn ,igrd ! Loop indeces48 INTEGER :: ib_bdy ,ir, jn ,igrd ! Loop indices 49 49 REAL(wp), POINTER, DIMENSION(:,:) :: ztrc 50 50 REAL(wp), POINTER :: zfac 51 LOGICAL :: llrim0 ! indicate if rim 0 is treated 52 LOGICAL, DIMENSION(4) :: llsend1, llrecv1 ! indicate how communications are to be carried out 51 53 !!---------------------------------------------------------------------- 52 54 ! … … 54 56 ! 55 57 igrd = 1 56 ! 57 DO ib_bdy=1, nb_bdy 58 DO jn = 1, jptra 59 ! 60 ztrc => trcdta_bdy(jn,ib_bdy)%trc 61 zfac => trcdta_bdy(jn,ib_bdy)%rn_fac 62 ! 63 SELECT CASE( TRIM(trcdta_bdy(jn,ib_bdy)%cn_obc) ) 64 CASE('none' ) ; CYCLE 65 CASE('frs' ) ; CALL bdy_frs( idx_bdy(ib_bdy), tra(:,:,:,jn), ztrc*zfac ) 66 CASE('specified' ) ; CALL bdy_spe( idx_bdy(ib_bdy), tra(:,:,:,jn), ztrc*zfac ) 67 CASE('neumann' ) ; CALL bdy_nmn( idx_bdy(ib_bdy), igrd , tra(:,:,:,jn) ) 68 CASE('orlanski' ) ; CALL bdy_orl( idx_bdy(ib_bdy), trb(:,:,:,jn), tra(:,:,:,jn), ztrc*zfac, ll_npo=.false. ) 69 CASE('orlanski_npo') ; CALL bdy_orl( idx_bdy(ib_bdy), trb(:,:,:,jn), tra(:,:,:,jn), ztrc*zfac, ll_npo=.true. ) 70 CASE DEFAULT ; CALL ctl_stop( 'trc_bdy : unrecognised option for open boundaries for passive tracers' ) 58 llsend1(:) = .false. ; llrecv1(:) = .false. 59 DO ir = 1, 0, -1 ! treat rim 1 before rim 0 60 IF( ir == 0 ) THEN ; llrim0 = .TRUE. 61 ELSE ; llrim0 = .FALSE. 62 END IF 63 DO ib_bdy=1, nb_bdy 64 DO jn = 1, jptra 65 ! 66 ztrc => trcdta_bdy(jn,ib_bdy)%trc 67 zfac => trcdta_bdy(jn,ib_bdy)%rn_fac 68 ! 69 SELECT CASE( TRIM(trcdta_bdy(jn,ib_bdy)%cn_obc) ) 70 CASE('none' ) ; CYCLE 71 CASE('frs' ) ! treat the whole boundary at once 72 IF( ir == 0 ) CALL bdy_frs( idx_bdy(ib_bdy), tra(:,:,:,jn), ztrc*zfac ) 73 CASE('specified' ) ! treat the whole rim at once 74 IF( ir == 0 ) CALL bdy_spe( idx_bdy(ib_bdy), tra(:,:,:,jn), ztrc*zfac ) 75 CASE('neumann' ) ; CALL bdy_nmn( idx_bdy(ib_bdy), igrd , tra(:,:,:,jn) ) ! tra masked 76 CASE('orlanski' ) ; CALL bdy_orl( idx_bdy(ib_bdy), trb(:,:,:,jn), tra(:,:,:,jn), ztrc*zfac, ll_npo=.false. ) 77 CASE('orlanski_npo') ; CALL bdy_orl( idx_bdy(ib_bdy), trb(:,:,:,jn), tra(:,:,:,jn), ztrc*zfac, ll_npo=.true. ) 78 CASE DEFAULT ; CALL ctl_stop( 'trc_bdy : unrecognised option for open boundaries for passive tracers' ) 79 END SELECT 80 ! 81 END DO 82 END DO 83 ! 84 IF( nn_hls > 1 .AND. ir == 1 ) CYCLE ! at least 2 halos will be corrected -> no need to correct rim 1 before rim 0 85 IF( nn_hls == 1 ) THEN ; llsend1(:) = .false. ; llrecv1(:) = .false. ; END IF 86 DO ib_bdy=1, nb_bdy 87 SELECT CASE( TRIM(cn_tra(ib_bdy)) ) 88 CASE('neumann') 89 llsend1(:) = llsend1(:) .OR. lsend_bdyint(ib_bdy,1,:,ir) ! possibly every direction, T points 90 llrecv1(:) = llrecv1(:) .OR. lrecv_bdyint(ib_bdy,1,:,ir) ! possibly every direction, T points 91 CASE('orlanski','orlanski_npo') 92 llsend1(:) = llsend1(:) .OR. lsend_bdy(ib_bdy,1,:,ir) ! possibly every direction, T points 93 llrecv1(:) = llrecv1(:) .OR. lrecv_bdy(ib_bdy,1,:,ir) ! possibly every direction, T points 71 94 END SELECT 72 ! Boundary points should be updated73 CALL lbc_bdy_lnk( 'trcbdy', tra(:,:,:,jn), 'T', 1., ib_bdy )74 !75 95 END DO 76 END DO 96 IF( ANY(llsend1) .OR. ANY(llrecv1) ) THEN ! if need to send/recv in at least one direction 97 CALL lbc_lnk( 'trcbdy', tra, 'T', 1., kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 ) 98 END IF 99 ! 100 END DO ! ir 77 101 ! 78 102 IF( ln_timing ) CALL timing_stop('trc_bdy') 79 103 ! 80 104 END SUBROUTINE trc_bdy 81 105 -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/trcdta.F90
r10222 r12065 100 100 REWIND( numnat_ref ) ! Namelist namtrc_dta in reference namelist : Passive tracer input data 101 101 READ ( numnat_ref, namtrc_dta, IOSTAT = ios, ERR = 901) 102 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_dta_ini in reference namelist' , lwp)102 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_dta_ini in reference namelist' ) 103 103 REWIND( numnat_cfg ) ! Namelist namtrc_dta in configuration namelist : Passive tracer input data 104 104 READ ( numnat_cfg, namtrc_dta, IOSTAT = ios, ERR = 902 ) 105 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtrc_dta_ini in configuration namelist' , lwp)105 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtrc_dta_ini in configuration namelist' ) 106 106 IF(lwm) WRITE ( numont, namtrc_dta ) 107 107 -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/trcice.F90
r10069 r12065 87 87 REWIND( numnat_ref ) ! Namelist namtrc_ice in reference namelist : Passive tracer input data 88 88 READ ( numnat_ref, namtrc_ice, IOSTAT = ios, ERR = 901) 89 901 IF( ios /= 0 ) CALL ctl_nam ( ios , ' namtrc_ice in reference namelist ' , lwp)89 901 IF( ios /= 0 ) CALL ctl_nam ( ios , ' namtrc_ice in reference namelist ' ) 90 90 REWIND( numnat_cfg ) ! Namelist namtrc_ice in configuration namelist : Pisces external sources of nutrients 91 91 READ ( numnat_cfg, namtrc_ice, IOSTAT = ios, ERR = 902 ) 92 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtrc_ice in configuration namelist' , lwp)92 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtrc_ice in configuration namelist' ) 93 93 94 94 IF( lwp ) THEN -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/trcini.F90
r10570 r12065 181 181 IF( ln_c14 ) CALL trc_ini_c14 ! C14 model 182 182 IF( ln_age ) CALL trc_ini_age ! AGE 183 IF( .NOT.ln_pisces ) ALLOCATE( profsed(2) )184 183 ! 185 184 IF(lwp) THEN ! control print -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/trcnam.F90
r10425 r12065 114 114 REWIND( numnat_ref ) ! Namelist namtrc in reference namelist : Passive tracer variables 115 115 READ ( numnat_ref, namtrc_run, IOSTAT = ios, ERR = 901) 116 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc in reference namelist' , lwp)116 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc in reference namelist' ) 117 117 REWIND( numnat_cfg ) ! Namelist namtrc in configuration namelist : Passive tracer variables 118 118 READ ( numnat_cfg, namtrc_run, IOSTAT = ios, ERR = 902 ) 119 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtrc in configuration namelist' , lwp)119 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtrc in configuration namelist' ) 120 120 IF(lwm) WRITE( numont, namtrc_run ) 121 121 … … 160 160 REWIND( numnat_ref ) ! Namelist namtrc in reference namelist : Passive tracer variables 161 161 READ ( numnat_ref, namtrc, IOSTAT = ios, ERR = 901) 162 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc in reference namelist' , lwp)162 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc in reference namelist' ) 163 163 REWIND( numnat_cfg ) ! Namelist namtrc in configuration namelist : Passive tracer variables 164 164 READ ( numnat_cfg, namtrc, IOSTAT = ios, ERR = 902 ) 165 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtrc in configuration namelist' , lwp)165 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtrc in configuration namelist' ) 166 166 IF(lwm) WRITE( numont, namtrc ) 167 167 … … 263 263 REWIND( numnat_ref ) ! Namelist namtrc_trd in reference namelist : Passive tracer trends 264 264 READ ( numnat_ref, namtrc_trd, IOSTAT = ios, ERR = 905) 265 905 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_trd in reference namelist' , lwp)265 905 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namtrc_trd in reference namelist' ) 266 266 REWIND( numnat_cfg ) ! Namelist namtrc_trd in configuration namelist : Passive tracer trends 267 267 READ ( numnat_cfg, namtrc_trd, IOSTAT = ios, ERR = 906 ) 268 906 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtrc_trd in configuration namelist' , lwp)268 906 IF( ios > 0 ) CALL ctl_nam ( ios , 'namtrc_trd in configuration namelist' ) 269 269 IF(lwm) WRITE( numont, namtrc_trd ) 270 270 -
NEMO/branches/2019/dev_r10742_ENHANCE-12_SimonM-Tides/src/TOP/trcrst.F90
r10425 r12065 58 58 IF( ln_rst_list ) THEN 59 59 nrst_lst = 1 60 nitrst = n stocklist( nrst_lst )60 nitrst = nn_stocklist( nrst_lst ) 61 61 ELSE 62 62 nitrst = nitend … … 64 64 ENDIF 65 65 66 IF( .NOT. ln_rst_list .AND. MOD( kt - 1, n stock ) == 0 ) THEN66 IF( .NOT. ln_rst_list .AND. MOD( kt - 1, nn_stock ) == 0 ) THEN 67 67 ! we use kt - 1 and not kt - nittrc000 to keep the same periodicity from the beginning of the experiment 68 nitrst = kt + n stock - 1 ! define the next value of nitrst for restart writing68 nitrst = kt + nn_stock - 1 ! define the next value of nitrst for restart writing 69 69 IF( nitrst > nitend ) nitrst = nitend ! make sure we write a restart at the end of the run 70 70 ENDIF … … 72 72 IF( kt == nittrc000 ) lrst_trc = .FALSE. 73 73 ENDIF 74 75 IF( .NOT. ln_rst_list .AND. nn_stock == -1 ) RETURN ! we will never do any restart 74 76 75 77 ! to get better performances with NetCDF format: 76 78 ! we open and define the tracer restart file one tracer time step before writing the data (-> at nitrst - 2*nn_dttrc + 1) 77 79 ! except if we write tracer restart files every tracer time step or if a tracer restart file was writen at nitend - 2*nn_dttrc + 1 78 IF( kt == nitrst - 2*nn_dttrc .OR. n stock == nn_dttrc .OR. ( kt == nitend - nn_dttrc .AND. .NOT. lrst_trc ) ) THEN80 IF( kt == nitrst - 2*nn_dttrc .OR. nn_stock == nn_dttrc .OR. ( kt == nitend - nn_dttrc .AND. .NOT. lrst_trc ) ) THEN 79 81 ! beware of the format used to write kt (default is i8.8, that should be large enough) 80 82 IF( nitrst > 1.0e9 ) THEN ; WRITE(clkt,* ) nitrst … … 153 155 IF( l_offline .AND. ln_rst_list ) THEN 154 156 nrst_lst = nrst_lst + 1 155 nitrst = n stocklist( nrst_lst )157 nitrst = nn_stocklist( nrst_lst ) 156 158 ENDIF 157 159 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.