/[MITgcm]/MITgcm_contrib/gael/pkg/smooth2/smooth_init3D.F
ViewVC logotype

Annotation of /MITgcm_contrib/gael/pkg/smooth2/smooth_init3D.F

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


Revision 1.1 - (hide annotations) (download)
Sun Oct 25 21:24:04 2009 UTC (15 years, 8 months ago) by gforget
Branch: MAIN
Renovated pkg/smooth. Ready for MITgcm/pkg check in?

1 gforget 1.1 C $Header: /u/gcmpack/MITgcm_contrib/gael/pkg/smooth2/smooth_init3D.F,v 1.1 2009/10/24 23:27:24 gforget Exp $
2     C $Name: $
3    
4     #include "CPP_OPTIONS.h"
5    
6     subroutine smooth_init3D (smoothOpNb,mythid)
7    
8     C *==========================================================*
9     C | SUBROUTINE smooth_init3D
10     C | o Routine that initializes one 3D smoothing/correlation operator
11     C | by computing/writing the corresponding diffusion operator
12     C *==========================================================*
13    
14     cgf the choices of smooth3Dtype and smooth3Dsize need comments...
15     cgf
16     cgf smooth3DtypeH= 1) HORIZONTAL ALONG GRID AXIS
17     cgf 2-3) GMREDI TYPES
18     cgf 4) HORIZONTAL BUT WITH ROTATED AXIS
19     cgf for now I focus on the simpler smooth3DtypeH=1 case
20    
21    
22     IMPLICIT NONE
23     #include "SIZE.h"
24     #include "EEPARAMS.h"
25     #include "PARAMS.h"
26     #include "DYNVARS.h"
27     #include "GRID.h"
28     c#include "tamc.h"
29     #include "FFIELDS.h"
30     #include "EOS.h"
31     #include "smooth.h"
32    
33     integer i,j,k, bi, bj, imin, imax, jmin, jmax
34     integer itlo,ithi
35     integer jtlo,jthi
36     integer myThid
37     character*( 80) fnamegeneric
38     _RL smooth3D_KzMax
39     integer ii,jj,kk
40     integer smoothOpNb
41    
42     jtlo = mybylo(mythid)
43     jthi = mybyhi(mythid)
44     itlo = mybxlo(mythid)
45     ithi = mybxhi(mythid)
46    
47     smooth3DtotTime=smooth3Dnbt(smoothOpNb)*smooth3DdelTime
48    
49     WRITE(standardMessageUnit,'(A,2I4,/,3f5.2)')
50     & 'smooth 3D default parameters: ',
51     & smooth3Dnbt(smoothOpNb),smooth3DtotTime,
52     & smooth3D_Lx0(smoothOpNb),smooth3D_Ly0(smoothOpNb),
53     & smooth3D_Lz0(smoothOpNb)
54    
55    
56     c vertical smoothing:
57    
58     if (smooth3DsizeZ(smoothOpNb).EQ.3) then
59     write(fnamegeneric(1:80),'(1a,i3.3)')
60     & 'smooth3DscalesZ',smoothOpNb
61     call mdsreadfield(fnamegeneric,smoothprec,'RL',nR,
62     & smooth3D_Lz,1,mythid)
63     _EXCH_XYZ_RL( smooth3D_Lz, mythid )
64     else
65     DO bj=jtlo,jthi
66     DO bi=itlo,ithi
67     DO k=1,Nr
68     DO j=1-OLy,sNy+OLy
69     DO i=1-OLx,sNx+OLx
70     smooth3D_Lz(i,j,k,bi,bj)=smooth3D_Lz0(smoothOpNb)
71     ENDDO
72     ENDDO
73     ENDDO
74     ENDDO
75     ENDDO
76     endif
77    
78     DO bj=jtlo,jthi
79     DO bi=itlo,ithi
80     DO k=1,Nr
81     DO j=1-OLy,sNy+OLy
82     DO i=1-OLx,sNx+OLx
83     smooth3D_kappaR(i,j,k,bi,bj)=smooth3D_Lz(i,j,k,bi,bj)*
84     & smooth3D_Lz(i,j,k,bi,bj)/smooth3DtotTime/2
85     ENDDO
86     ENDDO
87     ENDDO
88     ENDDO
89     ENDDO
90    
91     c avoid excessive vertical smoothing:
92     if (smooth3DsizeZ(smoothOpNb).NE.3) then
93     DO bj=jtlo,jthi
94     DO bi=itlo,ithi
95     DO k=1,Nr
96     DO j=1-OLy,sNy+OLy
97     DO i=1-OLx,sNx+OLx
98    
99     smooth3D_KzMax=drC(k)
100     smooth3D_KzMax=smooth3D_KzMax*smooth3D_KzMax/smooth3DtotTime/2
101     if (smooth3D_kappaR(i,j,k,bi,bj).GT.smooth3D_KzMax) then
102     smooth3D_kappaR(i,j,k,bi,bj)=smooth3D_KzMax
103     endif
104     ENDDO
105     ENDDO
106     ENDDO
107     ENDDO
108     ENDDO
109     endif
110    
111     _EXCH_XYZ_RL( smooth3D_kappaR, myThid )
112    
113    
114     c hoizontal smoothing:
115    
116     if (smooth3DsizeH(smoothOpNb).EQ.3) then
117     write(fnamegeneric(1:80),'(1a,i3.3)')
118     & 'smooth3DscalesH',smoothOpNb
119     call mdsreadfield(fnamegeneric,smoothprec,'RL',nR,
120     & smooth3D_Lx,1,mythid)
121     call mdsreadfield(fnamegeneric,smoothprec,'RL',nR,
122     & smooth3D_Ly,2,mythid)
123     _EXCH_XYZ_RL( smooth3D_Lx, mythid )
124     _EXCH_XYZ_RL( smooth3D_Ly, mythid )
125     else
126     DO bj=jtlo,jthi
127     DO bi=itlo,ithi
128     DO k=1,Nr
129     DO j=1-OLy,sNy+OLy
130     DO i=1-OLx,sNx+OLx
131     smooth3D_Lx(i,j,k,bi,bj)=smooth3D_Lx0(smoothOpNb)
132     smooth3D_Ly(i,j,k,bi,bj)=smooth3D_Ly0(smoothOpNb)
133     ENDDO
134     ENDDO
135     ENDDO
136     ENDDO
137     ENDDO
138     endif
139    
140     DO bj=jtlo,jthi
141     DO bi=itlo,ithi
142     DO k=1,Nr
143     DO j=1-OLy,sNy+OLy
144     DO i=1-OLx,sNx+OLx
145     smooth3D_Kuy(i,j,k,bi,bj)=0.
146     smooth3D_Kvx(i,j,k,bi,bj)=0.
147     smooth3D_Kwx(i,j,k,bi,bj)=0.
148     smooth3D_Kwy(i,j,k,bi,bj)=0.
149     smooth3D_Kwz(i,j,k,bi,bj)=0.
150     smooth3D_Kux(i,j,k,bi,bj)=smooth3D_Lx(i,j,k,bi,bj)*
151     & smooth3D_Lx(i,j,k,bi,bj)/smooth3DtotTime/2
152     smooth3D_Kvy(i,j,k,bi,bj)=smooth3D_Ly(i,j,k,bi,bj)*
153     & smooth3D_Ly(i,j,k,bi,bj)/smooth3DtotTime/2
154     smooth3D_Kuz(i,j,k,bi,bj)=0.
155     smooth3D_Kvz(i,j,k,bi,bj)=0.
156     ENDDO
157     ENDDO
158     ENDDO
159     ENDDO
160     ENDDO
161    
162     c is exchange useful here?
163    
164     _EXCH_XYZ_RL( smooth3D_kappaR, myThid )
165     _EXCH_XYZ_RL( smooth3D_Kwx, myThid )
166     _EXCH_XYZ_RL( smooth3D_Kwy, myThid )
167     _EXCH_XYZ_RL( smooth3D_Kwz, myThid )
168     _EXCH_XYZ_RL( smooth3D_Kux, myThid )
169     _EXCH_XYZ_RL( smooth3D_Kvy, myThid )
170     _EXCH_XYZ_RL( smooth3D_Kuz, myThid )
171     _EXCH_XYZ_RL( smooth3D_Kvz, myThid )
172     _EXCH_XYZ_RL( smooth3D_Kuy, myThid )
173     _EXCH_XYZ_RL( smooth3D_Kvx, myThid )
174    
175    
176     c write diffusion operator to file
177    
178     write(fnamegeneric(1:80),'(1a,i3.3)')
179     & 'smooth3Doperator',smoothOpNb
180    
181     call mdswritefield(fnamegeneric,smoothprec,.false.,'RL',
182     & nR,smooth3D_Kwx,1,1,mythid)
183     call mdswritefield(fnamegeneric,smoothprec,.false.,'RL',
184     & nR,smooth3D_Kwy,2,1,mythid)
185     call mdswritefield(fnamegeneric,smoothprec,.false.,'RL',
186     & nR,smooth3D_Kwz,3,1,mythid)
187     call mdswritefield(fnamegeneric,smoothprec,.false.,'RL',
188     & nR,smooth3D_Kux,4,1,mythid)
189     call mdswritefield(fnamegeneric,smoothprec,.false.,'RL',
190     & nR,smooth3D_Kvy,5,1,mythid)
191     call mdswritefield(fnamegeneric,smoothprec,.false.,'RL',
192     & nR,smooth3D_Kuz,6,1,mythid)
193     call mdswritefield(fnamegeneric,smoothprec,.false.,'RL',
194     & nR,smooth3D_Kvz,7,1,mythid)
195     call mdswritefield(fnamegeneric,smoothprec,.false.,'RL',
196     & nR,smooth3D_Kuy,8,1,mythid)
197     call mdswritefield(fnamegeneric,smoothprec,.false.,'RL',
198     & nR,smooth3D_Kvx,9,1,mythid)
199     call mdswritefield(fnamegeneric,smoothprec,.false.,'RL',
200     & nR,smooth3D_kappaR,10,1,mythid)
201    
202    
203     END

  ViewVC Help
Powered by ViewVC 1.1.22