2 |
|
|
3 |
subroutine exf_set_gen( |
subroutine exf_set_gen( |
4 |
& genfile, genstartdate, genperiod, exf_inscal_gen, |
& genfile, genstartdate, genperiod, exf_inscal_gen, |
5 |
& genfld, gen0, gen1, genmask, |
& genfld, gen0, gen1, genmask, |
6 |
|
#ifdef USE_EXF_INTERPOLATION |
7 |
|
& gen_lon0, gen_lon_inc, gen_lat0, gen_lat_inc, |
8 |
|
& gen_nlon, gen_nlat, gen_xout, gen_yout, |
9 |
|
#endif |
10 |
& mycurrenttime, mycurrentiter, mythid ) |
& mycurrenttime, mycurrentiter, mythid ) |
11 |
|
|
12 |
c ================================================================== |
c ================================================================== |
17 |
c |
c |
18 |
c started: Ralf.Giering@FastOpt.de 25-Mai-2000 |
c started: Ralf.Giering@FastOpt.de 25-Mai-2000 |
19 |
c changed: heimbach@mit.edu 10-Jan-2002 |
c changed: heimbach@mit.edu 10-Jan-2002 |
20 |
c mods for pkg/seaice: menemenlis@jpl.nasa.gov 20-Dec-2002 |
c 20-Dec-2002: mods for pkg/seaice, menemenlis@jpl.nasa.gov |
21 |
c heimbach@mit.edu: totally re-organized exf_set_... |
c heimbach@mit.edu: totally re-organized exf_set_... |
22 |
c replaced all routines by one generic routine |
c replaced all routines by one generic routine |
23 |
|
c 5-Aug-2003: added USE_EXF_INTERPOLATION for arbitrary |
24 |
|
c input grid capability |
25 |
|
|
26 |
c ================================================================== |
c ================================================================== |
27 |
c SUBROUTINE exf_set_gen |
c SUBROUTINE exf_set_gen |
51 |
_RL mycurrenttime |
_RL mycurrenttime |
52 |
integer mycurrentiter |
integer mycurrentiter |
53 |
integer mythid |
integer mythid |
54 |
|
#ifdef USE_EXF_INTERPOLATION |
55 |
|
c gen_lon_0 ,gen_lat_0 :: longitude and latitude of SouthWest |
56 |
|
c corner of global input grid |
57 |
|
c gen_nlon, gen_nlat :: input x-grid and y-grid size |
58 |
|
c gen_lon_inc :: scalar x-grid increment |
59 |
|
c gen_lat_inc :: vector y-grid increments |
60 |
|
c gen_xout, gen_yout :: coordinates for output grid |
61 |
|
_RL gen_lon0, gen_lon_inc |
62 |
|
_RL gen_lat0, gen_lat_inc(MAX_LAT_INC) |
63 |
|
INTEGER gen_nlon, gen_nlat |
64 |
|
_RS gen_xout (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
65 |
|
_RS gen_yout (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
66 |
|
#endif |
67 |
|
|
68 |
c == local variables == |
c == local variables == |
69 |
|
|
87 |
& ) |
& ) |
88 |
|
|
89 |
if ( first ) then |
if ( first ) then |
90 |
|
#ifdef USE_EXF_INTERPOLATION |
91 |
|
call exf_interp( genfile, exf_iprec |
92 |
|
& , gen1, count0, gen_xout, gen_yout |
93 |
|
& , gen_lon0,gen_lon_inc |
94 |
|
& , gen_lat0,gen_lat_inc |
95 |
|
& , gen_nlon,gen_nlat,mythid |
96 |
|
& ) |
97 |
|
#else |
98 |
call mdsreadfield( genfile, exf_iprec, exf_yftype, 1 |
call mdsreadfield( genfile, exf_iprec, exf_yftype, 1 |
99 |
& , gen1, count0, mythid |
& , gen1, count0, mythid |
100 |
& ) |
& ) |
101 |
|
#endif |
102 |
|
|
103 |
if (exf_yftype .eq. 'RL') then |
if (exf_yftype .eq. 'RL') then |
104 |
call exf_filter_rl( gen1, genmask, mythid ) |
call exf_filter_rl( gen1, genmask, mythid ) |
110 |
if (( first ) .or. ( changed )) then |
if (( first ) .or. ( changed )) then |
111 |
call exf_SwapFFields( gen0, gen1, mythid ) |
call exf_SwapFFields( gen0, gen1, mythid ) |
112 |
|
|
113 |
|
#ifdef USE_EXF_INTERPOLATION |
114 |
|
call exf_interp( genfile, exf_iprec |
115 |
|
& , gen1, count1, gen_xout, gen_yout |
116 |
|
& , gen_lon0,gen_lon_inc |
117 |
|
& , gen_lat0,gen_lat_inc |
118 |
|
& , gen_nlon,gen_nlat,mythid |
119 |
|
& ) |
120 |
|
#else |
121 |
call mdsreadfield( genfile, exf_iprec, exf_yftype, 1 |
call mdsreadfield( genfile, exf_iprec, exf_yftype, 1 |
122 |
& , gen1, count1, mythid |
& , gen1, count1, mythid |
123 |
& ) |
& ) |
124 |
|
#endif |
125 |
|
|
126 |
if (exf_yftype .eq. 'RL') then |
if (exf_yftype .eq. 'RL') then |
127 |
call exf_filter_rl( gen1, genmask, mythid ) |
call exf_filter_rl( gen1, genmask, mythid ) |