21 |
#include "SIZE.h" |
#include "SIZE.h" |
22 |
#include "EEPARAMS.h" |
#include "EEPARAMS.h" |
23 |
#include "PARAMS.h" |
#include "PARAMS.h" |
24 |
|
#include "RESTART.h" |
25 |
#include "GRID.h" |
#include "GRID.h" |
26 |
|
|
27 |
#include "AIM_CO2.h" |
#include "AIM_CO2.h" |
53 |
INTEGER bi, bj, i, j |
INTEGER bi, bj, i, j |
54 |
_RL total_flux, atpco2_check |
_RL total_flux, atpco2_check |
55 |
_RL flxCO2tile(nSx,nSy) |
_RL flxCO2tile(nSx,nSy) |
56 |
LOGICAL permCheckPoint |
LOGICAL modelEnd |
57 |
|
LOGICAL permPickup, tempPickup |
58 |
INTEGER iUnit, iLo, iHi |
INTEGER iUnit, iLo, iHi |
59 |
_RS dummyRS(1) |
_RS dummyRS(1) |
60 |
_RL tmpco2(2) |
_RL tmpco2(2) |
99 |
|
|
100 |
_BARRIER |
_BARRIER |
101 |
_BEGIN_MASTER(myThid) |
_BEGIN_MASTER(myThid) |
102 |
IF ( startTime.EQ.baseTime .AND. myTime.EQ.0 ) THEN |
IF ( myIter.EQ.0 ) THEN |
103 |
C- If first iteration, use atmpCO2init as initial condition |
C- If first iteration, use atmpCO2init as initial condition |
104 |
atm_pCO2 = atmpCO2init |
atm_pCO2 = atmpCO2init |
105 |
Atm_CO2_Moles = atm_pCO2 * total_atmos_moles |
Atm_CO2_Moles = atm_pCO2 * total_atmos_moles |
106 |
|
|
107 |
ELSEIF ( myTime .EQ. startTime ) THEN |
ELSEIF ( myIter.EQ.nIter0 ) THEN |
108 |
C- If restart, read moles number from pickup |
C- If restart, read moles number from pickup |
109 |
WRITE(fn,'(A,I10.10)') 'pickup_aimCo2.',nIter0 |
IF ( pickupSuff.EQ.' ' ) THEN |
110 |
|
WRITE(fn,'(A,I10.10)') 'pickup_aimCo2.',nIter0 |
111 |
|
ELSE |
112 |
|
WRITE(fn,'(A,A10)') 'pickup_aimCo2.', pickupSuff |
113 |
|
ENDIF |
114 |
iUnit = 0 |
iUnit = 0 |
115 |
CALL MDS_READVEC_LOC( fn, precFloat64, iUnit, 'RL', 2, |
CALL MDS_READVEC_LOC( fn, precFloat64, iUnit, 'RL', 2, |
116 |
O tmpco2, dummyRS, |
O tmpco2, dummyRS, |
145 |
atm_pCO2 = Atm_CO2_Moles / total_atmos_moles |
atm_pCO2 = Atm_CO2_Moles / total_atmos_moles |
146 |
|
|
147 |
C- Write out if time for a new pickup |
C- Write out if time for a new pickup |
148 |
permCheckPoint = myTime.NE.startTime |
modelEnd = (myTime+deltaTClock).EQ.endTime |
149 |
permCheckPoint = permCheckPoint .AND. |
& .OR. (myIter+1).EQ.nEndIter |
150 |
|
permPickup = .FALSE. |
151 |
|
tempPickup = .FALSE. |
152 |
|
permPickup = |
153 |
& DIFFERENT_MULTIPLE(pChkptFreq,myTime+deltaTClock,deltaTClock) |
& DIFFERENT_MULTIPLE(pChkptFreq,myTime+deltaTClock,deltaTClock) |
154 |
IF (permCheckPoint) THEN |
tempPickup = |
155 |
WRITE(fn,'(A,I10.10)') 'pickup_aimCo2.',myIter+1 |
& DIFFERENT_MULTIPLE( chkptFreq,myTime+deltaTClock,deltaTClock) |
156 |
|
IF ( (modelEnd.AND.writePickupAtEnd) |
157 |
|
& .OR. permPickup .OR. tempPickup ) THEN |
158 |
|
|
159 |
|
IF ( permPickup ) THEN |
160 |
|
WRITE(fn,'(A,I10.10)') 'pickup_aimCo2.',myIter+1 |
161 |
|
ELSE |
162 |
|
WRITE(fn,'(A,A)') 'pickup_aimCo2.',checkPtSuff(nCheckLev) |
163 |
|
ENDIF |
164 |
C- write values to new pickup |
C- write values to new pickup |
165 |
tmpco2(1)= Atm_CO2_Moles |
tmpco2(1)= Atm_CO2_Moles |
166 |
tmpco2(2)= atm_pCO2 |
tmpco2(2)= atm_pCO2 |