/[MITgcm]/MITgcm/pkg/gchem/gchem_forcing_sep.F
ViewVC logotype

Diff of /MITgcm/pkg/gchem/gchem_forcing_sep.F

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

revision 1.2 by stephd, Tue Oct 7 16:21:12 2003 UTC revision 1.21 by dfer, Fri Jan 18 01:06:29 2008 UTC
# Line 1  Line 1 
1  #include "CPP_OPTIONS.h"  C $Header$
2  #include "PTRACERS_OPTIONS.h"  C $Name$
3    
4  #include "GCHEM_OPTIONS.h"  #include "GCHEM_OPTIONS.h"
5    
6    CBOP
7    C !ROUTINE: GCHEM_FORCING_SEP
8  C !INTERFACE: ==========================================================  C !INTERFACE: ==========================================================
9        SUBROUTINE GCHEM_FORCING_SEP(myTime,myIter, myThid )        SUBROUTINE GCHEM_FORCING_SEP(myTime,myIter, myThid )
10    
11    C !DESCRIPTION:
12    C     calls subroutine that will update passive tracers values
13    C     with a separate timestep. Since GCHEM_FORCING_SEP is now
14    C     called before DO_FIELDS_BLOCKING_EXCHANGES, the passive
15    C     tracer values in the halo regions are not up to date and
16    C     must not be used.
17    
18    C !USES: ===============================================================
19        IMPLICIT NONE        IMPLICIT NONE
20  #include "SIZE.h"  #include "SIZE.h"
21  #include "GRID.h"  #include "GRID.h"
22  #include "DYNVARS.h"  #include "DYNVARS.h"
23  #include "EEPARAMS.h"  #include "EEPARAMS.h"
24  #include "PARAMS.h"  #include "PARAMS.h"
25  #ifdef ALLOW_PTRACERS  #include "PTRACERS_SIZE.h"
26  #include "PTRACERS.h"  c#include "PTRACERS_PARAMS.h"
27  #endif  #include "PTRACERS_FIELDS.h"
28  #ifdef DIC_BIOTIC  #ifdef ALLOW_DIC
29  #include "DIC_BIOTIC.h"  #include "DIC_BIOTIC.h"
30  #include "DIC_ABIOTIC.h"  #include "DIC_ABIOTIC.h"
31  #endif  #endif /* ALLOW_DIC */
32    
33  C !INPUT PARAMETERS: ===================================================  C !INPUT PARAMETERS: ===================================================
34  C  myThid               :: thread number  C  myThid               :: thread number
35        INTEGER myThid, myIter        INTEGER myThid, myIter
36        _RL myTime        _RL myTime
37    
38    c!LOCAL VARIABLES: ====================================================
39    C  i,j                  :: loop indices
40    C  bi,bj                :: tile indices
41    C  k                    :: vertical level
42        INTEGER bi,bj,imin,imax,jmin,jmax        INTEGER bi,bj,imin,imax,jmin,jmax
43        INTEGER i,j        INTEGER i,j
44        INTEGER niter        INTEGER niter
45    CEOP
46    
 #ifdef ALLOW_PTRACERS  
47  #ifdef ALLOW_GCHEM  #ifdef ALLOW_GCHEM
48    #ifdef GCHEM_SEPARATE_FORCING
          _BARRIER  
          _BEGIN_MASTER( mythid )  
49    
50  ccccccccccccccccccccccccc  ccccccccccccccccccccccccc
51  c global calculations   c  c global calculations   c
52  ccccccccccccccccccccccccc  ccccccccccccccccccccccccc
53  #ifdef DIC_BIOTIC  #ifdef ALLOW_DIC
54    #ifdef ALLOW_OLD_VIRTUALFLUX
55  c find global surface averages  c find global surface averages
56           gsm_s = 0. _d 0
57           gsm_dic = 0. _d 0
58           gsm_alk = 0. _d 0
59         call tracer_meanarea(myThid,salt, 1,gsm_s)         call tracer_meanarea(myThid,salt, 1,gsm_s)
60         call tracer_meanarea(myThid,         call tracer_meanarea(myThid,
61       &               ptracer(1-Olx,1-Oly,1,1,1,1), 1, gsm_dic)       &               ptracer(1-Olx,1-Oly,1,1,1,1), 1, gsm_dic)
62         print*,'mean surface dic', gsm_dic,gsm_s         print*,'mean surface dic', gsm_dic,gsm_s
63         call tracer_meanarea(myThid,         call tracer_meanarea(myThid,
64       &               ptracer(1-Olx,1-Oly,1,1,1,2), 1, gsm_alk)       &               ptracer(1-Olx,1-Oly,1,1,1,2), 1, gsm_alk)
65    #endif /* ALLOW_OLD_VIRTUALFLUX */
66  #endif  #endif
67  ccccccccccccccccccccccccccccccccccccccccccc  ccccccccccccccccccccccccccccccccccccccccccc
68    
       _END_MASTER( mythid )  
       _BARRIER  
   
69    
70  ccccccccccccccccccccccccc  ccccccccccccccccccccccccc
71  c chemical forcing      c  c chemical forcing      c
72  ccccccccccccccccccccccccc  ccccccccccccccccccccccccc
73  C$TAF loop = parallel  C$taf loop = parallel
74         DO bj=myByLo(myThid),myByHi(myThid)         DO bj=myByLo(myThid),myByHi(myThid)
75  C$TAF loop = parallel  C$taf loop = parallel
76          DO bi=myBxLo(myThid),myBxHi(myThid)          DO bi=myBxLo(myThid),myBxHi(myThid)
77    
78          jMin=1-OLy          jMin=1
79          jMax=sNy+OLy          jMax=sNy
80          iMin=1-OLx          iMin=1
81          iMax=sNx+OLx          iMax=sNx
82  c  c
83  ccccccccccccccccccccccccccc DIC cccccccccccccccccccccccccccccccc  ccccccccccccccccccccccccccc DIC cccccccccccccccccccccccccccccccc
84  c  c
85  #ifdef DIC_BIOTIC  #ifdef ALLOW_DIC
86  #ifdef ALLOW_FE  #ifdef ALLOW_FE
87            call DIC_BIOTIC_Forcing( Ptracer(1-Olx,1-Oly,1,bi,bj,1),            call DIC_BIOTIC_Forcing( Ptracer(1-Olx,1-Oly,1,bi,bj,1),
88       &                          Ptracer(1-Olx,1-Oly,1,bi,bj,2),       &                          Ptracer(1-Olx,1-Oly,1,bi,bj,2),
# Line 78  c Line 93  c
93       &                          bi,bj,imin,imax,jmin,jmax,       &                          bi,bj,imin,imax,jmin,jmax,
94       &                          myIter,myTime,myThid)       &                          myIter,myTime,myThid)
95  #else  #else
96    #ifdef ALLOW_O2
97            call DIC_BIOTIC_Forcing( Ptracer(1-Olx,1-Oly,1,bi,bj,1),            call DIC_BIOTIC_Forcing( Ptracer(1-Olx,1-Oly,1,bi,bj,1),
98       &                          Ptracer(1-Olx,1-Oly,1,bi,bj,2),       &                          Ptracer(1-Olx,1-Oly,1,bi,bj,2),
99       &                          Ptracer(1-Olx,1-Oly,1,bi,bj,3),       &                          Ptracer(1-Olx,1-Oly,1,bi,bj,3),
# Line 85  c Line 101  c
101       &                          Ptracer(1-Olx,1-Oly,1,bi,bj,5),       &                          Ptracer(1-Olx,1-Oly,1,bi,bj,5),
102       &                          bi,bj,imin,imax,jmin,jmax,       &                          bi,bj,imin,imax,jmin,jmax,
103       &                          myIter,myTime,myThid)       &                          myIter,myTime,myThid)
104    #else
105              call DIC_BIOTIC_Forcing( Ptracer(1-Olx,1-Oly,1,bi,bj,1),
106         &                          Ptracer(1-Olx,1-Oly,1,bi,bj,2),
107         &                          Ptracer(1-Olx,1-Oly,1,bi,bj,3),
108         &                          Ptracer(1-Olx,1-Oly,1,bi,bj,4),
109         &                          bi,bj,imin,imax,jmin,jmax,
110         &                          myIter,myTime,myThid)
111  #endif  #endif
112  #endif  #endif
 cccccccccccccccccccccccccc END DIC cccccccccccccccccccccccccccccccccc  
113    
114  #ifdef PTRACERS_SEPARATE_FORCING  #endif
115  C     time averaging directly, here otherwise in the_correction_step  cccccccccccccccccccccccccc END DIC cccccccccccccccccccccccccccccccccc
            CALL PTRACERS_STATVARS(myTime, myIter, bi, bj, myThid)  
 #endif /* PTRACERS_SEPARATE_FORCING */  
116    
117  c  c
118          ENDDO          ENDDO
119         ENDDO         ENDDO
120    
121    #ifdef ALLOW_DIC
122           CALL DIC_ATMOS( 1, myTime, myIter, myThid )
123    #endif
124    
125    #endif /* GCHEM_SEPARATE_FORCING */
126  #endif /* ALLOW_GCHEM */  #endif /* ALLOW_GCHEM */
 #endif /* ALLOW_PTRACERS */  
127    
128        RETURN        RETURN
129        END        END

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.21

  ViewVC Help
Powered by ViewVC 1.1.22