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

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

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


Revision 1.1 - (hide annotations) (download)
Thu Oct 25 18:41:04 2007 UTC (16 years, 7 months ago) by heimbach
Branch: MAIN
Add adjoint I/O.

1 heimbach 1.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