/[MITgcm]/MITgcm_contrib/jscott/igsm/src_chem/chemdiff.F
ViewVC logotype

Annotation of /MITgcm_contrib/jscott/igsm/src_chem/chemdiff.F

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


Revision 1.1 - (hide annotations) (download)
Thu Sep 17 17:40:32 2009 UTC (15 years, 10 months ago) by jscott
Branch: MAIN
CVS Tags: HEAD
chem module archive

1 jscott 1.1 #include "ctrparam.h"
2    
3     ! ============================================================
4     !
5     ! CHEMDIFF.F: Subroutine for calculating horizontal
6     ! diffusion of MIT Global Chemistry Model
7     !
8     ! ------------------------------------------------------------
9     !
10     ! Author: Chien Wang
11     ! MIT Joint Program on Science and Policy
12     ! of Global Change
13     !
14     ! ----------------------------------------------------------
15     !
16     ! Revision History:
17     !
18     ! When Who What
19     ! ---- ---------- -------
20     ! 013096 Chien Wang rev.
21     ! 080100 Chien Wang repack based on CliChem3 & add cpp
22     ! 051804 Chien Wang rev.
23     !
24     ! ==========================================================
25    
26     Subroutine chemdiff(ifdiff,x00,x11,dta)
27    
28     #include "chem_para"
29     #include "chem_com"
30     #include "BD2G04.COM"
31    
32     dimension x00 (nlon,nlat,nlev)
33     dimension x11 (nlon,nlat,nlev)
34    
35     dimension dcdy(nlat,nlev)
36    
37     #if ( defined CPL_CHEM )
38    
39     c-------------------------------------------------------
40     c Definitions of parameters:
41     c
42     istart=1
43     iend =nlon
44    
45     c
46     c 013096
47     c fktdif span from 2.e6 in the first three years to
48     c 5.e5 or 1.e6 in twenty years and maintain this value
49     c thereafter:
50     c
51     c xxx = float(myyear - 3)/20.0
52     c xxx = amin1(1.0,amax1(0.0,xxx))
53     c fktdif = (20.0 - xxx * 10.0)*1.e5 ! m2/s
54    
55     c fktdif = 4.e6 !m2/s
56    
57     c if(ifdiff.eq.1)then
58     c fktdif = 2.e6
59     c else if(ifdiff.eq.2)then
60     c fktdif = 3.e6
61     c endif
62    
63     c 111596:
64     c fktdif = float(ifdiff)*1.e6
65     fktdif = float(ifdiff)*1.e5
66    
67     c=====
68     c Calculate dcdy:
69     c
70     do i=istart,iend
71     do j=2,nlat
72     do k=1,nlev
73     dcdy(j,k)=(x11(i,j,k)-x11(i,j-1,k))
74     & /dyv(j)
75     end do
76     end do
77     end do
78    
79     c=====
80     c Calculate meridional eddy diffusion:
81     c
82     do k=1,nlev
83     paver = 0.5*(p00(1,1)+p00(1,2))
84     fluxl =-fktdif
85     & /dyv(2)*dcdy(2,k)*dta
86     & * paver
87     fluxl=max(-0.5*x00(1,2,k), min(0.5*x00(1,1,k),fluxl))
88     do j=2,nlat1
89     paver = 0.5*(p00(1,j)+p00(1,j+1))
90     fluxr =-fktdif
91     & /dyv(j+1)*dcdy(j+1,k)*dta
92     & * paver
93     fluxr=max(-0.5*x00(1,j+1,k),min(0.5*x00(1,j,k),fluxr))
94     x00(1,j,k)=x00(1,j,k)-(fluxr-fluxl)
95     fluxl=fluxr
96     end do
97     end do
98    
99     c call chemcheck(x00)
100    
101     #endif
102    
103     return
104     end
105    

  ViewVC Help
Powered by ViewVC 1.1.22