/[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.11 - (show annotations) (download)
Fri Mar 24 23:34:13 2017 UTC (7 years, 2 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint66g, checkpoint66f, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, HEAD
Changes since 1.10: +9 -5 lines
use new S/R RW_GET_SUFFIX to get file suffix (according to "rwSuffixType")

1 C $Header: /u/gcmpack/MITgcm/pkg/exf/exf_ad_dump.F,v 1.10 2016/10/15 21:25:46 mmazloff Exp $
2 C $Name: $
3
4 #include "EXF_OPTIONS.h"
5 #include "AD_CONFIG.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 #include "EXF_PARAM.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 C !INPUT/OUTPUT PARAMETERS:
43 C == Routine arguments ==
44 C myTime :: time counter for this thread
45 C myIter :: iteration counter for this thread
46 C myThid :: Thread number for this instance of the routine.
47 _RL myTime
48 INTEGER myIter
49 INTEGER myThid
50
51 #if (defined (ALLOW_ADJOINT_RUN) || defined (ALLOW_ADMTLM))
52 #ifdef ALLOW_AUTODIFF_MONITOR
53
54 C !FUNCTIONS:
55 LOGICAL DIFFERENT_MULTIPLE
56 EXTERNAL DIFFERENT_MULTIPLE
57 INTEGER IO_ERRCOUNT
58 EXTERNAL IO_ERRCOUNT
59
60 C !LOCAL VARIABLES:
61 c == local variables ==
62 C suff :: Hold suffix part of a filename
63 C msgBuf :: Error message buffer
64 CHARACTER*(10) suff
65 c CHARACTER*(MAX_LEN_MBUF) msgBuf
66
67 c == end of interface ==
68 CEOP
69
70 CALL TIMER_START('I/O (WRITE) [EXF_AD_DUMP]', myThid )
71
72 IF (
73 & DIFFERENT_MULTIPLE(adjDumpFreq,myTime,deltaTClock)
74 & ) THEN
75
76 C-- Set suffix for this set of data files.
77 IF ( rwSuffixType.EQ.0 ) THEN
78 WRITE(suff,'(I10.10)') myIter
79 ELSE
80 CALL RW_GET_SUFFIX( suff, myTime, myIter, myThid )
81 ENDIF
82 C ==>> Resetting run-time parameter writeBinaryPrec in the middle of a run
83 C ==>> is very very very nasty !!!
84 c writeBinaryPrec = writeStatePrec
85 C <<== If you really want to mess-up with this at your own risk,
86 C <<== uncomment the line above
87
88 CALL WRITE_REC_3D_RL(
89 & 'ADJhflux.'//suff, writeBinaryPrec, 1,
90 & adhflux, 1, myIter, myThid )
91 CALL WRITE_REC_3D_RL(
92 & 'ADJsflux.'//suff, writeBinaryPrec, 1,
93 & adsflux, 1, myIter, myThid )
94 CALL WRITE_REC_3D_RL(
95 & 'ADJustress.'//suff, writeBinaryPrec, 1,
96 & adustress, 1, myIter, myThid )
97 CALL WRITE_REC_3D_RL(
98 & 'ADJvstress.'//suff, writeBinaryPrec, 1,
99 & advstress, 1, myIter, myThid )
100
101 # ifdef ALLOW_ATM_TEMP
102 CALL WRITE_REC_3D_RL(
103 & 'ADJatemp.'//suff, writeBinaryPrec, 1,
104 & adatemp, 1, myIter, myThid )
105 CALL WRITE_REC_3D_RL(
106 & 'ADJaqh.'//suff, writeBinaryPrec, 1,
107 & adaqh, 1, myIter, myThid )
108 CALL WRITE_REC_3D_RL(
109 & 'ADJlwflux.'//suff, writeBinaryPrec, 1,
110 & adlwflux, 1, myIter, myThid )
111 CALL WRITE_REC_3D_RL(
112 & 'ADJprecip.'//suff, writeBinaryPrec, 1,
113 & adprecip, 1, myIter, myThid )
114 # endif
115 # ifdef ALLOW_RUNOFF
116 CALL WRITE_REC_3D_RL(
117 & 'ADJrunoff.'//suff, writeBinaryPrec, 1,
118 & adrunoff, 1, myIter, myThid )
119 # endif
120 # ifdef ALLOW_ATM_WIND
121 IF ( useAtmWind ) THEN
122 CALL WRITE_REC_3D_RL(
123 & 'ADJuwind.'//suff, writeBinaryPrec, 1,
124 & aduwind, 1, myIter, myThid )
125 CALL WRITE_REC_3D_RL(
126 & 'ADJvwind.'//suff, writeBinaryPrec, 1,
127 & advwind, 1, myIter, myThid )
128 ENDIF
129 # endif
130 # ifdef ALLOW_DOWNWARD_RADIATION
131 CALL WRITE_REC_3D_RL(
132 & 'ADJswdown.'//suff, writeBinaryPrec, 1,
133 & adswdown, 1, myIter, myThid )
134 CALL WRITE_REC_3D_RL(
135 & 'ADJlwdown.'//suff, writeBinaryPrec, 1,
136 & adlwdown, 1, myIter, myThid )
137 # endif
138 # ifdef ATMOSPHERIC_LOADING
139 cph CALL WRITE_REC_3D_RL(
140 cph & 'ADJapressure.'//suff, writeBinaryPrec, 1,
141 cph & adapressure, 1, myIter, myThid )
142 # endif
143 # if defined(ALLOW_ATM_TEMP) || defined(SHORTWAVE_HEATING)
144 cph CALL WRITE_REC_3D_RL(
145 cph & 'ADJswflux.'//suff, writeBinaryPrec, 1,
146 cph & adswflux, 1, myIter, myThid )
147 # endif
148 # if defined(ALLOW_ATM_TEMP) || defined(EXF_READ_EVAP)
149 cph CALL WRITE_REC_3D_RL(
150 cph & 'ADJevap.'//suff, writeBinaryPrec, 1,
151 cph & adevap, 1, myIter, myThid )
152 # endif
153
154 ENDIF
155
156 CALL TIMER_STOP( 'I/O (WRITE) [EXF_AD_DUMP]', myThid )
157
158 #endif /* ALLOW_AUTODIFF_MONITOR */
159 #endif /* ALLOW_ADJOINT_RUN */
160
161 RETURN
162 END

  ViewVC Help
Powered by ViewVC 1.1.22