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"