Changeset 10377
- Timestamp:
- 2018-12-10T08:45:39+01:00 (6 years ago)
- Location:
- NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE
- Files:
-
- 15 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/cfgs/ORCA2_ICE_PISCES/EXPREF/namelist_top_cfg
r9516 r10377 90 90 / 91 91 !----------------------------------------------------------------------- 92 &namtrc_snk ! sedimentation of particles 93 !----------------------------------------------------------------------- 94 / 95 !----------------------------------------------------------------------- 92 96 &namtrc_dmp ! passive tracer newtonian damping 93 97 !----------------------------------------------------------------------- -
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/cfgs/ORCA2_OFF_PISCES/EXPREF/namelist_top_cfg
r9516 r10377 89 89 / 90 90 !----------------------------------------------------------------------- 91 &namtrc_snk ! sedimentation of particles 92 !----------------------------------------------------------------------- 93 / 94 !----------------------------------------------------------------------- 91 95 &namtrc_dmp ! passive tracer newtonian damping 92 96 !----------------------------------------------------------------------- -
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/cfgs/SHARED/namelist_pisces_ref
r10368 r10377 51 51 wsbio2max = 50. ! Big particles maximum sinking speed 52 52 wsbio2scale = 5000. ! Big particles length scale of sinking 53 niter1max = 1 ! Maximum number of iterations for POC54 niter2max = 2 ! Maximum number of iterations for GOC55 53 ! ! ln_ligand enabled 56 54 wfep = 0.2 ! FeP sinking speed 57 55 ldocp = 1.E-4 ! Phyto ligand production per unit doc 58 56 ldocz = 1.E-4 ! Zoo ligand production per unit doc 59 lthet = 0.5! Proportional loss of ligands due to Fe uptake57 lthet = 1.0 ! Proportional loss of ligands due to Fe uptake 60 58 ! ! ln_p5z enabled 61 59 no3rat3 = 0.182 ! N/C ratio in zooplankton … … 310 308 xlam1 = 0.005 ! scavenging rate of Iron 311 309 xlamdust = 150.0 ! Scavenging rate of dust 312 ligand = 0. 6E-9 ! Ligands concentration310 ligand = 0.7E-9 ! Ligands concentration 313 311 kfep = 0.01 ! Nanoparticle formation rate constant 314 312 / … … 322 320 xsilab = 0.5 ! Fraction of labile biogenic silica 323 321 feratb = 10.E-6 ! Fe/C quota in bacteria 324 xkferb = 2.5E-10! Half-saturation constant for bacteria Fe/C322 xkferb = 3E-10 ! Half-saturation constant for bacteria Fe/C 325 323 ! ! ln_p5z 326 324 xremikc = 0.25 ! remineralization rate of DOC … … 372 370 ln_ironsed = .true. ! boolean for Fe input from sediments 373 371 ln_ironice = .true. ! boolean for Fe input from sea ice 374 ln_hydrofe = . false.! boolean for from hydrothermal vents372 ln_hydrofe = .true. ! boolean for from hydrothermal vents 375 373 sedfeinput = 2.e-9 ! Coastal release of Iron 376 374 distcoast = 5.e3 ! Distance off the coast for Iron from sediments -
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/cfgs/SHARED/namelist_top_ref
r9526 r10377 95 95 / 96 96 !----------------------------------------------------------------------- 97 &namtrc_snk ! Sedimentation of particles 98 !----------------------------------------------------------------------- 99 nitermax = 2 ! number of iterations for sedimentation 100 / 101 !----------------------------------------------------------------------- 97 102 &namtrc_dmp ! passive tracer newtonian damping (ln_trcdmp=T) 98 103 !----------------------------------------------------------------------- -
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/doc/latex/NEMO/main/NEMO_manual.bib
r10124 r10377 547 547 PAGES = {1285--1297}, 548 548 DOI = {10.5194/gmd-8-1285-2015} 549 } 550 551 @ARTICLE{Breivik_al_JPO2014, 552 AUTHOR = {{\O}yvind Breivik and Peter A.E.M. Janssen and Jean-Raymond Bidlot}, 553 YEAR = {2014}, 554 TITLE = "{Approximate Stokes Drift Profiles in Deep Water}", 555 JOURNAL = {JPO}, 556 VOLUME = {44}, 557 NUMBER = {9}, 558 DOI = {10.1175/JPO-D-14-0020.1.}, 559 PAGES = {2433--2445, arXiv:1406.5039} 549 560 } 550 561 … … 1655 1666 } 1656 1667 1668 @TECHREPORT{Janssen_al_TM13, 1669 author = {P.A.E.M. Janssen and {\O}. Breivik and K. Mogensen 1670 and F. Vitart and M. Balmaseda and J.B. Bidlot and 1671 S. Keeley and M. Leut-becher and L. Magnusson and F. Molteni}, 1672 title = {Air-Sea Interaction and Surface Waves}, 1673 year = {2013}, 1674 volume = {712}, 1675 institution = {ECMWF}, 1676 } 1677 1657 1678 @ARTICLE{Jayne_St_Laurent_GRL01, 1658 1679 author = {S.R. Jayne and L.C. {St. Laurent}}, … … 2992 3013 volume = {359}, 2993 3014 pages = {123--129} 3015 } 3016 3017 @INCOLLECTION{Stokes_1847, 3018 author = {G.G. Stokes}, 3019 title = {On the theory of oscillatory waves}, 3020 booktitle = {Transactions of the Cambridge Philosophy Society}, 3021 year = {1847}, 3022 volume = {8}, 3023 Pages = {441--455} 2994 3024 } 2995 3025 -
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/doc/latex/NEMO/subfiles/chap_SBC.tex
r10368 r10377 32 32 \end{itemize} 33 33 34 F ivedifferent ways to provide the first six fields to the ocean are available which are controlled by34 Four different ways to provide the first six fields to the ocean are available which are controlled by 35 35 namelist \ngn{namsbc} variables: 36 36 an analytical formulation (\np{ln\_ana}\forcode{ = .true.}), 37 37 a flux formulation (\np{ln\_flx}\forcode{ = .true.}), 38 38 a bulk formulae formulation (CORE (\np{ln\_blk\_core}\forcode{ = .true.}), 39 CLIO (\np{ln\_blk\_clio}\forcode{ = .true.}) or 40 MFS \footnote { Note that MFS bulk formulae compute fluxes only for the ocean component} 41 (\np{ln\_blk\_mfs}\forcode{ = .true.}) bulk formulae) and 39 CLIO (\np{ln\_blk\_clio}\forcode{ = .true.}) bulk formulae) and 42 40 a coupled or mixed forced/coupled formulation (exchanges with a atmospheric model via the OASIS coupler) 43 41 (\np{ln\_cpl} or \np{ln\_mixcpl}\forcode{ = .true.}). … … 76 74 the transformation of the solar radiation (if provided as daily mean) into a diurnal cycle 77 75 (\np{ln\_dm2dc}\forcode{ = .true.}); 78 and a neutral drag coefficient can be read from an external wave model (\np{ln\_cdgw}\forcode{ = .true.}). 76 \item 77 a neutral drag coefficient can be read from an external wave model (\np{ln\_cdgw}\forcode{ = .true.}); 78 \item 79 the Stokes drift rom an external wave model can be accounted (\np{ln\_sdw}\forcode{ = .true.}); 80 \item 81 the Stokes-Coriolis term can be included (\np{ln\_stcor}\forcode{ = .true.}); 82 \item 83 the surface stress felt by the ocean can be modified by surface waves (\np{ln\_tauwoc}\forcode{ = .true.}). 79 84 \end{itemize} 80 The latter option is possible only in case core or mfs bulk formulas are selected.81 85 82 86 In this chapter, we first discuss where the surface boundary condition appears in the model equations. … … 593 597 % Bulk formulation 594 598 % ================================================================ 595 \section[Bulk formulation {(\textit{sbcblk\{\_core,\_clio ,\_mfs\}.F90})}]596 {Bulk formulation {(\protect\mdl{sbcblk\_core}, \protect\mdl{sbcblk\_clio}, \protect\mdl{sbcblk\_mfs})}}599 \section[Bulk formulation {(\textit{sbcblk\{\_core,\_clio\}.F90})}] 600 {Bulk formulation {(\protect\mdl{sbcblk\_core}, \protect\mdl{sbcblk\_clio})}} 597 601 \label{sec:SBC_blk} 598 602 … … 600 604 601 605 The atmospheric fields used depend on the bulk formulae used. 602 T hreebulk formulations are available:603 the CORE , the CLIO and the MFSbulk formulea.606 Two bulk formulations are available: 607 the CORE and the CLIO bulk formulea. 604 608 The choice is made by setting to true one of the following namelist variable: 605 \np{ln\_core} ; \np{ln\_clio} or \np{ln\_mfs}.609 \np{ln\_core} or \np{ln\_clio}. 606 610 607 611 Note: … … 712 716 the namsbc\_blk\_core or namsbc\_blk\_clio namelist (see \autoref{subsec:SBC_fldread}). 713 717 714 % -------------------------------------------------------------------------------------------------------------715 % MFS Bulk formulae716 % -------------------------------------------------------------------------------------------------------------717 \subsection{MFS formulea (\protect\mdl{sbcblk\_mfs}, \protect\np{ln\_mfs}\forcode{ = .true.})}718 \label{subsec:SBC_blk_mfs}719 %------------------------------------------namsbc_mfs----------------------------------------------------720 %721 %\nlst{namsbc_mfs}722 %----------------------------------------------------------------------------------------------------------723 724 The MFS (Mediterranean Forecasting System) bulk formulae have been developed by \citet{Castellari_al_JMS1998}.725 They have been designed to handle the ECMWF operational data and are currently in use in726 the MFS operational system \citep{Tonani_al_OS08}, \citep{Oddo_al_OS09}.727 The wind stress computation uses a drag coefficient computed according to \citet{Hellerman_Rosenstein_JPO83}.728 The surface boundary condition for temperature involves the balance between729 surface solar radiation, net long-wave radiation, the latent and sensible heat fluxes.730 Solar radiation is dependent on cloud cover and is computed by means of an astronomical formula \citep{Reed_JPO77}.731 Albedo monthly values are from \citet{Payne_JAS72} as means of the values at $40^{o}N$ and $30^{o}N$ for732 the Atlantic Ocean (hence the same latitudinal band of the Mediterranean Sea).733 The net long-wave radiation flux \citep{Bignami_al_JGR95} is a function of734 air temperature, sea-surface temperature, cloud cover and relative humidity.735 Sensible heat and latent heat fluxes are computed by classical bulk formulae parameterised according to736 \citet{Kondo1975}.737 Details on the bulk formulae used can be found in \citet{Maggiore_al_PCE98} and \citet{Castellari_al_JMS1998}.738 739 Options are defined through the \ngn{namsbc\_mfs} namelist variables.740 The required 7 input fields must be provided on the model Grid-T and are:741 \begin{itemize}742 \item Zonal Component of the 10m wind ($ms^{-1}$) (\np{sn\_windi})743 \item Meridional Component of the 10m wind ($ms^{-1}$) (\np{sn\_windj})744 \item Total Claud Cover (\%) (\np{sn\_clc})745 \item 2m Air Temperature ($K$) (\np{sn\_tair})746 \item 2m Dew Point Temperature ($K$) (\np{sn\_rhm})747 \item Total Precipitation ${Kg} m^{-2} s^{-1}$ (\np{sn\_prec})748 \item Mean Sea Level Pressure (${Pa}$) (\np{sn\_msl})749 \end{itemize}750 % -------------------------------------------------------------------------------------------------------------751 718 % ================================================================ 752 719 % Coupled formulation … … 1203 1170 since its trajectory data may be spread across multiple files. 1204 1171 1172 % ------------------------------------------------------------------------------------------------------------- 1173 % Interactions with waves (sbcwave.F90, ln_wave) 1174 % ------------------------------------------------------------------------------------------------------------- 1175 \section{Interactions with waves (\protect\mdl{sbcwave}, \protect\np{ln\_wave})} 1176 \label{sec:SBC_wave} 1177 %------------------------------------------namsbc_wave-------------------------------------------------------- 1178 1179 \nlst{namsbc_wave} 1180 %------------------------------------------------------------------------------------------------------------- 1181 1182 Ocean waves represent the interface between the ocean and the atmosphere, so NEMO is extended to incorporate 1183 physical processes related to ocean surface waves, namely the surface stress modified by growth and 1184 dissipation of the oceanic wave field, the Stokes-Coriolis force and the Stokes drift impact on mass and 1185 tracer advection; moreover the neutral surface drag coefficient from a wave model can be used to evaluate 1186 the wind stress. 1187 1188 Physical processes related to ocean surface waves can be accounted by setting the logical variable 1189 \np{ln\_wave}\forcode{= .true.} in \ngn{namsbc} namelist. In addition, specific flags accounting for 1190 different porcesses should be activated as explained in the following sections. 1191 1192 Wave fields can be provided either in forced or coupled mode: 1193 \begin{description} 1194 \item[forced mode]: wave fields should be defined through the \ngn{namsbc\_wave} namelist 1195 for external data names, locations, frequency, interpolation and all the miscellanous options allowed by 1196 Input Data generic Interface (see \autoref{sec:SBC_input}). 1197 \item[coupled mode]: NEMO and an external wave model can be coupled by setting \np{ln\_cpl} \forcode{= .true.} 1198 in \ngn{namsbc} namelist and filling the \ngn{namsbc\_cpl} namelist. 1199 \end{description} 1200 1201 1202 % ================================================================ 1203 % Neutral drag coefficient from wave model (ln_cdgw) 1204 1205 % ================================================================ 1206 \subsection{Neutral drag coefficient from wave model (\protect\np{ln\_cdgw})} 1207 \label{subsec:SBC_wave_cdgw} 1208 1209 The neutral surface drag coefficient provided from an external data source ($i.e.$ a wave 1210 model), 1211 can be used by setting the logical variable \np{ln\_cdgw} \forcode{= .true.} in \ngn{namsbc} namelist. 1212 Then using the routine \rou{turb\_ncar} and starting from the neutral drag coefficent provided, 1213 the drag coefficient is computed according to the stable/unstable conditions of the 1214 air-sea interface following \citet{Large_Yeager_Rep04}. 1215 1216 1217 % ================================================================ 1218 % 3D Stokes Drift (ln_sdw, nn_sdrift) 1219 % ================================================================ 1220 \subsection{3D Stokes Drift (\protect\np{ln\_sdw, nn\_sdrift})} 1221 \label{subsec:SBC_wave_sdw} 1222 1223 The Stokes drift is a wave driven mechanism of mass and momentum transport \citep{Stokes_1847}. 1224 It is defined as the difference between the average velocity of a fluid parcel (Lagrangian velocity) 1225 and the current measured at a fixed point (Eulerian velocity). 1226 As waves travel, the water particles that make up the waves travel in orbital motions but 1227 without a closed path. Their movement is enhanced at the top of the orbit and slowed slightly 1228 at the bottom so the result is a net forward motion of water particles, referred to as the Stokes drift. 1229 An accurate evaluation of the Stokes drift and the inclusion of related processes may lead to improved 1230 representation of surface physics in ocean general circulation models. 1231 The Stokes drift velocity $\mathbf{U}_{st}$ in deep water can be computed from the wave spectrum and may be written as: 1232 1233 \begin{equation} \label{eq:sbc_wave_sdw} 1234 \mathbf{U}_{st} = \frac{16{\pi^3}} {g} 1235 \int_0^\infty \int_{-\pi}^{\pi} (cos{\theta},sin{\theta}) {f^3} 1236 \mathrm{S}(f,\theta) \mathrm{e}^{2kz}\,\mathrm{d}\theta {d}f 1237 \end{equation} 1238 1239 where: ${\theta}$ is the wave direction, $f$ is the wave intrinsic frequency, 1240 $\mathrm{S}($f$,\theta)$ is the 2D frequency-direction spectrum, 1241 $k$ is the mean wavenumber defined as: 1242 $k=\frac{2\pi}{\lambda}$ (being $\lambda$ the wavelength). \\ 1243 1244 In order to evaluate the Stokes drift in a realistic ocean wave field the wave spectral shape is required 1245 and its computation quickly becomes expensive as the 2D spectrum must be integrated for each vertical level. 1246 To simplify, it is customary to use approximations to the full Stokes profile. 1247 Three possible parameterizations for the calculation for the approximate Stokes drift velocity profile 1248 are included in the code through the \np{nn\_sdrift} parameter once provided the surface Stokes drift 1249 $\mathbf{U}_{st |_{z=0}}$ which is evaluated by an external wave model that accurately reproduces the wave spectra 1250 and makes possible the estimation of the surface Stokes drift for random directional waves in 1251 realistic wave conditions: 1252 1253 \begin{description} 1254 \item[\np{nn\_sdrift} = 0]: exponential integral profile parameterization proposed by 1255 \citet{Breivik_al_JPO2014}: 1256 1257 \begin{equation} \label{eq:sbc_wave_sdw_0a} 1258 \mathbf{U}_{st} \cong \mathbf{U}_{st |_{z=0}} \frac{\mathrm{e}^{-2k_ez}} {1-8k_ez} 1259 \end{equation} 1260 1261 where $k_e$ is the effective wave number which depends on the Stokes transport $T_{st}$ defined as follows: 1262 1263 \begin{equation} \label{eq:sbc_wave_sdw_0b} 1264 k_e = \frac{|\mathbf{U}_{\left.st\right|_{z=0}}|} {|T_{st}|} 1265 \quad \text{and }\ 1266 T_{st} = \frac{1}{16} \bar{\omega} H_s^2 1267 \end{equation} 1268 1269 where $H_s$ is the significant wave height and $\omega$ is the wave frequency. 1270 1271 \item[\np{nn\_sdrift} = 1]: velocity profile based on the Phillips spectrum which is considered to be a 1272 reasonable estimate of the part of the spectrum most contributing to the Stokes drift velocity near the surface 1273 \citep{Breivik_al_OM2016}: 1274 1275 \begin{equation} \label{eq:sbc_wave_sdw_1} 1276 \mathbf{U}_{st} \cong \mathbf{U}_{st |_{z=0}} \Big[exp(2k_pz)-\beta \sqrt{-2 \pi k_pz} 1277 \textit{ erf } \Big(\sqrt{-2 k_pz}\Big)\Big] 1278 \end{equation} 1279 1280 where $erf$ is the complementary error function and $k_p$ is the peak wavenumber. 1281 1282 \item[\np{nn\_sdrift} = 2]: velocity profile based on the Phillips spectrum as for \np{nn\_sdrift} = 1 1283 but using the wave frequency from a wave model. 1284 1285 \end{description} 1286 1287 The Stokes drift enters the wave-averaged momentum equation, as well as the tracer advection equations 1288 and its effect on the evolution of the sea-surface height ${\eta}$ is considered as follows: 1289 1290 \begin{equation} \label{eq:sbc_wave_eta_sdw} 1291 \frac{\partial{\eta}}{\partial{t}} = 1292 -\nabla_h \int_{-H}^{\eta} (\mathbf{U} + \mathbf{U}_{st}) dz 1293 \end{equation} 1294 1295 The tracer advection equation is also modified in order for Eulerian ocean models to properly account 1296 for unresolved wave effect. The divergence of the wave tracer flux equals the mean tracer advection 1297 that is induced by the three-dimensional Stokes velocity. 1298 The advective equation for a tracer $c$ combining the effects of the mean current and sea surface waves 1299 can be formulated as follows: 1300 1301 \begin{equation} \label{eq:sbc_wave_tra_sdw} 1302 \frac{\partial{c}}{\partial{t}} = 1303 - (\mathbf{U} + \mathbf{U}_{st}) \cdot \nabla{c} 1304 \end{equation} 1305 1306 1307 % ================================================================ 1308 % Stokes-Coriolis term (ln_stcor) 1309 % ================================================================ 1310 \subsection{Stokes-Coriolis term (\protect\np{ln\_stcor})} 1311 \label{subsec:SBC_wave_stcor} 1312 1313 In a rotating ocean, waves exert a wave-induced stress on the mean ocean circulation which results 1314 in a force equal to $\mathbf{U}_{st}$×$f$, where $f$ is the Coriolis parameter. 1315 This additional force may have impact on the Ekman turning of the surface current. 1316 In order to include this term, once evaluated the Stokes drift (using one of the 3 possible 1317 approximations described in \autoref{subsec:SBC_wave_sdw}), 1318 \np{ln\_stcor}\forcode{ = .true.} has to be set. 1319 1320 1321 % ================================================================ 1322 % Waves modified stress (ln_tauwoc, ln_tauw) 1323 % ================================================================ 1324 \subsection{Wave modified sress (\protect\np{ln\_tauwoc, ln\_tauw})} 1325 \label{subsec:SBC_wave_tauw} 1326 1327 The surface stress felt by the ocean is the atmospheric stress minus the net stress going 1328 into the waves \citep{Janssen_al_TM13}. Therefore, when waves are growing, momentum and energy is spent and is not 1329 available for forcing the mean circulation, while in the opposite case of a decaying sea 1330 state more momentum is available for forcing the ocean. 1331 Only when the sea state is in equilibrium the ocean is forced by the atmospheric stress, 1332 but in practice an equilibrium sea state is a fairly rare event. 1333 So the atmospheric stress felt by the ocean circulation $\tau_{oc,a}$ can be expressed as: 1334 1335 \begin{equation} \label{eq:sbc_wave_tauoc} 1336 \tau_{oc,a} = \tau_a - \tau_w 1337 \end{equation} 1338 1339 where $\tau_a$ is the atmospheric surface stress; 1340 $\tau_w$ is the atmospheric stress going into the waves defined as: 1341 1342 \begin{equation} \label{eq:sbc_wave_tauw} 1343 \tau_w = \rho g \int {\frac{dk}{c_p} (S_{in}+S_{nl}+S_{diss})} 1344 \end{equation} 1345 1346 where: $c_p$ is the phase speed of the gravity waves, 1347 $S_{in}$, $S_{nl}$ and $S_{diss}$ are three source terms that represent 1348 the physics of ocean waves. The first one, $S_{in}$, describes the generation 1349 of ocean waves by wind and therefore represents the momentum and energy transfer 1350 from air to ocean waves; the second term $S_{nl}$ denotes 1351 the nonlinear transfer by resonant four-wave interactions; while the third term $S_{diss}$ 1352 describes the dissipation of waves by processes such as white-capping, large scale breaking 1353 eddy-induced damping. 1354 1355 The wave stress derived from an external wave model can be provided either through the normalized 1356 wave stress into the ocean by setting \np{ln\_tauwoc}\forcode{ = .true.}, or through the zonal and 1357 meridional stress components by setting \np{ln\_tauw}\forcode{ = .true.}. 1358 1205 1359 1206 1360 % ================================================================ … … 1421 1575 \end{description} 1422 1576 1423 % -------------------------------------------------------------------------------------------------------------1424 % Neutral Drag Coefficient from external wave model1425 % -------------------------------------------------------------------------------------------------------------1426 \subsection[Neutral drag coeff. from external wave model (\protect\mdl{sbcwave})]1427 {Neutral drag coefficient from external wave model (\protect\mdl{sbcwave})}1428 \label{subsec:SBC_wave}1429 %------------------------------------------namwave----------------------------------------------------1430 1431 \nlst{namsbc_wave}1432 %-------------------------------------------------------------------------------------------------------------1433 1434 In order to read a neutral drag coefficient, from an external data source ($i.e.$ a wave model),1435 the logical variable \np{ln\_cdgw} in \ngn{namsbc} namelist must be set to \forcode{.true.}.1436 The \mdl{sbcwave} module containing the routine \np{sbc\_wave} reads the namelist \ngn{namsbc\_wave}1437 (for external data names, locations, frequency, interpolation and all the miscellanous options allowed by1438 Input Data generic Interface see \autoref{sec:SBC_input}) and1439 a 2D field of neutral drag coefficient.1440 Then using the routine TURB\_CORE\_1Z or TURB\_CORE\_2Z, and starting from the neutral drag coefficent provided,1441 the drag coefficient is computed according to stable/unstable conditions of the air-sea interface following1442 \citet{Large_Yeager_Rep04}.1443 1577 1444 1578 -
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/doc/latex/NEMO/subfiles/introduction.tex
r10368 r10377 311 311 \item new definition of configurations ; 312 312 \item bulk formulation ; 313 \item NEMO-wave large scale interactions ; 313 314 \item ... ; 314 315 \end{enumerate} -
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/OCE/IOM/iom_nf90.F90
r10358 r10377 691 691 INTEGER, DIMENSION(4) :: idimid ! dimensions id 692 692 CHARACTER(LEN=256) :: clinfo ! info character 693 CHARACTER(LEN= 12), DIMENSION( 4) :: cltmp ! temporary character693 CHARACTER(LEN= 12), DIMENSION(5) :: cltmp ! temporary character 694 694 INTEGER :: if90id ! nf90 file identifier 695 695 INTEGER :: idmy ! dummy variable … … 716 716 ENDIF 717 717 ! define the dimension variables if it is not already done 718 IF(iom_file(kiomid)%nlev == jpk ) THEN 719 cltmp = (/ 'nav_lon ', 'nav_lat ', 'nav_lev ', 'time_counter' /) 720 ELSE 721 cltmp = (/ 'nav_lon ', 'nav_lat ', 'numcat ', 'time_counter' /) 722 ENDIF 718 cltmp = (/ 'nav_lon', 'nav_lat', 'nav_lev', 'time_counter', 'numcat' /) 723 719 CALL iom_nf90_check(NF90_DEF_VAR( if90id, TRIM(cltmp(1)), NF90_FLOAT , (/ 1, 2 /), iom_file(kiomid)%nvid(1) ), clinfo) 724 720 CALL iom_nf90_check(NF90_DEF_VAR( if90id, TRIM(cltmp(2)), NF90_FLOAT , (/ 1, 2 /), iom_file(kiomid)%nvid(2) ), clinfo) … … 728 724 iom_file(kiomid)%nvars = 4 729 725 iom_file(kiomid)%luld(1:4) = (/ .FALSE., .FALSE., .FALSE., .TRUE. /) 730 iom_file(kiomid)%cn_var(1:4) = cltmp 731 iom_file(kiomid)%ndims(1:4) = (/ 2, 2, 1, 1 /) 726 iom_file(kiomid)%cn_var(1:4) = cltmp(1:4) 727 iom_file(kiomid)%ndims(1:4) = (/ 2, 2, 1, 1 /) 728 IF( NF90_INQ_DIMID( if90id, 'numcat', idmy ) == nf90_noerr ) THEN ! add a 5th variable corresponding to the 5th dimension 729 CALL iom_nf90_check(NF90_DEF_VAR( if90id, TRIM(cltmp(5)), NF90_FLOAT , (/ 5 /), iom_file(kiomid)%nvid(5) ), clinfo) 730 iom_file(kiomid)%nvars = 5 731 iom_file(kiomid)%luld(5) = .FALSE. 732 iom_file(kiomid)%cn_var(5) = cltmp(5) 733 iom_file(kiomid)%ndims(5) = 1 734 ENDIF 732 735 ! trick: defined to 0 to say that dimension variables are defined but not yet written 733 736 iom_file(kiomid)%dimsz(1, 1) = 0 … … 841 844 CALL iom_nf90_check( NF90_INQ_VARID( if90id, 'nav_lat' , idmy ) , clinfo ) 842 845 CALL iom_nf90_check( NF90_PUT_VAR ( if90id, idmy, gphit(ix1:ix2, iy1:iy2) ), clinfo ) 843 IF(iom_file(kiomid)%nlev == jpk ) THEN 844 !NEMO 845 CALL iom_nf90_check( NF90_INQ_VARID( if90id, 'nav_lev' , idmy ), clinfo ) 846 CALL iom_nf90_check( NF90_PUT_VAR ( if90id, idmy, gdept_1d ), clinfo ) 847 ELSE 848 CALL iom_nf90_check( NF90_INQ_VARID( if90id, 'numcat' , idmy ), clinfo) 846 CALL iom_nf90_check( NF90_INQ_VARID( if90id, 'nav_lev' , idmy ), clinfo ) 847 CALL iom_nf90_check( NF90_PUT_VAR ( if90id, idmy, gdept_1d ), clinfo ) 848 IF( NF90_INQ_VARID( if90id, 'numcat', idmy ) == nf90_noerr ) THEN 849 849 CALL iom_nf90_check( NF90_PUT_VAR ( if90id, idmy, (/ (idlv, idlv = 1,iom_file(kiomid)%nlev) /)), clinfo ) 850 850 ENDIF -
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/OCE/SBC/geo2ocean.F90
r10297 r10377 10 10 !! 3.7 ! 11-2015 (G. Madec) remove the unused repere and repcmo routines 11 11 !!---------------------------------------------------------------------- 12 #if defined key_agrif13 !clem: these lines do not seem necessary anymore14 !!DIR$ OPTIMIZE (-O 1) ! cray formulation15 # if defined __INTEL_COMPILER16 !acc: still breaks on at least one Ivybridge cluster with ifort 17.0.4 without this directive17 !DIR$ OPTIMIZE:1 ! intel formulation18 # endif19 #endif20 12 !!---------------------------------------------------------------------- 21 13 !! rot_rep : Rotate the Repere: geographic grid <==> stretched coordinates grid … … 81 73 IF(lwp) WRITE(numout,*) ' ~~~~~~~~ ' 82 74 ! 83 CALL angle ! initialization of the transformation75 CALL angle( glamt, gphit, glamu, gphiu, glamv, gphiv, glamf, gphif ) ! initialization of the transformation 84 76 lmust_init = .FALSE. 85 77 ENDIF … … 126 118 127 119 128 SUBROUTINE angle 120 SUBROUTINE angle( plamt, pphit, plamu, pphiu, plamv, pphiv, plamf, pphif ) 129 121 !!---------------------------------------------------------------------- 130 122 !! *** ROUTINE angle *** … … 138 130 !! ** Action : - gsint, gcost, gsinu, gcosu, gsinv, gcosv, gsinf, gcosf 139 131 !!---------------------------------------------------------------------- 132 ! WARNING: for an unexplained reason, we need to pass all glam, gphi arrays as input parameters in 133 ! order to get AGRIF working with -03 compilation option 134 REAL(wp), DIMENSION(jpi,jpj), INTENT(in ) :: plamt, pphit, plamu, pphiu, plamv, pphiv, plamf, pphif 135 ! 140 136 INTEGER :: ji, jj ! dummy loop indices 141 137 INTEGER :: ierr ! local integer … … 167 163 DO ji = fs_2, jpi ! vector opt. 168 164 ! 169 zlam = glamt(ji,jj) ! north pole direction & modulous (at t-point)170 zphi = gphit(ji,jj)165 zlam = plamt(ji,jj) ! north pole direction & modulous (at t-point) 166 zphi = pphit(ji,jj) 171 167 zxnpt = 0. - 2. * COS( rad*zlam ) * TAN( rpi/4. - rad*zphi/2. ) 172 168 zynpt = 0. - 2. * SIN( rad*zlam ) * TAN( rpi/4. - rad*zphi/2. ) 173 169 znnpt = zxnpt*zxnpt + zynpt*zynpt 174 170 ! 175 zlam = glamu(ji,jj) ! north pole direction & modulous (at u-point)176 zphi = gphiu(ji,jj)171 zlam = plamu(ji,jj) ! north pole direction & modulous (at u-point) 172 zphi = pphiu(ji,jj) 177 173 zxnpu = 0. - 2. * COS( rad*zlam ) * TAN( rpi/4. - rad*zphi/2. ) 178 174 zynpu = 0. - 2. * SIN( rad*zlam ) * TAN( rpi/4. - rad*zphi/2. ) 179 175 znnpu = zxnpu*zxnpu + zynpu*zynpu 180 176 ! 181 zlam = glamv(ji,jj) ! north pole direction & modulous (at v-point)182 zphi = gphiv(ji,jj)177 zlam = plamv(ji,jj) ! north pole direction & modulous (at v-point) 178 zphi = pphiv(ji,jj) 183 179 zxnpv = 0. - 2. * COS( rad*zlam ) * TAN( rpi/4. - rad*zphi/2. ) 184 180 zynpv = 0. - 2. * SIN( rad*zlam ) * TAN( rpi/4. - rad*zphi/2. ) 185 181 znnpv = zxnpv*zxnpv + zynpv*zynpv 186 182 ! 187 zlam = glamf(ji,jj) ! north pole direction & modulous (at f-point)188 zphi = gphif(ji,jj)183 zlam = plamf(ji,jj) ! north pole direction & modulous (at f-point) 184 zphi = pphif(ji,jj) 189 185 zxnpf = 0. - 2. * COS( rad*zlam ) * TAN( rpi/4. - rad*zphi/2. ) 190 186 zynpf = 0. - 2. * SIN( rad*zlam ) * TAN( rpi/4. - rad*zphi/2. ) 191 187 znnpf = zxnpf*zxnpf + zynpf*zynpf 192 188 ! 193 zlam = glamv(ji,jj ) ! j-direction: v-point segment direction (around t-point)194 zphi = gphiv(ji,jj )195 zlan = glamv(ji,jj-1)196 zphh = gphiv(ji,jj-1)189 zlam = plamv(ji,jj ) ! j-direction: v-point segment direction (around t-point) 190 zphi = pphiv(ji,jj ) 191 zlan = plamv(ji,jj-1) 192 zphh = pphiv(ji,jj-1) 197 193 zxvvt = 2. * COS( rad*zlam ) * TAN( rpi/4. - rad*zphi/2. ) & 198 194 & - 2. * COS( rad*zlan ) * TAN( rpi/4. - rad*zphh/2. ) … … 202 198 znvvt = MAX( znvvt, 1.e-14 ) 203 199 ! 204 zlam = glamf(ji,jj ) ! j-direction: f-point segment direction (around u-point)205 zphi = gphif(ji,jj )206 zlan = glamf(ji,jj-1)207 zphh = gphif(ji,jj-1)200 zlam = plamf(ji,jj ) ! j-direction: f-point segment direction (around u-point) 201 zphi = pphif(ji,jj ) 202 zlan = plamf(ji,jj-1) 203 zphh = pphif(ji,jj-1) 208 204 zxffu = 2. * COS( rad*zlam ) * TAN( rpi/4. - rad*zphi/2. ) & 209 205 & - 2. * COS( rad*zlan ) * TAN( rpi/4. - rad*zphh/2. ) … … 213 209 znffu = MAX( znffu, 1.e-14 ) 214 210 ! 215 zlam = glamf(ji ,jj) ! i-direction: f-point segment direction (around v-point)216 zphi = gphif(ji ,jj)217 zlan = glamf(ji-1,jj)218 zphh = gphif(ji-1,jj)211 zlam = plamf(ji ,jj) ! i-direction: f-point segment direction (around v-point) 212 zphi = pphif(ji ,jj) 213 zlan = plamf(ji-1,jj) 214 zphh = pphif(ji-1,jj) 219 215 zxffv = 2. * COS( rad*zlam ) * TAN( rpi/4. - rad*zphi/2. ) & 220 216 & - 2. * COS( rad*zlan ) * TAN( rpi/4. - rad*zphh/2. ) … … 224 220 znffv = MAX( znffv, 1.e-14 ) 225 221 ! 226 zlam = glamu(ji,jj+1) ! j-direction: u-point segment direction (around f-point)227 zphi = gphiu(ji,jj+1)228 zlan = glamu(ji,jj )229 zphh = gphiu(ji,jj )222 zlam = plamu(ji,jj+1) ! j-direction: u-point segment direction (around f-point) 223 zphi = pphiu(ji,jj+1) 224 zlan = plamu(ji,jj ) 225 zphh = pphiu(ji,jj ) 230 226 zxuuf = 2. * COS( rad*zlam ) * TAN( rpi/4. - rad*zphi/2. ) & 231 227 & - 2. * COS( rad*zlan ) * TAN( rpi/4. - rad*zphh/2. ) … … 257 253 DO jj = 2, jpjm1 258 254 DO ji = fs_2, jpi ! vector opt. 259 IF( MOD( ABS( glamv(ji,jj) - glamv(ji,jj-1) ), 360. ) < 1.e-8 ) THEN255 IF( MOD( ABS( plamv(ji,jj) - plamv(ji,jj-1) ), 360. ) < 1.e-8 ) THEN 260 256 gsint(ji,jj) = 0. 261 257 gcost(ji,jj) = 1. 262 258 ENDIF 263 IF( MOD( ABS( glamf(ji,jj) - glamf(ji,jj-1) ), 360. ) < 1.e-8 ) THEN259 IF( MOD( ABS( plamf(ji,jj) - plamf(ji,jj-1) ), 360. ) < 1.e-8 ) THEN 264 260 gsinu(ji,jj) = 0. 265 261 gcosu(ji,jj) = 1. 266 262 ENDIF 267 IF( ABS( gphif(ji,jj) - gphif(ji-1,jj) ) < 1.e-8 ) THEN263 IF( ABS( pphif(ji,jj) - pphif(ji-1,jj) ) < 1.e-8 ) THEN 268 264 gsinv(ji,jj) = 0. 269 265 gcosv(ji,jj) = 1. 270 266 ENDIF 271 IF( MOD( ABS( glamu(ji,jj) - glamu(ji,jj+1) ), 360. ) < 1.e-8 ) THEN267 IF( MOD( ABS( plamu(ji,jj) - plamu(ji,jj+1) ), 360. ) < 1.e-8 ) THEN 272 268 gsinf(ji,jj) = 0. 273 269 gcosf(ji,jj) = 1. … … 457 453 IF(lwp) WRITE(numout,*) ' obs_rot : geographic <--> stretched' 458 454 IF(lwp) WRITE(numout,*) ' ~~~~~~~ coordinate transformation' 459 CALL angle ! initialization of the transformation455 CALL angle( glamt, gphit, glamu, gphiu, glamv, gphiv, glamf, gphif ) ! initialization of the transformation 460 456 lmust_init = .FALSE. 461 457 ENDIF -
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/TOP/PISCES/P4Z/p4zmeso.F90
r10368 r10377 252 252 DEALLOCATE( zw3d ) 253 253 ENDIF 254 ! 255 IF (ln_ligand) DEALLOCATE( zz2ligprod ) 254 256 ! 255 257 IF(ln_ctl) THEN ! print mean trends (used for debugging) -
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/TOP/PISCES/P4Z/p4zmicro.F90
r10368 r10377 205 205 ENDIF 206 206 ! 207 IF (ln_ligand) DEALLOCATE( zzligprod ) 208 ! 207 209 IF(ln_ctl) THEN ! print mean trends (used for debugging) 208 210 WRITE(charout, FMT="('micro')") -
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/TOP/PISCES/P4Z/p4zsink.F90
r10368 r10377 16 16 USE trc ! passive tracers common variables 17 17 USE sms_pisces ! PISCES Source Minus Sink variables 18 USE trcsink ! General routine to compute sedimentation 18 19 USE prtctl_trc ! print control for debugging 19 20 USE iom ! I/O manager … … 59 60 !!--------------------------------------------------------------------- 60 61 INTEGER, INTENT(in) :: kt, knt 61 INTEGER :: ji, jj, jk, jit 62 INTEGER :: iiter1, iiter2 63 REAL(wp) :: zagg1, zagg2, zagg3, zagg4 64 REAL(wp) :: zagg , zaggfe, zaggdoc, zaggdoc2, zaggdoc3 65 REAL(wp) :: zfact, zwsmax, zmax 62 INTEGER :: ji, jj, jk 66 63 CHARACTER (len=25) :: charout 64 REAL(wp) :: zmax, zfact 67 65 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zw3d 68 66 REAL(wp), ALLOCATABLE, DIMENSION(:,: ) :: zw2d … … 70 68 ! 71 69 IF( ln_timing ) CALL timing_start('p4z_sink') 72 73 70 74 71 ! Initialization of some global variables … … 97 94 98 95 ! 99 ! OA This is (I hope) a temporary solution for the problem that may100 ! OA arise in specific situation where the CFL criterion is broken101 ! OA for vertical sedimentation of particles. To avoid this, a time102 ! OA splitting algorithm has been coded. A specific maximum103 ! OA iteration number is provided and may be specified in the namelist104 ! OA This is to avoid very large iteration number when explicit free105 ! OA surface is used (for instance). When niter?max is set to 1,106 ! OA this computation is skipped. The crude old threshold method is107 ! OA then applied. This also happens when niter exceeds nitermax.108 IF( MAX( niter1max, niter2max ) == 1 ) THEN109 iiter1 = 1110 iiter2 = 1111 ELSE112 iiter1 = 1113 iiter2 = 1114 DO jk = 1, jpkm1115 DO jj = 1, jpj116 DO ji = 1, jpi117 IF( tmask(ji,jj,jk) == 1) THEN118 zwsmax = 0.5 * e3t_n(ji,jj,jk) / xstep119 iiter1 = MAX( iiter1, INT( wsbio3(ji,jj,jk) / zwsmax ) )120 iiter2 = MAX( iiter2, INT( wsbio4(ji,jj,jk) / zwsmax ) )121 ENDIF122 END DO123 END DO124 END DO125 IF( lk_mpp ) THEN126 CALL mpp_max( 'p4zsink', iiter1 )127 CALL mpp_max( 'p4zsink', iiter2 )128 ENDIF129 iiter1 = MIN( iiter1, niter1max )130 iiter2 = MIN( iiter2, niter2max )131 ENDIF132 133 DO jk = 1,jpkm1134 DO jj = 1, jpj135 DO ji = 1, jpi136 IF( tmask(ji,jj,jk) == 1 ) THEN137 zwsmax = 0.5 * e3t_n(ji,jj,jk) / xstep138 wsbio3(ji,jj,jk) = MIN( wsbio3(ji,jj,jk), zwsmax * REAL( iiter1, wp ) )139 wsbio4(ji,jj,jk) = MIN( wsbio4(ji,jj,jk), zwsmax * REAL( iiter2, wp ) )140 ENDIF141 END DO142 END DO143 END DO144 145 96 ! Initializa to zero all the sinking arrays 146 97 ! ----------------------------------------- … … 154 105 ! Compute the sedimentation term using p4zsink2 for all the sinking particles 155 106 ! ----------------------------------------------------- 156 DO jit = 1, iiter1 157 CALL p4z_sink2( wsbio3, sinking , jppoc, iiter1 ) 158 CALL p4z_sink2( wsbio3, sinkfer , jpsfe, iiter1 ) 159 END DO 160 161 DO jit = 1, iiter2 162 CALL p4z_sink2( wsbio4, sinking2, jpgoc, iiter2 ) 163 CALL p4z_sink2( wsbio4, sinkfer2, jpbfe, iiter2 ) 164 CALL p4z_sink2( wsbio4, sinksil , jpgsi, iiter2 ) 165 CALL p4z_sink2( wsbio4, sinkcal , jpcal, iiter2 ) 166 END DO 107 CALL trc_sink( kt, wsbio3, sinking , jppoc, rfact2 ) 108 CALL trc_sink( kt, wsbio3, sinkfer , jpsfe, rfact2 ) 109 CALL trc_sink( kt, wsbio4, sinking2, jpgoc, rfact2 ) 110 CALL trc_sink( kt, wsbio4, sinkfer2, jpbfe, rfact2 ) 111 CALL trc_sink( kt, wsbio4, sinksil , jpgsi, rfact2 ) 112 CALL trc_sink( kt, wsbio4, sinkcal , jpcal, rfact2 ) 167 113 168 114 IF( ln_p5z ) THEN … … 174 120 ! Compute the sedimentation term using p4zsink2 for all the sinking particles 175 121 ! ----------------------------------------------------- 176 DO jit = 1, iiter1 177 CALL p4z_sink2( wsbio3, sinkingn , jppon, iiter1 ) 178 CALL p4z_sink2( wsbio3, sinkingp , jppop, iiter1 ) 179 END DO 180 181 DO jit = 1, iiter2 182 CALL p4z_sink2( wsbio4, sinking2n, jpgon, iiter2 ) 183 CALL p4z_sink2( wsbio4, sinking2p, jpgop, iiter2 ) 184 END DO 122 CALL trc_sink( kt, wsbio3, sinkingn , jppon, rfact2 ) 123 CALL trc_sink( kt, wsbio3, sinkingp , jppop, rfact2 ) 124 CALL trc_sink( kt, wsbio4, sinking2n, jpgon, rfact2 ) 125 CALL trc_sink( kt, wsbio4, sinking2p, jpgop, rfact2 ) 185 126 ENDIF 186 127 187 128 IF( ln_ligand ) THEN 188 129 wsfep (:,:,:) = wfep 189 DO jk = 1,jpkm1190 DO jj = 1, jpj191 DO ji = 1, jpi192 IF( tmask(ji,jj,jk) == 1 ) THEN193 zwsmax = 0.5 * e3t_n(ji,jj,jk) / xstep194 wsfep(ji,jj,jk) = MIN( wsfep(ji,jj,jk), zwsmax * REAL( iiter1, wp ) )195 ENDIF196 END DO197 END DO198 END DO199 130 ! 200 131 sinkfep(:,:,:) = 0.e0 201 DO jit = 1, iiter1 202 CALL p4z_sink2( wsfep, sinkfep , jpfep, iiter1 ) 203 END DO 132 CALL trc_sink( kt, wsfep, sinkfep , jpfep, rfact2 ) 204 133 ENDIF 205 134 … … 281 210 END SUBROUTINE p4z_sink_init 282 211 283 284 SUBROUTINE p4z_sink2( pwsink, psinkflx, jp_tra, kiter )285 !!---------------------------------------------------------------------286 !! *** ROUTINE p4z_sink2 ***287 !!288 !! ** Purpose : Compute the sedimentation terms for the various sinking289 !! particles. The scheme used to compute the trends is based290 !! on MUSCL.291 !!292 !! ** Method : - this ROUTINE compute not exactly the advection but the293 !! transport term, i.e. div(u*tra).294 !!---------------------------------------------------------------------295 INTEGER , INTENT(in ) :: jp_tra ! tracer index index296 INTEGER , INTENT(in ) :: kiter ! number of iterations for time-splitting297 REAL(wp), INTENT(in ), DIMENSION(jpi,jpj,jpk) :: pwsink ! sinking speed298 REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk) :: psinkflx ! sinking fluxe299 !300 INTEGER :: ji, jj, jk, jn301 REAL(wp) :: zigma,zew,zign, zflx, zstep302 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ztraz, zakz, zwsink2, ztrb303 !!---------------------------------------------------------------------304 !305 IF( ln_timing ) CALL timing_start('p4z_sink2')306 !307 zstep = rfact2 / REAL( kiter, wp ) / 2.308 309 ztraz(:,:,:) = 0.e0310 zakz (:,:,:) = 0.e0311 ztrb (:,:,:) = trb(:,:,:,jp_tra)312 313 DO jk = 1, jpkm1314 zwsink2(:,:,jk+1) = -pwsink(:,:,jk) / rday * tmask(:,:,jk+1)315 END DO316 zwsink2(:,:,1) = 0.e0317 318 319 ! Vertical advective flux320 DO jn = 1, 2321 ! first guess of the slopes interior values322 DO jk = 2, jpkm1323 ztraz(:,:,jk) = ( trb(:,:,jk-1,jp_tra) - trb(:,:,jk,jp_tra) ) * tmask(:,:,jk)324 END DO325 ztraz(:,:,1 ) = 0.0326 ztraz(:,:,jpk) = 0.0327 328 ! slopes329 DO jk = 2, jpkm1330 DO jj = 1,jpj331 DO ji = 1, jpi332 zign = 0.25 + SIGN( 0.25, ztraz(ji,jj,jk) * ztraz(ji,jj,jk+1) )333 zakz(ji,jj,jk) = ( ztraz(ji,jj,jk) + ztraz(ji,jj,jk+1) ) * zign334 END DO335 END DO336 END DO337 338 ! Slopes limitation339 DO jk = 2, jpkm1340 DO jj = 1, jpj341 DO ji = 1, jpi342 zakz(ji,jj,jk) = SIGN( 1., zakz(ji,jj,jk) ) * &343 & MIN( ABS( zakz(ji,jj,jk) ), 2. * ABS(ztraz(ji,jj,jk+1)), 2. * ABS(ztraz(ji,jj,jk) ) )344 END DO345 END DO346 END DO347 348 ! vertical advective flux349 DO jk = 1, jpkm1350 DO jj = 1, jpj351 DO ji = 1, jpi352 zigma = zwsink2(ji,jj,jk+1) * zstep / e3w_n(ji,jj,jk+1)353 zew = zwsink2(ji,jj,jk+1)354 psinkflx(ji,jj,jk+1) = -zew * ( trb(ji,jj,jk,jp_tra) - 0.5 * ( 1 + zigma ) * zakz(ji,jj,jk) ) * zstep355 END DO356 END DO357 END DO358 !359 ! Boundary conditions360 psinkflx(:,:,1 ) = 0.e0361 psinkflx(:,:,jpk) = 0.e0362 363 DO jk=1,jpkm1364 DO jj = 1,jpj365 DO ji = 1, jpi366 zflx = ( psinkflx(ji,jj,jk) - psinkflx(ji,jj,jk+1) ) / e3t_n(ji,jj,jk)367 trb(ji,jj,jk,jp_tra) = trb(ji,jj,jk,jp_tra) + zflx368 END DO369 END DO370 END DO371 372 ENDDO373 374 DO jk = 1,jpkm1375 DO jj = 1,jpj376 DO ji = 1, jpi377 zflx = ( psinkflx(ji,jj,jk) - psinkflx(ji,jj,jk+1) ) / e3t_n(ji,jj,jk)378 ztrb(ji,jj,jk) = ztrb(ji,jj,jk) + 2. * zflx379 END DO380 END DO381 END DO382 383 trb(:,:,:,jp_tra) = ztrb(:,:,:)384 psinkflx(:,:,:) = 2. * psinkflx(:,:,:)385 !386 IF( ln_timing ) CALL timing_stop('p4z_sink2')387 !388 END SUBROUTINE p4z_sink2389 390 391 212 INTEGER FUNCTION p4z_sink_alloc() 392 213 !!---------------------------------------------------------------------- -
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/TOP/PISCES/P4Z/p4zsms.F90
r10345 r10377 74 74 CALL p4z_che ! initialize the chemical constants 75 75 CALL ahini_for_at(hi) ! set PH at kt=nit000 76 t_oce_co2_flx_cum = 0._wp77 76 ELSE 78 77 CALL p4z_rst( nittrc000, 'READ' ) !* read or initialize all required fields … … 189 188 !! 190 189 NAMELIST/nampisbio/ nrdttrc, wsbio, xkmort, ferat3, wsbio2, wsbio2max, wsbio2scale, & 191 & niter1max, niter2max,wfep, ldocp, ldocz, lthet, &190 & wfep, ldocp, ldocz, lthet, & 192 191 & no3rat3, po4rat3 193 192 ! … … 223 222 WRITE(numout,*) ' Big particles maximum sinking speed wsbio2max =', wsbio2max 224 223 WRITE(numout,*) ' Big particles sinking speed length scale wsbio2scale =', wsbio2scale 225 WRITE(numout,*) ' Maximum number of iterations for POC niter1max =', niter1max226 WRITE(numout,*) ' Maximum number of iterations for GOC niter2max =', niter2max227 224 IF( ln_ligand ) THEN 228 225 WRITE(numout,*) ' FeP sinking speed wfep =', wfep -
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/TOP/PISCES/sms_pisces.F90
r10368 r10377 36 36 37 37 !!* Biological parameters 38 INTEGER :: niter1max, niter2max !: Maximum number of iterations for sinking39 38 REAL(wp) :: rno3 !: ??? 40 39 REAL(wp) :: o2ut !: ??? -
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/TOP/trcini.F90
r10372 r10377 205 205 USE trcldf , ONLY: trc_ldf_ini 206 206 USE trcrad , ONLY: trc_rad_ini 207 USE trcsink, ONLY: trc_sink_ini 207 208 ! 208 209 INTEGER :: ierr … … 214 215 ! ! vertical diffusion: always implicit time stepping scheme 215 216 CALL trc_rad_ini ! positivity of passive tracers 217 CALL trc_sink_ini ! Vertical sedimentation of particles 216 218 ! 217 219 END SUBROUTINE trc_ini_trp
Note: See TracChangeset
for help on using the changeset viewer.