/[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.1 - (show annotations) (download)
Thu Oct 25 18:41:04 2007 UTC (16 years, 7 months ago) by heimbach
Branch: MAIN
Add adjoint I/O.

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

  ViewVC Help
Powered by ViewVC 1.1.22