1 | MODULE step |
---|
2 | !!====================================================================== |
---|
3 | !! *** MODULE step *** |
---|
4 | !! Time-stepping : manager of the ocean, tracer and ice time stepping |
---|
5 | !!====================================================================== |
---|
6 | |
---|
7 | !!---------------------------------------------------------------------- |
---|
8 | !! stp : OPA system time-stepping |
---|
9 | !!---------------------------------------------------------------------- |
---|
10 | !! * Modules used |
---|
11 | USE oce ! ocean dynamics and tracers variables |
---|
12 | USE dom_oce ! ocean space and time domain variables |
---|
13 | USE zdf_oce ! ocean vertical physics variables |
---|
14 | USE ldftra_oce |
---|
15 | USE in_out_manager ! I/O manager |
---|
16 | USE lbclnk |
---|
17 | USE trcdia |
---|
18 | USE daymod ! calendar (day routine) |
---|
19 | USE trcstp ! passive tracer time-stepping (trc_stp routine) |
---|
20 | USE dtadyn ! Lecture and interpolation of the dynamical fields |
---|
21 | USE eosbn2 ! equation of state (eos_bn2 routine) |
---|
22 | USE trcrst ! restart for passive tracers |
---|
23 | USE stpctl ! time stepping control (stp_ctl routine) |
---|
24 | |
---|
25 | IMPLICIT NONE |
---|
26 | PRIVATE |
---|
27 | |
---|
28 | !! * Routine accessibility |
---|
29 | PUBLIC stp ! called by opa.F90 |
---|
30 | |
---|
31 | !! * Substitutions |
---|
32 | # include "domzgr_substitute.h90" |
---|
33 | !!---------------------------------------------------------------------- |
---|
34 | !! OPA 9.0 , LOCEAN-IPSL (2005) |
---|
35 | !! $Header$ |
---|
36 | !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt |
---|
37 | !!---------------------------------------------------------------------- |
---|
38 | |
---|
39 | CONTAINS |
---|
40 | |
---|
41 | SUBROUTINE stp( kstp ) |
---|
42 | !!---------------------------------------------------------------------- |
---|
43 | !! *** ROUTINE stp *** |
---|
44 | !! |
---|
45 | !! ** Purpose : - Time stepping of OPA (momentum and active tracer eqs.) |
---|
46 | !! - Time stepping of LIM (dynamic and thermodynamic eqs.) |
---|
47 | !! - Tme stepping of TRC (passive tracer eqs.) |
---|
48 | !! |
---|
49 | !! ** Method : -1- Update forcings and data |
---|
50 | !! -2- Update ocean physics |
---|
51 | !! -3- Compute the t and s trends |
---|
52 | !! -4- Update t and s |
---|
53 | !! -5- Compute the momentum trends |
---|
54 | !! -6- Update the horizontal velocity |
---|
55 | !! -7- Compute the diagnostics variables (rd,N2, div,cur,w) |
---|
56 | !! -8- Outputs and diagnostics |
---|
57 | !! |
---|
58 | !! History : |
---|
59 | !! ! 91-03 () Original code |
---|
60 | !! ! 91-11 (G. Madec) |
---|
61 | !! ! 92-06 (M. Imbard) add a first output record |
---|
62 | !! ! 96-04 (G. Madec) introduction of dynspg |
---|
63 | !! ! 96-04 (M.A. Foujols) introduction of passive tracer |
---|
64 | !! 8.0 ! 97-06 (G. Madec) new architecture of call |
---|
65 | !! 8.2 ! 97-06 (G. Madec, M. Imbard, G. Roullet) free surface |
---|
66 | !! 8.2 ! 99-02 (G. Madec, N. Grima) hpg implicit |
---|
67 | !! 8.2 ! 00-07 (J-M Molines, M. Imbard) Open Bondary Conditions |
---|
68 | !! 9.0 ! 02-06 (G. Madec) free form, suppress macro-tasking |
---|
69 | !!---------------------------------------------------------------------- |
---|
70 | !! * Arguments |
---|
71 | INTEGER, INTENT( in ) :: kstp ! ocean time-step index |
---|
72 | |
---|
73 | !! * local declarations |
---|
74 | INTEGER :: indic ! error indicator if < 0 |
---|
75 | !! --------------------------------------------------------------------- |
---|
76 | |
---|
77 | indic = 1 ! reset to no error condition |
---|
78 | |
---|
79 | CALL day( kstp ) ! Calendar |
---|
80 | |
---|
81 | CALL dta_dyn( kstp ) ! Interpolation of the dynamical fields |
---|
82 | |
---|
83 | #if defined key_passivetrc |
---|
84 | !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> |
---|
85 | ! Passive Tracer Model |
---|
86 | !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< |
---|
87 | ! N.B. ua, va, ta, sa arrays are used as workspace in this section |
---|
88 | !----------------------------------------------------------------------- |
---|
89 | |
---|
90 | CALL trc_stp( kstp, indic) ! time-stepping |
---|
91 | |
---|
92 | |
---|
93 | #endif |
---|
94 | |
---|
95 | !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> |
---|
96 | ! Control, diagnostics and outputs |
---|
97 | !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< |
---|
98 | ! ! Time loop: control and print |
---|
99 | CALL stp_ctl( kstp ) |
---|
100 | |
---|
101 | |
---|
102 | END SUBROUTINE stp |
---|
103 | |
---|
104 | !!====================================================================== |
---|
105 | END MODULE step |
---|