/[MITgcm]/MITgcm/pkg/autodiff/g_dummy_in_stepping.F
ViewVC logotype

Contents of /MITgcm/pkg/autodiff/g_dummy_in_stepping.F

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


Revision 1.18 - (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.17: +7 -3 lines
use new S/R RW_GET_SUFFIX to get file suffix (according to "rwSuffixType")

1 C $Header: /u/gcmpack/MITgcm/pkg/autodiff/g_dummy_in_stepping.F,v 1.17 2014/04/04 23:03:59 jmc Exp $
2 C $Name: $
3
4 #include "AUTODIFF_OPTIONS.h"
5 #ifdef ALLOW_CTRL
6 # include "CTRL_OPTIONS.h"
7 #endif
8 #include "AD_CONFIG.h"
9
10 CBOP
11 C !ROUTINE: g_dummy_in_stepping
12 C !INTERFACE:
13 subroutine g_dummy_in_stepping( myTime, myIter, myThid )
14
15 C !DESCRIPTION: \bv
16 C *==========================================================*
17 C | SUBROUTINE g_dummy_in_stepping |
18 C *==========================================================*
19 C Extract tangent linear variable from TAMC/TAF-generated
20 C tangent linear common blocks, contained in g_common.h
21 C and write fields to file;
22 C Make sure common blocks in g_common.h are up-to-date
23 C w.r.t. current adjoint code.
24 C *==========================================================*
25 C | SUBROUTINE g_dummy_in_stepping |
26 C *==========================================================*
27 C \ev
28
29 C !USES:
30 IMPLICIT NONE
31
32 C == Global variables ===
33 #include "SIZE.h"
34 #include "EEPARAMS.h"
35 #include "PARAMS.h"
36 #ifdef ALLOW_AUTODIFF_MONITOR
37 # include "g_common.h"
38 #endif
39
40 C !INPUT/OUTPUT PARAMETERS:
41 C == Routine arguments ==
42 C myIter :: iteration counter for this thread
43 C myTime :: time counter for this thread
44 C myThid :: Thread number for this instance of the routine.
45 INTEGER myThid
46 INTEGER myIter
47 _RL myTime
48
49 #ifdef ALLOW_TANGENTLINEAR_RUN
50 #ifdef ALLOW_AUTODIFF_MONITOR
51
52 C !FUNCTIONS:
53 LOGICAL DIFFERENT_MULTIPLE
54 EXTERNAL DIFFERENT_MULTIPLE
55 INTEGER IO_ERRCOUNT
56 EXTERNAL IO_ERRCOUNT
57
58 C !LOCAL VARIABLES:
59 c == local variables ==
60 C suff :: Hold suffix part of a filename
61 C msgBuf :: Error message buffer
62 CHARACTER*(10) suff
63 INTEGER beginIOErrCount
64 INTEGER endIOErrCount
65 CHARACTER*(MAX_LEN_MBUF) msgBuf
66 CEOP
67
68 IF (
69 & DIFFERENT_MULTIPLE(adjDumpFreq,myTime,deltaTClock)
70 & ) THEN
71
72 CALL TIMER_START('I/O (WRITE) [ADJOINT LOOP]', myThid )
73 c write(*,*) 'myIter= ',myIter
74
75 C-- Set suffix for this set of data files.
76 IF ( rwSuffixType.EQ.0 ) THEN
77 WRITE(suff,'(I10.10)') myIter
78 ELSE
79 CALL RW_GET_SUFFIX( suff, myTime, myIter, myThid )
80 ENDIF
81 C ==>> Resetting run-time parameter writeBinaryPrec in the middle of a run
82 C ==>> is very very very nasty !!!
83 c writeBinaryPrec = writeStatePrec
84 C <<== If you really want to mess-up with this at your own risk,
85 C <<== uncomment the line above
86
87 C-- Read IO error counter
88 beginIOErrCount = IO_ERRCOUNT(myThid)
89
90 CALL WRITE_FLD_XY_RL ( 'G_Jtaux.',suff, g_fu, myIter, myThid )
91 CALL WRITE_FLD_XY_RL ( 'G_Jtauy.',suff, g_fv, myIter, myThid )
92 CALL WRITE_FLD_XY_RL ( 'G_Jqnet.',suff, g_qnet, myIter,myThid )
93 CALL WRITE_FLD_XY_RL ( 'G_Jempr.',suff, g_empmr,myIter,myThid )
94 c
95 CALL WRITE_FLD_XYZ_RL(
96 & 'G_Jtheta.',suff, g_theta, myIter, myThid )
97 CALL WRITE_FLD_XYZ_RL(
98 & 'G_Jsalt.',suff, g_salt, myIter, myThid )
99 CALL WRITE_FLD_XYZ_RL(
100 & 'G_Juvel.',suff, g_uvel, myIter, myThid )
101 CALL WRITE_FLD_XYZ_RL(
102 & 'G_Jvvel.',suff, g_vvel, myIter, myThid )
103 CALL WRITE_FLD_XYZ_RL(
104 & 'G_Jwvel.',suff, g_wvel, myIter, myThid )
105 CALL WRITE_FLD_XY_RL(
106 & 'G_Jetan.',suff, g_etan, myIter, myThid )
107
108 #ifdef ALLOW_DIFFKR_CONTROL
109 CALL WRITE_FLD_XYZ_RL ( 'G_Jdiffkr.',suff, g_diffkr,
110 & myIter, myThid )
111 #endif
112 #ifdef ALLOW_KAPGM_CONTROL
113 CALL WRITE_FLD_XYZ_RL ( 'G_Jkapgm.',suff, g_kapgm,
114 & myIter, myThid )
115 #endif
116 #ifdef ALLOW_KAPREDI_CONTROL
117 CALL WRITE_FLD_XYZ_RL ( 'G_Jkapredi.',suff, g_kapredi,
118 & myIter, myThid )
119 #endif
120
121 cph CALL WRITE_FLD_XY_RL( 'G_J_sst.',suff, g_sst, myIter, myThid )
122 cph CALL WRITE_FLD_XY_RL( 'G_J_sss.',suff, g_sss, myIter, myThid )
123
124 #ifdef ALLOW_AUTODIFF_MONITOR_PHIHYD
125 CALL WRITE_FLD_XYZ_RL(
126 & 'G_Jphihyd.',suff, g_totphihyd, myIter, myThid )
127 #endif
128
129 C-- Reread IO error counter
130 endIOErrCount = IO_ERRCOUNT(myThid)
131
132 C-- Check for IO errors
133 IF ( endIOErrCount .NE. beginIOErrCount ) THEN
134 WRITE(msgBuf,'(A)') 'S/R WRITE_STATE'
135 CALL PRINT_ERROR( msgBuf, myThid )
136 WRITE(msgBuf,'(A)') 'Error writing out model state'
137 CALL PRINT_ERROR( msgBuf, myThid )
138 WRITE(msgBuf,'(A,I10)') 'Timestep ',myIter
139 CALL PRINT_ERROR( msgBuf, myThid )
140 ELSE
141 WRITE(msgBuf,'(A,I10)')
142 & '// Model state written, timestep', myIter
143 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
144 & SQUEEZE_RIGHT, myThid )
145 WRITE(msgBuf,'(A)') ' '
146 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
147 & SQUEEZE_RIGHT, myThid )
148 ENDIF
149
150 CALL TIMER_STOP( 'I/O (WRITE) [ADJOINT LOOP]', myThid )
151
152 ENDIF
153
154 #endif /* ALLOW_AUTODIFF_MONITOR */
155 #endif /* ALLOW_TANGENTLINEAR_RUN */
156
157 RETURN
158 END

  ViewVC Help
Powered by ViewVC 1.1.22