1 | subroutine moldiffcoeff_red(nq,dij,gcmind,ncompdiff2) |
---|
2 | |
---|
3 | ! use tracer_mod, only: nqmx, noms, mmol |
---|
4 | IMPLICIT NONE |
---|
5 | c======================================================================= |
---|
6 | c subject: |
---|
7 | c -------- |
---|
8 | c Computing molecular diffusion coefficients |
---|
9 | c following Nair 94 (pg 131) |
---|
10 | c author: MAC 2002 |
---|
11 | c ------ |
---|
12 | c |
---|
13 | c======================================================================= |
---|
14 | #include "dimensions.h" |
---|
15 | #include "callkeys.h" |
---|
16 | #include "diffusion.h" |
---|
17 | #include "tracer.h" |
---|
18 | !#include "chimiedata.h" |
---|
19 | |
---|
20 | c----------------------------------------------------------------------- |
---|
21 | c Input/Output |
---|
22 | c ------------ |
---|
23 | c integer,parameter :: ncompmoldiff = 12 |
---|
24 | integer ncompdiff2 |
---|
25 | integer gcmind(ncompdiff2) |
---|
26 | real dij(ncompdiff2,ncompdiff2) |
---|
27 | |
---|
28 | c Local variables: |
---|
29 | c --------------- |
---|
30 | INTEGER nq, n, nn, i,iq |
---|
31 | cccccccccccccccccccccccccccccccccccccccccccccccccccccccc |
---|
32 | c tracer numbering in the molecular diffusion |
---|
33 | cccccccccccccccccccccccccccccccccccccccccccccccccccccccc |
---|
34 | |
---|
35 | ! real :: dijh2co,dijh2n2,dijh2co2,dijh2o2,dijho,dijref,dijch4n2 |
---|
36 | real :: dijref,dijch4n2,dijch4co !TB16 |
---|
37 | ! integer :: g_h2,g_h,g_o |
---|
38 | integer :: g_ch4,g_n2 ! TB16 |
---|
39 | ! integer :: i_h2,i_h,i_o |
---|
40 | ! integer,parameter :: i_ch4 = 1 |
---|
41 | |
---|
42 | real dnh |
---|
43 | logical,save :: firstcall=.true. |
---|
44 | logical,parameter :: outputcoeffs=.false. ! to output 'coeffs.dat' file, |
---|
45 | ! set outputcoeffs=.true. |
---|
46 | |
---|
47 | ! Initializations at first call (and some sanity checks) |
---|
48 | if (firstcall) then |
---|
49 | ! identify the indexes of the tracers we'll need |
---|
50 | ! g_n2=igcm_n2 |
---|
51 | ! if (g_n2.eq.0) then |
---|
52 | ! write(*,*) "moldiffcoeff: Error; no N2 tracer !!!" |
---|
53 | ! stop |
---|
54 | ! endif |
---|
55 | |
---|
56 | cccccccccccccccccccccccccccccccccccccccccccccccccccccccc |
---|
57 | c fill array to relate local indexes to gcm indexes |
---|
58 | cccccccccccccccccccccccccccccccccccccccccccccccccccccccc |
---|
59 | |
---|
60 | ! gcmind(i_n2) = g_n2 |
---|
61 | c |
---|
62 | cccccccccccccccccccccccccccccccccccccccccccccccccccccccc |
---|
63 | firstcall= .false. |
---|
64 | endif ! of if (firstcall) |
---|
65 | |
---|
66 | dijch4n2 = 0.000018524 |
---|
67 | dijch4co = 0.000018524 |
---|
68 | |
---|
69 | ! find h2, h and o index in gcm |
---|
70 | ! these species are used to define the diffusion coefficients |
---|
71 | |
---|
72 | do n=1,nq |
---|
73 | if (noms(n) .eq. 'ch4_gas') g_ch4=n |
---|
74 | if (noms(n) .eq. 'n2') g_n2=n |
---|
75 | enddo |
---|
76 | |
---|
77 | print*,'moldiffcoeff_red: COEFF CALC' |
---|
78 | |
---|
79 | |
---|
80 | do n=1,ncompdiff2 |
---|
81 | dijref=0. |
---|
82 | if (noms(gcmind(n)) .eq. 'n2') dijref=dijch4n2 |
---|
83 | if (noms(gcmind(n)) .eq. 'co_gas') dijref=dijch4co |
---|
84 | |
---|
85 | if (dijref .gt. 0.0) then |
---|
86 | do nn=n,ncompdiff2 |
---|
87 | dij(nn,n)=dijref |
---|
88 | & *sqrt(mmol(g_ch4)/mmol(gcmind(nn))) |
---|
89 | if(n.eq.nn) dij(nn,n)=1.0 |
---|
90 | if(mmol(gcmind(n)).eq.mmol(gcmind(nn))) dij(nn,n)=1.0 |
---|
91 | dij(n,nn)=dij(nn,n) |
---|
92 | enddo |
---|
93 | endif |
---|
94 | |
---|
95 | if (dijref .eq. 0.0) then |
---|
96 | dijref=dijch4n2 |
---|
97 | dnh=dijref*sqrt(mmol(g_n2)/mmol(gcmind(n))) |
---|
98 | do nn=n,ncompdiff2 |
---|
99 | dij(nn,n)=dnh*sqrt(mmol(g_ch4)/mmol(gcmind(nn))) |
---|
100 | if(n.eq.nn) dij(nn,n)=1.0 |
---|
101 | dij(n,nn)=dij(nn,n) |
---|
102 | enddo |
---|
103 | endif |
---|
104 | |
---|
105 | enddo |
---|
106 | print*, 'TB16: dij=',dij(1,:) |
---|
107 | print*, 'TB16: dij=',dij(2,:) |
---|
108 | print*, 'TB16: dij=',dij(3,:) |
---|
109 | |
---|
110 | |
---|
111 | return |
---|
112 | end |
---|
113 | |
---|