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

Annotation 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 - (hide 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 heimbach 1.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