/[MITgcm]/MITgcm/verification/bottom_ctrl_5x5/code_ad/addummy_in_stepping.F
ViewVC logotype

Contents of /MITgcm/verification/bottom_ctrl_5x5/code_ad/addummy_in_stepping.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (show annotations) (download)
Wed Jun 7 02:00:01 2006 UTC (17 years, 10 months ago) by heimbach
Branch: MAIN
CVS Tags: checkpoint58l_post, checkpoint58u_post, checkpoint58w_post, checkpoint58r_post, checkpoint58n_post, checkpoint58x_post, checkpoint58t_post, checkpoint58h_post, checkpoint58q_post, checkpoint58j_post, checkpoint59e, checkpoint59d, checkpoint59g, checkpoint59f, checkpoint59a, checkpoint59c, checkpoint59b, checkpoint59h, checkpoint59, checkpoint58i_post, checkpoint58o_post, checkpoint58y_post, checkpoint58k_post, checkpoint58v_post, checkpoint58s_post, checkpoint58p_post, checkpoint58m_post
Adding verification for 5x5 box (4-layer) bottom topography control

1 C $Header: /u/gcmpack/development/heimbach/ctrl_bottom_topo/global4x4/code/addummy_in_stepping.F,v 1.5 2005/06/24 10:14:13 mlosch Exp $
2
3 #include "CPP_OPTIONS.h"
4
5 CBOP
6 C !ROUTINE: addummy_in_stepping
7 C !INTERFACE:
8 subroutine addummy_in_stepping( mytime, myiter, myThid )
9
10 C !DESCRIPTION: \bv
11 C *==========================================================*
12 C | SUBROUTINE addummy_in_stepping |
13 C *==========================================================*
14 C Extract adjoint variable from TAMC/TAF-generated
15 C adjoint common blocks, contained in adcommon.h
16 C and write fields to file;
17 C Make sure common blocks in adcommon.h are up-to-date
18 C w.r.t. current adjoint code.
19 C *==========================================================*
20 C | SUBROUTINE addummy_in_stepping |
21 C *==========================================================*
22 C \ev
23
24 C !USES:
25 IMPLICIT NONE
26
27 C == Global variables ===
28 #include "SIZE.h"
29 #include "EEPARAMS.h"
30 #include "PARAMS.h"
31 #include "adcommon.h"
32
33 LOGICAL DIFFERENT_MULTIPLE
34 EXTERNAL DIFFERENT_MULTIPLE
35 INTEGER IO_ERRCOUNT
36 EXTERNAL IO_ERRCOUNT
37
38 C !INPUT/OUTPUT PARAMETERS:
39 C == Routine arguments ==
40 C myIter - iteration counter for this thread
41 C myTime - time counter for this thread
42 C myThid - Thread number for this instance of the routine.
43 integer myThid
44 integer myiter
45 _RL mytime
46
47 C !LOCAL VARIABLES:
48 c == local variables ==
49 C suff - Hold suffix part of a filename
50 C beginIOErrCount - Begin and end IO error counts
51 C endIOErrCount
52 C msgBuf - Error message buffer
53 CHARACTER*(MAX_LEN_FNAM) suff
54 INTEGER beginIOErrCount
55 INTEGER endIOErrCount
56 CHARACTER*(MAX_LEN_MBUF) msgBuf
57
58 c == end of interface ==
59 CEOP
60
61 #if (defined (ALLOW_ADJOINT_RUN) || defined (ALLOW_ADMTLM))
62 #ifdef ALLOW_AUTODIFF_MONITOR
63
64 call TIMER_START('I/O (WRITE) [ADJOINT LOOP]', myThid )
65
66 IF (
67 & DIFFERENT_MULTIPLE(ADJdumpFreq,mytime,deltaTClock)
68 & ) THEN
69
70 write(*,*) 'myIter= ',myiter
71
72 _BARRIER
73 _BEGIN_MASTER( myThid )
74
75 C-- Set suffix for this set of data files.
76 WRITE(suff,'(I10.10)') myIter
77 writeBinaryPrec = writeStatePrec
78
79 C-- Read IO error counter
80 beginIOErrCount = IO_ERRCOUNT(myThid)
81
82 Cml CALL WRITE_FLD_XY_RL ( 'ADJtaux.',suff, adfu, myIter, myThid)
83 Cml CALL WRITE_FLD_XY_RL ( 'ADJtauy.',suff, adfv, myIter, myThid)
84 Cml CALL WRITE_FLD_XY_RL ( 'ADJqnet.',suff, adqnet, myIter, myThid)
85 Cml CALL WRITE_FLD_XY_RL ( 'ADJempr.',suff, adempmr, myIter, myThid)
86 c
87 Cml CALL WRITE_FLD_XYZ_RL(
88 Cml & 'ADJgtnm1.',suff, adgtnm1, myIter, myThid)
89 Cml CALL WRITE_FLD_XYZ_RL(
90 Cml & 'ADJgsnm1.',suff, adgsnm1, myIter, myThid)
91 Cml CALL WRITE_FLD_XYZ_RL(
92 Cml & 'ADJgunm1.',suff, adgunm1, myIter, myThid)
93 Cml CALL WRITE_FLD_XYZ_RL(
94 Cml & 'ADJgvnm1.',suff, adgvnm1, myIter, myThid)
95 Cml#ifdef ALLOW_PASSIVE_TRACER
96 Cml CALL WRITE_FLD_XYZ_RL(
97 Cml & 'ADJgtr1nm1. ',suff, adgtr1nm1, myIter, myThid)
98 Cml#endif
99 c
100 CALL WRITE_FLD_XYZ_RL(
101 & 'ADJtheta.',suff, adtheta, myIter, myThid)
102 CALL WRITE_FLD_XYZ_RL(
103 & 'ADJsalt.',suff, adsalt, myIter, myThid)
104 CALL WRITE_FLD_XYZ_RL(
105 & 'ADJuvel.',suff, aduvel, myIter, myThid)
106 CALL WRITE_FLD_XYZ_RL(
107 & 'ADJvvel.',suff, advvel, myIter, myThid)
108 CALL WRITE_FLD_XYZ_RL(
109 & 'ADJwvel.',suff, adwvel, myIter, myThid)
110
111 Cml#ifdef ALLOW_PASSIVE_TRACER
112 Cml CALL WRITE_FLD_XYZ_RL(
113 Cml & 'ADJtr1. ',suff, adtr1, myIter, myThid)
114 Cml#endif
115 Cml#ifdef ALLOW_DIFFKR_CONTROL
116 Cml CALL WRITE_FLD_XYZ_RL ( 'ADJdiffkr.',suff, addiffkr,
117 Cml & myIter, myThid)
118 Cml#endif
119 Cml#ifdef ALLOW_KAPGM_CONTROL
120 Cml CALL WRITE_FLD_XYZ_RL ( 'ADJkagm.',suff, adkapgm,
121 Cml & myIter, myThid)
122 Cml#endif
123 #ifdef ALLOW_DEPTH_CONTROL
124 CML( Does not make sense at this point
125 CML CALL WRITE_FLD_XY_RL ( 'ADJxx_r_low.',suff,
126 CML & adxx_r_low, myIter, myThid)
127 CML)
128 CALL WRITE_FLD_XYZ_RL ( 'ADJhFacC.',suff,
129 & adhfacc, myIter, myThid)
130 CALL WRITE_FLD_XYZ_RL ( 'ADJhFacS.',suff,
131 & adhfacs, myIter, myThid)
132 CALL WRITE_FLD_XYZ_RL ( 'ADJhFacW.',suff,
133 & adhfacw, myIter, myThid)
134 CALL WRITE_FLD_XYZ_RL ( 'ADJrhFacC.',suff,
135 & adrecip_hfacc, myIter, myThid)
136 CALL WRITE_FLD_XYZ_RL ( 'ADJrhFacS.',suff,
137 & adrecip_hfacs, myIter, myThid)
138 CALL WRITE_FLD_XYZ_RL ( 'ADJrhFacW.',suff,
139 & adrecip_hfacw, myIter, myThid)
140 #endif /* ALLOW_DEPTH_CONTROL */
141
142 cph CALL WRITE_FLD_XY_RL( 'ADJ_sst.',suff, adsst, myIter, myThid)
143 cph CALL WRITE_FLD_XY_RL( 'ADJ_sss.',suff, adsss, myIter, myThid)
144
145 C-- Reread IO error counter
146 endIOErrCount = IO_ERRCOUNT(myThid)
147
148 C-- Check for IO errors
149 IF ( endIOErrCount .NE. beginIOErrCount ) THEN
150 WRITE(msgBuf,'(A)') 'S/R ADDUMMY_IN_STEPPING'
151 CALL PRINT_ERROR( msgBuf, 1 )
152 WRITE(msgBuf,'(A)') 'Error writing out model state'
153 CALL PRINT_ERROR( msgBuf, 1 )
154 WRITE(msgBuf,'(A,I10)') 'Timestep ',myIter
155 CALL PRINT_ERROR( msgBuf, 1 )
156 ELSE
157 WRITE(msgBuf,'(A,I10)')
158 & '// Model state written, timestep', myIter
159 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
160 & SQUEEZE_RIGHT, 1 )
161 WRITE(msgBuf,'(A)') ' '
162 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
163 & SQUEEZE_RIGHT, 1 )
164 ENDIF
165
166 _END_MASTER( myThid )
167 _BARRIER
168
169 ENDIF
170
171 call TIMER_STOP( 'I/O (WRITE) [ADJOINT LOOP]', myThid )
172
173 #endif /* ALLOW_AUTODIFF_MONITOR */
174 #endif /* ALLOW_ADJOINT_RUN */
175
176 end
177
178
179
180
181
182
183
184
185

  ViewVC Help
Powered by ViewVC 1.1.22