37 |
#include "CG3D.h" |
#include "CG3D.h" |
38 |
#endif |
#endif |
39 |
|
|
40 |
|
#ifdef ALLOW_SHAP_FILT |
41 |
|
#include "SHAP_FILT.h" |
42 |
|
#endif |
43 |
|
#ifdef ALLOW_ZONAL_FILT |
44 |
|
#include "ZONAL_FILT.h" |
45 |
|
#endif |
46 |
|
|
47 |
#ifdef ALLOW_AUTODIFF_TAMC |
#ifdef ALLOW_AUTODIFF_TAMC |
48 |
#include "tamc.h" |
#include "tamc.h" |
49 |
#include "ctrl.h" |
#include "ctrl.h" |
130 |
CALL TIMER_STOP ('THERMODYNAMICS [THE_MAIN_LOOP]',mythid) |
CALL TIMER_STOP ('THERMODYNAMICS [THE_MAIN_LOOP]',mythid) |
131 |
|
|
132 |
#ifdef ALLOW_SHAP_FILT |
#ifdef ALLOW_SHAP_FILT |
133 |
IF (staggerTimeStep .AND. useSHAP_FILT) THEN |
IF (useSHAP_FILT .AND. |
134 |
c CALL TIMER_START('SHAP_FILT [THE_MAIN_LOOP]',myThid) |
& staggerTimeStep .AND. shap_filt_TrStagg ) THEN |
135 |
|
CALL TIMER_START('SHAP_FILT [THE_MAIN_LOOP]',myThid) |
136 |
CALL SHAP_FILT_APPLY_TS( gT, gS, myTime, myIter, myThid ) |
CALL SHAP_FILT_APPLY_TS( gT, gS, myTime, myIter, myThid ) |
137 |
c CALL TIMER_STOP ('SHAP_FILT [THE_MAIN_LOOP]',myThid) |
CALL TIMER_STOP ('SHAP_FILT [THE_MAIN_LOOP]',myThid) |
138 |
ENDIF |
ENDIF |
139 |
#endif |
#endif |
140 |
|
#ifdef ALLOW_ZONAL_FILT |
141 |
|
IF (useZONAL_FILT .AND. |
142 |
|
& staggerTimeStep .AND. zonal_filt_TrStagg ) THEN |
143 |
|
CALL TIMER_START('ZONAL_FILT_APPLY [THE_MAIN_LOOP]',myThid) |
144 |
|
CALL ZONAL_FILT_APPLY_TS( gT, gS, myThid ) |
145 |
|
CALL TIMER_STOP ('ZONAL_FILT_APPLY [THE_MAIN_LOOP]',myThid) |
146 |
|
ENDIF |
147 |
|
#endif |
148 |
|
|
149 |
C-- Step forward fields and calculate time tendency terms. |
C-- Step forward fields and calculate time tendency terms. |
150 |
IF ( momStepping ) THEN |
IF ( momStepping ) THEN |
175 |
ENDIF |
ENDIF |
176 |
#endif |
#endif |
177 |
|
|
178 |
C-- This block has been moved to the_correction_step(). We have |
C-- Apply Filters to u*,v* before SOLVE_FOR_PRESSURE |
179 |
C left this code here to indicate where the filters used to be |
#ifdef ALLOW_SHAP_FILT |
180 |
C in the algorithm before JMC moved them to after the pressure |
IF (useSHAP_FILT .AND. shap_filt_uvStar) THEN |
181 |
C solver. |
CALL TIMER_START('SHAP_FILT [THE_MAIN_LOOP]',myThid) |
182 |
C |
CALL SHAP_FILT_APPLY_UV( gUnm1,gVnm1, myTime,myIter,myThid ) |
183 |
C#ifdef ALLOW_SHAP_FILT |
IF (implicDiv2Dflow.LT.1.) THEN |
184 |
CC-- Step forward all tiles, filter and exchange. |
C-- Explicit+Implicit part of the Barotropic Flow Divergence |
185 |
C CALL TIMER_START('SHAP_FILT [THE_MAIN_LOOP]',myThid) |
C => Filtering of uVel,vVel is necessary |
186 |
C CALL SHAP_FILT_APPLY( |
CALL SHAP_FILT_APPLY_UV( uVel,vVel, myTime,myIter,myThid ) |
187 |
C I gUnm1, gVnm1, gTnm1, gSnm1, |
ENDIF |
188 |
C I myTime, myIter, myThid ) |
CALL TIMER_STOP ('SHAP_FILT [THE_MAIN_LOOP]',myThid) |
189 |
C IF (implicDiv2Dflow.LT.1.) THEN |
ENDIF |
190 |
CC-- Explicit+Implicit part of the Barotropic Flow Divergence |
#endif |
191 |
CC => Filtering of uVel,vVel is necessary |
#ifdef ALLOW_ZONAL_FILT |
192 |
C CALL SHAP_FILT_UV( uVel, vVel, myTime, myThid ) |
IF (useZONAL_FILT .AND. zonal_filt_uvStar) THEN |
193 |
C ENDIF |
CALL TIMER_START('ZONAL_FILT_APPLY [THE_MAIN_LOOP]',myThid) |
194 |
C CALL TIMER_STOP ('SHAP_FILT [THE_MAIN_LOOP]',myThid) |
CALL ZONAL_FILT_APPLY_UV( gUnm1, gVnm1, myThid ) |
195 |
C#endif |
IF (implicDiv2Dflow.LT.1.) THEN |
196 |
C |
C-- Explicit+Implicit part of the Barotropic Flow Divergence |
197 |
C#ifdef ALLOW_ZONAL_FILT |
C => Filtering of uVel,vVel is necessary |
198 |
C IF (zonal_filt_lat.LT.90.) THEN |
CALL ZONAL_FILT_APPLY_UV( uVel, vVel, myThid ) |
199 |
C CALL TIMER_START('ZONAL_FILT_APPLY [THE_MAIN_LOOP]',myThid) |
ENDIF |
200 |
C CALL ZONAL_FILT_APPLY( |
CALL TIMER_STOP ('ZONAL_FILT_APPLY [THE_MAIN_LOOP]',myThid) |
201 |
C U gUnm1, gVnm1, gTnm1, gSnm1, |
ENDIF |
202 |
C I myThid ) |
#endif |
|
C CALL TIMER_STOP ('ZONAL_FILT_APPLY [THE_MAIN_LOOP]',myThid) |
|
|
C ENDIF |
|
|
C#endif |
|
203 |
|
|
204 |
C-- Solve elliptic equation(s). |
C-- Solve elliptic equation(s). |
205 |
C Two-dimensional only for conventional hydrostatic or |
C Two-dimensional only for conventional hydrostatic or |