/[MITgcm]/MITgcm/pkg/exf/exf_ad_dump.F
ViewVC logotype

Contents of /MITgcm/pkg/exf/exf_ad_dump.F

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


Revision 1.2 - (show annotations) (download)
Thu Oct 25 19:08:08 2007 UTC (16 years, 7 months ago) by heimbach
Branch: MAIN
CVS Tags: checkpoint60, checkpoint61, checkpoint59q, checkpoint59p, checkpoint59r, checkpoint59m, checkpoint59l, checkpoint59o, checkpoint59n, checkpoint59k, checkpoint59j, checkpoint61f, checkpoint61g, checkpoint61d, checkpoint61e, checkpoint61b, checkpoint61c, checkpoint61a, checkpoint61n, checkpoint61o, checkpoint61l, checkpoint61m, checkpoint61j, checkpoint61k, checkpoint61h, checkpoint61i, checkpoint61t, checkpoint61u, checkpoint61r, checkpoint61s, checkpoint61p, checkpoint61q
Changes since 1.1: +13 -12 lines
Fix 1000 bugs.

1 C $Header: /u/gcmpack/MITgcm/pkg/exf/exf_ad_dump.F,v 1.1 2007/10/25 18:41:04 heimbach Exp $
2 C $Name: $
3
4 #include "AD_CONFIG.h"
5 #include "PACKAGES_CONFIG.h"
6 #include "EXF_OPTIONS.h"
7
8 CBOP
9 C !ROUTINE: exf_ad_dump
10 C !INTERFACE:
11 subroutine exf_ad_dump( mytime, myiter, myThid )
12
13 C !DESCRIPTION: \bv
14 C *==========================================================*
15 C | SUBROUTINE exf_ad_dump |
16 C *==========================================================*
17 C Extract adjoint variable from TAMC/TAF-generated
18 C adjoint common blocks, contained in adcommon.h
19 C and write fields to file;
20 C Make sure common blocks in adcommon.h are up-to-date
21 C w.r.t. current adjoint code.
22 C *==========================================================*
23 C | SUBROUTINE exf_ad_dump |
24 C *==========================================================*
25 C \ev
26
27 C !USES:
28 IMPLICIT NONE
29
30 C == Global variables ===
31 #include "SIZE.h"
32 #include "EEPARAMS.h"
33 #include "PARAMS.h"
34 #ifdef ALLOW_MNC
35 #include "MNC_PARAMS.h"
36 #endif
37 #include "GRID.h"
38 #ifdef ALLOW_AUTODIFF_MONITOR
39 # include "adcommon.h"
40 #endif
41
42 LOGICAL DIFFERENT_MULTIPLE
43 EXTERNAL DIFFERENT_MULTIPLE
44 INTEGER IO_ERRCOUNT
45 EXTERNAL IO_ERRCOUNT
46
47 C !INPUT/OUTPUT PARAMETERS:
48 C == Routine arguments ==
49 C myIter - iteration counter for this thread
50 C myTime - time counter for this thread
51 C myThid - Thread number for this instance of the routine.
52 integer myThid
53 integer myiter
54 _RL mytime
55
56 #if (defined (ALLOW_ADJOINT_RUN) || defined (ALLOW_ADMTLM))
57 #ifdef ALLOW_AUTODIFF_MONITOR
58
59 C !LOCAL VARIABLES:
60 c == local variables ==
61 C suff - Hold suffix part of a filename
62 C beginIOErrCount - Begin and end IO error counts
63 C endIOErrCount
64 C msgBuf - Error message buffer
65 CHARACTER*(MAX_LEN_FNAM) suff
66 INTEGER beginIOErrCount
67 INTEGER endIOErrCount
68 CHARACTER*(MAX_LEN_MBUF) msgBuf
69
70 c == end of interface ==
71 CEOP
72
73 call TIMER_START('I/O (WRITE) [EXF_AD_DUMP]', myThid )
74
75 IF (
76 & DIFFERENT_MULTIPLE(adjDumpFreq,mytime,deltaTClock)
77 & ) THEN
78
79 _BARRIER
80 _BEGIN_MASTER( myThid )
81
82 C-- Set suffix for this set of data files.
83 WRITE(suff,'(I10.10)') myIter
84 writeBinaryPrec = writeStatePrec
85
86 C-- Read IO error counter
87 beginIOErrCount = IO_ERRCOUNT(myThid)
88
89
90 CALL MDSWRITEFIELD(
91 & 'ADJhflux.'//suff, writeBinaryPrec, globalFiles, 'RL',
92 & 1, adhflux, 1, myIter, myThid )
93 CALL MDSWRITEFIELD(
94 & 'ADJsflux.'//suff, writeBinaryPrec, globalFiles, 'RL',
95 & 1, adsflux, 1, myIter, myThid )
96 CALL MDSWRITEFIELD(
97 & 'ADJustress.'//suff, writeBinaryPrec, globalFiles, 'RL',
98 & 1, adustress, 1, myIter, myThid )
99 CALL MDSWRITEFIELD(
100 & 'ADJvstress.'//suff, writeBinaryPrec, globalFiles, 'RL',
101 & 1, advstress, 1, myIter, myThid )
102
103 # ifdef ALLOW_ATM_TEMP
104 CALL MDSWRITEFIELD(
105 & 'ADJatemp.'//suff, writeBinaryPrec, globalFiles, 'RL',
106 & 1, adatemp, 1, myIter, myThid )
107 CALL MDSWRITEFIELD(
108 & 'ADJaqh.'//suff, writeBinaryPrec, globalFiles, 'RL',
109 & 1, adaqh, 1, myIter, myThid )
110 CALL MDSWRITEFIELD(
111 & 'ADJlwflux.'//suff, writeBinaryPrec, globalFiles, 'RL',
112 & 1, adlwflux, 1, myIter, myThid )
113 CALL MDSWRITEFIELD(
114 & 'ADJprecip.'//suff, writeBinaryPrec, globalFiles, 'RL',
115 & 1, adprecip, 1, myIter, myThid )
116 # endif
117 # ifdef ALLOW_ATM_WIND
118 CALL MDSWRITEFIELD(
119 & 'ADJuwind.'//suff, writeBinaryPrec, globalFiles, 'RL',
120 & 1, aduwind, 1, myIter, myThid )
121 CALL MDSWRITEFIELD(
122 & 'ADJvwind.'//suff, writeBinaryPrec, globalFiles, 'RL',
123 & 1, advwind, 1, myIter, myThid )
124 # endif
125 # ifdef ALLOW_DOWNWARD_RADIATION
126 CALL MDSWRITEFIELD(
127 & 'ADJswdown.'//suff, writeBinaryPrec, globalFiles, 'RL',
128 & 1, adswdown, 1, myIter, myThid )
129 CALL MDSWRITEFIELD(
130 & 'ADJlwdown.'//suff, writeBinaryPrec, globalFiles, 'RL',
131 & 1, adlwdown, 1, myIter, myThid )
132 # endif
133 # ifdef ATMOSPHERIC_LOADING
134 cph CALL MDSWRITEFIELD(
135 cph & 'ADJapressure.'//suff, writeBinaryPrec, globalFiles, 'RL',
136 cph & 1, adapressure, 1, myIter, myThid )
137 # endif
138 # if defined(ALLOW_ATM_TEMP) || defined(SHORTWAVE_HEATING)
139 cph CALL MDSWRITEFIELD(
140 cph & 'ADJswflux.'//suff, writeBinaryPrec, globalFiles, 'RL',
141 cph & 1, adswflux, 1, myIter, myThid )
142 # endif
143 # if defined(ALLOW_ATM_TEMP) || defined(EXF_READ_EVAP)
144 cph CALL MDSWRITEFIELD(
145 cph & 'ADJevap.'//suff, writeBinaryPrec, globalFiles, 'RL',
146 cph & 1, adevap, 1, myIter, myThid )
147 # endif
148
149 _END_MASTER( myThid )
150 _BARRIER
151
152 ENDIF
153
154 call TIMER_STOP( 'I/O (WRITE) [EXF_AD_DUMP]', myThid )
155
156 #endif /* ALLOW_AUTODIFF_MONITOR */
157 #endif /* ALLOW_ADJOINT_RUN */
158
159 end
160
161
162
163
164
165
166
167
168

  ViewVC Help
Powered by ViewVC 1.1.22