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

Contents 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 - (show 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 #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