Date: Thu, 01 Nov 2001 11:59:37 -0500
To: pom-users@splash.Princeton.EDU
From: Villy Kourafalou
Subject: "river source" code
Mime-Version: 1.0
Content-Type: multipart/mixed;
boundary="=====================_10335890==_"
X-Mozilla-Status: 8001
X-Mozilla-Status2: 00000000
X-UIDL: 836a8228881a966d2f40b0ddf3fbe5f5
--=====================_10335890==_
Content-Type: text/plain; charset="us-ascii"; format=flowed
Hi everybody,
I have had a wave of requests for this code in the last month, so I am
sending it to all, sorry if this is of no interest to many of you. I tried
to put out a general form, although over the years and with the input of
others that used the code in various applications, I have had several
"customized" versions. I am always available for help, with suggestions on
how to improve implementation, according to the problem.
Cheers,
Villy
________________________________________________________________________________
The philosophy behind my "river source" implementation is that the model has a
closed boundary at the river mouth, so no B.C.'s are needed there and the
model
determines T and S near the river mouth, according to the amount of discharge,
the properties of discharge and ambient conditions. The practical advantage of
this is that the major variable needed is Q, the river discharge in m3/s,
which
is the only parameter that is usually available for major rivers. It is
best to
have daily values of Q if you are trying a realistic simulation with high
frequency atmospheric forcing etc., otherwise you can probably get away with
monthly values.
This volume of water can have any S or T you want to specify, this is why I
have
created separate subroutines for the advection of T and S. I have always
specified zero salinity for freshwater and although I have done many
experiments
with T different than ambient, it is the salinity that controls the plume. In
comparison to heat flux for instance, the amount of coastal cooling that you
would see in winter due to cold river input is secondary. It is useful to try,
however.
This Q enters the surface elevation field and the vertical velocity field,
acting as a "coastal mount" imposed on the model grids adjacent to the river
mouth. You may specify a channel that represents the river and impose Q at the
head of the channel, or at selected coastal points. According to the magnitude
of discharge and the coastal bathymetry, I recommend that you distribute Q
over
a few gridpoints around the mouth (a small river can be just one grid point).
For theoretical calculations, it is good to have at least a couple of grid
points for the river, so that you can define the "width" of the river mouth.
Make sure that these points are not at the coast (where h=0) but
immediately next to the coastal river points.
c++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
c...RIVER SOURCE code from
c...Kourafalou, V.H., L.-Y. Oey, J.D. Wang and T.N. Lee, The fate of river
c...discharge on the continental shelf, I, Modeling the river plume and the
c...inner-shelf coastal current, J. Geophys. Res., 101(C2), 3415-3434, 1996.
c++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
c...Make a routine ADVS
c...same as ADVT, then use ADVS for salinity, ADVT for temperature
c...also, call ADVS every time ADVT is called...
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
c.................in MAIN .....
c...specify the number of source points you want to distribute the river water
on
c...NES can be one
c...in this example NES=3 gives a width at the river mouth of 2*DY
PARAMETER (NES=3)
c...add these COMMON BLOCKS in MAIN, ADVT, ADVS and just the first one in
VERTVL
COMMON/SOURCE/QS(NES)
COMMON/INIT/sini,tini,sq,tq
c...specify these parameters, before initial conditions, say
c...values can be different for each n=1,nes
c...in this example, QFF is equally distributed at each n=1,nes
c...and total Q=1200 m3/s
c...ies has to be the next grid point after the coastal boundary,
c...i.e. depth at i=ies should be > zero, while depth at i=ies-1 is zero
qff(1)=400.
qff(2)=400.
qff(3)=400.
jes(1)=34
jes(2)=34
jes(3)=34
ies(1)=8
ies(2)=9
ies(3)=10
c....initialize fields:
c...this example is for homogeneous initial condition
c...if an initial field of salinity is given,
c...it can be read after this, to overwrite
cv.sini gives the initial salinity true value, so that model value is sini-35
cv.tini gives the initial temp. true value, so that model value is tini-10
sini=38.
tini=12.
c**********************************************************
c
c SPECIFY S,T for SOURCE water:
c.....sq is the (salinity-35) of the source water: S=sq+35
c.....for river, salinity=0, so sq=-35
c.....for sal equal to ambient, specify sq=sini-35.
sq=-35.
c sq=sini-35.
c.....tq is the (temperature-10) of the source water, T=tq+10
c.....for temperature equal to 10, tq=0.
c.....for temp equal to amb ient, specify tq=tini-10.
tq=tini-10.
ccold:
c tq=-10.
chot:
c tq=14.
CSOURCE...CALCULATE DISCHARGE VELOCITY (after reading DX, DY)
DO 9311 N=1,NES
I=IES(N)
J=JES(N)
QS(N)=QFF(N)/(DX(I,J)*DY(I,J))
9311 CONTINUE
c...after
DO 410 J=2,JMM1
DO 410 I=1,IM
410 ELF(I,J)=ELB(I,J)
1 -DTE2*(FLUXUA(I+1,J)-FLUXUA(I,J)+FLUXVA(I,J+1)-FLUXVA(I,J))
2 /ART(I,J)
c...add
RAMPO=1
c... RAMPO is a ramp factor, in case ramping of Q is desired...
DO 4100 N=1,NES
j=jes(n)
i=ies(n)
ELF(I,J)=ELF(I,J)+QS(N)*RAMPO*DTE2
4100 CONTINUE
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
c.......... IN ADVS... at the very end
CSOURCE:
DO 522 N=1,NES
K=1
dzr(k)=1./dz(k)
j=jes(n)
i=ies(n)
FF(I,J,K)=FF(I,J,K)+sq*QS(N)*DZR(K)*DTI2/(H(I,J)+ETF(I,J))
522 CONTINUE
RETURN
END
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
c.......... In ADVT...at the very end
CSOURCE:
c.....tq is set in MAIN
DO 522 N=1,NES
K=1
dzr(k)=1./dz(k)
j=jes(n)
i=ies(n)
FF(I,J,K)=FF(I,J,K)+tq*QS(N)*DZR(K)*DTI2/(H(I,J)+ETF(I,J))
522 CONTINUE
RETURN
END
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
c......... In VERTVL...the first layer is calculated defferently...
c...RAMPO is same as in MAIN...can be put in a COMMON BLOCK
CSOURCE:
RAMPO=1
K=1
do 303 j=2,jmm1
do 303 i=1,im
303 W(I,J,K+1)=W(I,J,K)
1 +DZ(K)*((XFLUX(I+1,J,K)-XFLUX(I,J,K)
2 +YFLUX(I,J+1,K)-YFLUX(I,J,K))/(DX(I,J)*DY(I,J))
3 +(ETF(I,J)-ETB(I,J))/DTI2 )
DO 301 N=1,NES
j=jes(n)
i=ies(n)
302 W(I,J,K+1)=W(I,J,K)-QS(N)*RAMPO
1 +DZ(K)*((XFLUX(I+1,J,K)-XFLUX(I,J,K)
2 +YFLUX(I,J+1,K)-YFLUX(I,J,K))/(DX(I,J)*DY(I,J))
3 +(ETF(I,J)-ETB(I,J))/DTI2 )
301 CONTINUE
CSOURCE DO 710 K=1,KBM1
DO 710 K=2,KBM1
DO 710 J=2,JMM1
DO 710 I=1,IM
710 W(I,J,K+1)=W(I,J,K)
1 +DZ(K)*((XFLUX(I+1,J,K)-XFLUX(I,J,K)
2 +YFLUX(I,J+1,K)-YFLUX(I,J,K))/(DX(I,J)*DY(I,J))
3 +(ETF(I,J)-ETB(I,J))/DTI2 )
c+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Additional reading:
Kourafalou, V.H., L.-Y. Oey, T.N. Lee and J.D. Wang (1996). The fate of
river discharge on the continental shelf. Part II: transport of
low-salinity waters under realistic wind and tidal forcing. Journal of
Geophysical Research, 101(C2), 3435-3455.
Kourafalou, V.H. (1999). Process studies on the Po River plume, North
Adriatic Sea. J. Geophys. Res., 104(C12), 29963-29985.
Kourafalou, V.H. and E.V. Stanev (2001). Modelling the impact of
atmospheric and terrestrial inputs on the western Black Sea coastal
dynamics. Annales Geophysicae, 19, 245-256.
Kourafalou, V.H. (2001). Modelling river plumes on Mediterranean shelves:
Po River plume (North Adriatic Sea) and Axios River plume (North Aegean
Sea). J. Marine Syst. (In Press).
_____________________________________________
Dr. Villy Kourafalou
University of Miami
Rosenstiel School of Marine and Atmospheric Science tel:
(1)-305-361-4905
Division of Meteorology and Physical
Oceanography fax:(1)-305-361-4696
Miami, FL 33149,
U.S.A. villy@rsmas.miami.edu
AND:
National Center for Marine
Research tel:(30)-1-965-6046
Agios Kosmas,
Elliniko fax:(30)-1-965-3522
Athens, 16604,
Greece villy@fl.ncmr.gr
--=====================_10335890==_
Content-Type: application/msword; name="source_general.doc";
x-mac-type="42494E41"; x-mac-creator="4D535744"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="source_general.doc"