/[MITgcm]/MITgcm/pkg/seaice/seaice_ad_dump.F
ViewVC logotype

Annotation of /MITgcm/pkg/seaice/seaice_ad_dump.F

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


Revision 1.4 - (hide annotations) (download)
Tue Sep 9 19:58:26 2008 UTC (15 years, 8 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint61f, checkpoint61g, checkpoint61d, checkpoint61e, checkpoint61n, checkpoint61o, checkpoint61l, checkpoint61m, checkpoint61j, checkpoint61k, checkpoint61h, checkpoint61i, checkpoint61p, checkpoint61q
Changes since 1.3: +4 -14 lines
fix for singleCpuIO & multi-threaded: remove _BEGIN/_END_MASTER between IO S/R call

1 jmc 1.4 C $Header: /u/gcmpack/MITgcm/pkg/seaice/seaice_ad_dump.F,v 1.3 2007/10/30 18:13:39 heimbach Exp $
2 heimbach 1.1 C $Name: $
3    
4 heimbach 1.2 #include "AD_CONFIG.h"
5 heimbach 1.1 #include "PACKAGES_CONFIG.h"
6     #include "SEAICE_OPTIONS.h"
7    
8     CBOP
9     C !ROUTINE: seaice_ad_dump
10     C !INTERFACE:
11     subroutine seaice_ad_dump( mytime, myiter, myThid )
12    
13     C !DESCRIPTION: \bv
14     C *==========================================================*
15     C | SUBROUTINE seaice_ad_dump |
16     C *==========================================================*
17     C Extract adjoint variable from TAMC/TAF-generated
18     C adjoint common blocks, contained in adcommon.h
19     C and write fields to file;
20     C Make sure common blocks in adcommon.h are up-to-date
21     C w.r.t. current adjoint code.
22     C *==========================================================*
23     C | SUBROUTINE seaice_ad_dump |
24     C *==========================================================*
25     C \ev
26    
27     C !USES:
28     IMPLICIT NONE
29    
30     C == Global variables ===
31     #include "SIZE.h"
32     #include "EEPARAMS.h"
33     #include "PARAMS.h"
34 heimbach 1.2 #include "SEAICE_PARAMS.h"
35 heimbach 1.1 #ifdef ALLOW_MNC
36     #include "MNC_PARAMS.h"
37     #endif
38     #include "GRID.h"
39     #ifdef ALLOW_AUTODIFF_MONITOR
40     # include "adcommon.h"
41     #endif
42    
43     LOGICAL DIFFERENT_MULTIPLE
44     EXTERNAL DIFFERENT_MULTIPLE
45     INTEGER IO_ERRCOUNT
46     EXTERNAL IO_ERRCOUNT
47    
48     C !INPUT/OUTPUT PARAMETERS:
49     C == Routine arguments ==
50     C myIter - iteration counter for this thread
51     C myTime - time counter for this thread
52     C myThid - Thread number for this instance of the routine.
53     integer myThid
54     integer myiter
55     _RL mytime
56    
57     #if (defined (ALLOW_ADJOINT_RUN) || defined (ALLOW_ADMTLM))
58     #ifdef ALLOW_AUTODIFF_MONITOR
59    
60     C !LOCAL VARIABLES:
61     c == local variables ==
62     C suff - Hold suffix part of a filename
63     C beginIOErrCount - Begin and end IO error counts
64     C endIOErrCount
65     C msgBuf - Error message buffer
66     CHARACTER*(MAX_LEN_FNAM) suff
67     INTEGER beginIOErrCount
68     INTEGER endIOErrCount
69     CHARACTER*(MAX_LEN_MBUF) msgBuf
70    
71     c == end of interface ==
72     CEOP
73    
74     call TIMER_START('I/O (WRITE) [ADJOINT LOOP]', myThid )
75    
76     IF (
77     & DIFFERENT_MULTIPLE(adjDumpFreq,mytime,deltaTClock)
78     & ) THEN
79    
80     _BARRIER
81    
82     C-- Set suffix for this set of data files.
83     WRITE(suff,'(I10.10)') myIter
84     writeBinaryPrec = writeStatePrec
85    
86     C-- Read IO error counter
87     beginIOErrCount = IO_ERRCOUNT(myThid)
88    
89     CALL MDSWRITEFIELD(
90     & 'ADJarea.'//suff, writeBinaryPrec, globalFiles, 'RL',
91     & 3, adarea, 1, myIter, myThid )
92     CALL MDSWRITEFIELD(
93     & 'ADJheff.'//suff, writeBinaryPrec, globalFiles, 'RL',
94     & 3, adheff, 1, myIter, myThid )
95     CALL MDSWRITEFIELD(
96     & 'ADJhsnow.'//suff, writeBinaryPrec, globalFiles, 'RL',
97     & 1, adhsnow, 1, myIter, myThid )
98     # ifdef SEAICE_ALLOW_DYNAMICS
99 heimbach 1.3 cph IF ( SEAICEuseDynamics ) THEN
100 heimbach 1.1 CALL MDSWRITEFIELD(
101     & 'ADJuice.'//suff, writeBinaryPrec, globalFiles, 'RL',
102     & 3, aduice, 1, myIter, myThid )
103     CALL MDSWRITEFIELD(
104     & 'ADJvice.'//suff, writeBinaryPrec, globalFiles, 'RL',
105     & 3, advice, 1, myIter, myThid )
106 heimbach 1.3 cph ENDIF
107 heimbach 1.1 # endif
108     c
109     _BARRIER
110    
111     #ifdef ALLOW_MNC
112     IF (useMNC .AND. autodiff_mnc) THEN
113    
114     CALL MNC_CW_SET_UDIM('adseaice', -1, myThid)
115     CALL MNC_CW_RL_W_S('D','adseaice',0,0,'T',myTime,myThid)
116     CALL MNC_CW_SET_UDIM('adseaice', 0, myThid)
117     CALL MNC_CW_I_W_S('I','adseaice',0,0,'iter',myIter,myThid)
118     CALL MNC_CW_RL_W_S('D','adseaice',0,0,'model_time',myTime,
119     & myThid)
120     c
121     CALL MNC_CW_RL_W('D','adseaice',0,0,'adarea',
122     & adarea, myThid)
123     CALL MNC_CW_RL_W('D','adseaice',0,0,'adheff',
124     & adheff, myThid)
125     CALL MNC_CW_RL_W('D','adseaice',0,0,'adhsnow',
126     & adhsnow, myThid)
127     # ifdef SEAICE_ALLOW_DYNAMICS
128     IF (SEAICEuseDYNAMICS) THEN
129     CALL MNC_CW_RL_W('D','adseaice',0,0,'aduice',
130     & aduice, myThid)
131     CALL MNC_CW_RL_W('D','adseaice',0,0,'advice',
132     & advice, myThid)
133     ENDIF
134     # endif
135    
136     ENDIF
137     #endif /* ALLOW_MNC */
138    
139     ENDIF
140    
141 jmc 1.4 CALL TIMER_STOP( 'I/O (WRITE) [ADJOINT LOOP]', myThid )
142 heimbach 1.1
143     #endif /* ALLOW_AUTODIFF_MONITOR */
144     #endif /* ALLOW_ADJOINT_RUN */
145    
146 jmc 1.4 RETURN
147     END

  ViewVC Help
Powered by ViewVC 1.1.22