-
Notifications
You must be signed in to change notification settings - Fork 237
/
dummy_in_hfac.F
153 lines (129 loc) · 4.4 KB
/
dummy_in_hfac.F
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
#include "AUTODIFF_OPTIONS.h"
#ifdef ALLOW_CTRL
# include "CTRL_OPTIONS.h"
#endif
C-- File dummy_in_hfac.F:
C-- Contents
C-- o DUMMY_IN_HFAC
C-- o ADDUMMY_IN_HFAC
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
CBOP
C !ROUTINE: DUMMY_IN_HFAC
C !INTERFACE:
SUBROUTINE DUMMY_IN_HFAC( myName, myIter, myThid )
C !DESCRIPTION: \bv
C Forward S/R is empty
C \ev
C !USES:
IMPLICIT NONE
C == Global variables ===
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
C !INPUT/OUTPUT PARAMETERS:
C myThid :: Thread number for this instance of the routine.
CHARACTER*(*) myName
INTEGER myIter
INTEGER myThid
CEOP
RETURN
END
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
CBOP
C !ROUTINE: ADDUMMY_IN_HFAC
C !INTERFACE:
SUBROUTINE ADDUMMY_IN_HFAC( myName, myIter, myThid )
C !DESCRIPTION: \bv
C *==========================================================*
C | SUBROUTINE addummy_in_hfac
C *==========================================================*
C Extract adjoint variable from TAMC/TAF-generated
C adjoint common blocks, contained in adcommon.h
C and write fields to file;
C Make sure common blocks in adcommon.h are up-to-date
C w.r.t. current adjoint code.
C *==========================================================*
C | SUBROUTINE addummy_in_hfac
C *==========================================================*
C \ev
C !USES:
IMPLICIT NONE
C == Global variables ===
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
#ifdef ALLOW_AUTODIFF_MONITOR
#include "adcommon.h"
#endif
C !INPUT/OUTPUT PARAMETERS:
C myThid :: Thread number for this instance of the routine.
CHARACTER*(1) myName
INTEGER myIter
INTEGER myThid
#ifdef ALLOW_AUTODIFF_MONITOR
#ifdef ALLOW_DEPTH_CONTROL
C !FUNCTIONS:
LOGICAL DIFFERENT_MULTIPLE
EXTERNAL DIFFERENT_MULTIPLE
INTEGER IO_ERRCOUNT
EXTERNAL IO_ERRCOUNT
C !LOCAL VARIABLES:
C suff :: Hold suffix part of a filename
C beginIOErrCount :: Begin IO error counts
C endIOErrCount :: End IO error counts
C msgBuf :: Error message buffer
CHARACTER*(MAX_LEN_FNAM) suff
INTEGER beginIOErrCount
INTEGER endIOErrCount
CHARACTER*(MAX_LEN_MBUF) msgBuf
_RL myTime
CHARACTER*(5) myFullName
CEOP
myTime = 0.
IF ( DIFFERENT_MULTIPLE( dumpFreq, myTime, myTime-deltaTClock )
& ) THEN
CALL TIMER_START('I/O (WRITE) [ADJOINT LOOP]', myThid )
C-- Set suffix for this set of data files.
WRITE(suff,'(I10.10)') myIter
C-- Read IO error counter
beginIOErrCount = IO_ERRCOUNT(myThid)
IF ( myName .EQ. 'C' ) THEN
myFullName = 'hFacC'
CALL WRITE_FLD_XYZ_RL( 'ADJhFacC.', suff, adhfacc,
& myIter, myThid )
ELSE IF ( myName .EQ. 'W' ) THEN
myFullName = 'hFacW'
CALL WRITE_FLD_XYZ_RL( 'ADJhFacW.', suff, adhfacw,
& myIter, myThid )
ELSE IF ( myName .EQ. 'S' ) THEN
myFullName = 'hFacS'
CALL WRITE_FLD_XYZ_RL( 'ADJhFacS.', suff, adhfacs,
& myIter, myThid )
ELSE
WRITE(*,*) 'addummy_in_hfac: no valid myName specified'
END IF
C-- Reread IO error counter
endIOErrCount = IO_ERRCOUNT(myThid)
C-- Check for IO errors
IF ( endIOErrCount .NE. beginIOErrCount ) THEN
WRITE(msgBuf,'(A)') 'S/R WRITE_STATE'
CALL PRINT_ERROR( msgBuf, myThid )
WRITE(msgBuf,'(A)') 'Error writing out model state'
CALL PRINT_ERROR( msgBuf, myThid )
WRITE(msgBuf,'(A,I10)') 'Timestep ',myIter
CALL PRINT_ERROR( msgBuf, myThid )
ELSE
WRITE(msgBuf,'(A,I10)')
& '// ad'//myFullName//' written, timestep', myIter
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT, myThid )
WRITE(msgBuf,'(A)') ' '
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT, myThid )
ENDIF
CALL TIMER_STOP( 'I/O (WRITE) [ADJOINT LOOP]', myThid )
ENDIF
#endif /* ALLOW_DEPTH_CONTROL */
#endif /* ALLOW_AUTODIFF_MONITOR */
RETURN
END