/[MITgcm]/MITgcm_contrib/jscott/igsm/src/hordiff.F
ViewVC logotype

Annotation of /MITgcm_contrib/jscott/igsm/src/hordiff.F

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


Revision 1.1 - (hide annotations) (download)
Fri Aug 11 19:35:31 2006 UTC (18 years, 11 months ago) by jscott
Branch: MAIN
CVS Tags: HEAD
atm2d package

1 jscott 1.1
2     #include "ctrparam.h"
3    
4     ! ==========================================================
5     !
6     ! HORDIFF.F: subroutine for calculating horizontal
7     ! diffusion of Q.
8     !
9     ! ----------------------------------------------------------
10     !
11     ! Revision History:
12     !
13     ! When Who What
14     ! ---- ---------- -------
15     ! 080100 Chien Wang repack based on CliChem3 & M24x11,
16     ! and add cpp.
17     !
18     ! ==========================================================
19    
20     SUBROUTINE HORDIFF(DTDIF)
21    
22     #include "BD2G04.COM"
23    
24     COMMON U,V,T,P,Q
25     DIMENSION VT(IM0,JM0,LM0),TT(IM0,JM0,LM0),PT(IM0,JM0),
26     * QT(IM0,JM0,LM0),PU(IM0,JM0),FD(IM0,JM0),DQDY(JM0,LM0)
27     COMMON/HDFLUX/VQHD(JM0,LM0)
28     logical first
29     data first /.true./
30     I=1
31     JMM1=JM0-1
32     FDIFF=2.5E5
33     FDIFF=5.0E5
34     if(first)then
35     print *,' HOR DIFF for Q'
36     print *,' FDIFF=',FDIFF
37     print *,'IM0=',IM0,' JM0=',JM0,' LM0=',LM0
38     first=.false.
39     endif
40     DO 50 J=1,JM0
41     50 FD(I,J)=P(I,J)*DXYP(J)
42     DO 57 L=1,LM0
43     DO 57 J=1,JM0
44     AJL(J,L,56)=AJL(J,L,56)-Q (I,J,L)*P(I,J)
45     57 QT (I,J,L)=Q (I,J,L)*FD(I,J)
46     DO 100 L=1,LM0
47     DO 100 J=2,JM0
48     DQDY(J,L)=(Q (1,J,L)-Q (1,J-1,L))/DYV(J)
49     100 CONTINUE
50     DO 200 L=1,LM0
51     PSAV=0.5*(P(1,1)+P(1,2))
52     FLUXL=FDIFF*DQDY(2,L)*DXV(2)*PSAV*DTDIF
53     FLUXL=DMAX1( -0.5*QT(1,2,L), DMIN1(0.5*QT(1,1,L),FLUXL))
54     c FLUXR=0.
55     QT (1,1,L)=QT (1,1,L)+FLUXL
56     DO 210 J=2,JMM1
57     PSAV=0.5*(P(1,J)+P(1,J+1))
58     FLUXR=FDIFF*DQDY(J+1,L)*DXV(J+1)*PSAV*DTDIF
59     FLUXR=DMAX1( -0.5*QT(1,J+1,L), DMIN1(0.5*QT(1,J,L),FLUXR))
60     QT (1,J,L)=QT (1,J,L)+(FLUXR-FLUXL)
61     VQHD(J,L)=-FLUXL/(DXV(J)*0.5*(P(1,J)+P(1,J-1))*DTDIF)
62     FLUXL=FLUXR
63     210 CONTINUE
64     QT (1,JM,L)=QT (1,JM,L)-FLUXR
65     J=JM
66     VQHD(J,L)=-FLUXL/(DXV(J)*0.5*(P(1,J)+P(1,J-1))*DTDIF)
67     200 CONTINUE
68     DO 300 L=1,LM0
69     DO 300 J=1,JM0
70     Q (I,J,L)=QT (I,J,L)/FD(I,J)
71     AJL(J,L,56)=AJL(J,L,56)+Q (I,J,L)*P(I,J)
72     300 CONTINUE
73     DOPK=1.
74     RETURN
75     END
76    

  ViewVC Help
Powered by ViewVC 1.1.22