Dynamics and Thermodynamics Demonstration Model (DTDM) Robert Fovell University of California, Los...

Preview:

Citation preview

Dynamics and Thermodynamics Demonstration Model

(DTDM)

Robert FovellUniversity of California, Los Angeles

rfovell@ucla.edu

DTDM home page

http://www.atmos.ucla.edu/~fovell/DTDM/ or

http://tinyurl.com/nhoj6

Files:DTDM_package.tar [< 1 MB]DTDM_examples.tar.gz [600 MB, expands to 1 GB]

Extract:tar -xvf DTDM_package.tartar -zxvf DTDM_examples.tar.gz

DTDM is…

• A very simple, 2D compressible model• Free, portable: Fortran 77 (g77) and GrADS• Demonstrates gravity waves, sea-breeze

circulations, convective rolls, KHI, etc.• Options for including heat and momentum

sources, surface fluxes, cold pools, etc.• Input script driven… may not need to modify

code

What DTDM is not…

• Not a sophisticated model– Second-order numerics, primitive physics– Crude boundary conditions

• Not guaranteed bug-free• Not always physically accurate or realistic

– Some parameters, processes may be exaggerated for demonstration purposes and/or computational efficiency

• Not complete or research-quality

DTDM features

• Model prognostic variables:– Wind components: u, w, v (when Coriolis active)– Potential temperature: – Nondimensional pressure:

• Environmental settings– Brunt-Vaisala frequency of boundary layer, free troposphere and

stratosphere– Up to 3 layers for vertical shear– Latitude (for Coriolis parameter)

• Numerical settings– Horizontal and vertical diffusion– Temporal diffusion– Wave speed for open lateral boundaries– Speed of sound

DTDM features

• Source terms– Momentum source, configurable as single or

repeated, steady or oscillatory– Heat source, steady or oscillatory– Surface heat flux– Sea-breeze-specific heat source– Lower tropospheric cooling zone and/or impulsive

cold block– Impulsive thermal

• Creates GrADS output

DTDM rationale and use

• Demonstrate physical and thermodynamical phenomena with simple simulations– Stills, animations, decomposing forcing fields, etc.

• Provide a hands-on package suitable for homeworks, labs– Easily runs on Unix and Unix-like systems (Linux, Mac OS

X, Suns, etc.)

• Next generation– Java or C++?– Web-based?– Implement using WRF?– Namelist input (done as of July 2006 version)

DTDM package DTDM_package.tar

• DTDM_model.f ~ program• storage.txt ~ defines arrays• Makefile

– If storage.txt modifed, touch DTDM_model.f and make again

• Model input scripts (input_*.txt)

• GrADS plotting scripts (*.gs)

storage.txt

c max array dimensions parameter(nxm=503,nzm=122,ny=1) ! requires nx <= nxm, nz <= nzm

nxm, nzm are max values ofhorizontal dimensions nx and nz

Makefile

# Mac OS X (PPC) with IBM xlf#FC = xlf#FCFLAGS = -O3 -C -Wl,-stack_size,10000000,-stack_addr,0xc0000000# Linux with Intel compiler#FC = ifort#FCFLAGS = -O3 -convert big_endian# Linux with Portland Group compilerFC = pgf77FCFLAGS = -O3 -byteswapio

SOURCES=src/DTDM_model.f src/blktri.f

OBJS= $(SOURCES:.f=.o)

dtdm: $(OBJS)$(FC) $(FCFLAGS) -o $@ $(OBJS)

How to run

• Edit Makefile - make sure correct lines are uncommented

• Execute ./make (executable is dtdm)• Edit input.txt file (many examples

included)– First line specifies name of GrADS output

• ./dtdm < input.txt– Output are GrADS control (.ctl) and data (.dat)

files– Do NOT use “>” symbol by accident!

New for July, 2006, version

• Namelist input replaces previous input scripts• Anelastic model option installed• Warning: not all combinations of model

physics switches and parameters have been tried; bugs may remain

• Many input scripts set up with sound speed csnd = 50 m/s, which is far, far too small– In many cases, this permits much faster

integration without fundamentally altering results

Statospheric gravity waves produced by obstacles

(convective cells)

Reference: Fovell, Durran and Holton (1992, J. Atmos. Sci.)**

**references to my papers illustrate my interest in these phenomena

input_strfcn_isolated_nowind.txt

c===================================================================cc The experiment namelist sets the casename for naming the c GrADS output. Max 72 characters and avoid using underscores.c Enter filename within single quotes (e.g., 'test.number.1')cc===================================================================

&experimentcasename = 'strfcn.isolated.1200sec.nowind',

$

First namelist section sets experiment name (casename)Names used for GrADS files limited to 76 characters;

avoid underscores with GrADS

input_strfcn_isolated_nowind.txtc===================================================================cc The grid_run namelist specifies model dimensions, integrationc length, and plotting output intervalcc nx - number of horizontal grid points - max NXM in storage.txtc default is 101c nz - number of vertical grid points - max NZM in storage.txtc default is 84c dx - horizontal grid spacing (m; default = 1000.)c dz - vertical grid spacing (m; default = 250.)c dt - time step (s; default = 1.0)c timend - integration stop time (s; default = 7200.)c plot - plotting interval (s; default = 300.)c * if interval < 60 sec, GrADS will report time incorrectlyc===================================================================

&grid_runnx = 101,nz = 122,dx = 1000.,dz = 250.,dt = 1.0,timend = 7200.,plot = 60.,

$

input_strfcn_isolated_nowind.txt&environ section

c===================================================================c c The environ namelist sets up the model initial statecc bvpbl - PBL tropospheric BV freq (1$s; default = 0.01)c pbld - PBL depth (m; default = 2000.)c bvtropo - free tropospheric BV freq (1$s; default = 0.01)c tropo - tropopause height (m; default = 12000.)c bvstrat - stratospheric BV freq (1$s; default = 0.02)c psurf - surface pressure (mb; default = 965.)c usurf - surface wind speed (m$s; default = 0.)c shear1 - vertical shear for first layer (1$s; default = 0.)c depth1 - thickness of first layer (m; default = 3000.)c shear2 - vertical shear for second layer (1$s; default = 0.)c depth2 - thickness of second layer (m; default = 1500.)c shear3 - vertical shear above second layer (1$s; default = 0.)c * this layer extends to model topcc===================================================================

input_strfcn_isolated_nowind.txt&environ section

&environbvpbl = 0.002,pbld = 2000.,bvtropo = 0.01,tropo = 12000.,bvstrat = 0.02,psurf = 965.,usurf = 0.,shear1 = 0.,sdepth1 = 3000.,shear2 = 0.,sdepth2 = 1500.,shear3 = 0.,

$

input_strfcn_isolated_nowind.txt&streamfunction section

c===================================================================cc The streamfunction namelist sets up a momentum source usedc to excite gravity waves. The source may be isolated or repeated,c oscillatory or steadycc istrfcn (1 = turn streamfunction forcing on; default is 0)c s_repeat(1 for repeated source, 0 for single source; default 0)c s_ampl - amplitude of momentum source (kg$m/s/s; default = 40.)c s_naught - height of source center (m; default = 6000.)c s_hwavel - horizontal wavelength of source (m; default = 40000.)c s_vwavel - vertical wavelength of source (m; default = 18000.)c s_period - oscillation period (s; default = 1200.)cc===================================================================

&streamfunctionistrfcn = 1,s_repeat = 0,s_ampl = 40.,s_znaught = 6000.,s_hwavel = 10000.,s_vwavel = 18000.,s_period = 1200.,

$

dtdm < input_strfcn_isolated_nowind.txt

Streamfunction

Initial conditions

Note: aspect ratio not 1:1

Animation (strfcn_isolated_movie.gs)

s_period = 1200 secFor this run: bvpbl = .01

(only part of model depth shown)Note: aspect ratio not 1:1

Invoking GrADS

• gradsnc -l

– “-l” requests landscape-oriented window– Opens a GrADS graphics window– GrADS prompt is “ga->”

• ga-> open strfcn.isolated.1200sec.nowind

– Tab completion works!• ga-> strfcn_isolated_movie.gs

– Executes a GrADS script (gs)

Varying oscillation period(strfcn_isolated.gs)

Note: aspect ratio not 1:1

Only part of domain is shown

Inside a GrADS script(strfcn_isolated.gs)

'set mproj off''set display color white'* changes aspect ratio of plot'set vpage 0.5 11.0 0.5 5''clear''set grads off''set lev 10 16''set lon 24 74 ''run rgbset.gs’

Continues…

'set gxout shaded''set xaxis 34 64 4''set yaxis 10 16 2''set clevs -2.5 -2.0 -1.5 -1.0 -0.5 0 0.5 1.0 1.5 2.0 2.5''set ccols 49 47 45 43 41 0 61 62 63 65 67 69''d thp''cbarn 1.0 0 6.0''set gxout contour''set cmax 2.4''set cmin -2.4''set cint 0.4''d w'

Executing this GrADS scriptgradsnc -l

ga-> open strfcn.isolated.1200sec.nowind

ga-> q fileFile 1 : DTDM demo simulation Descriptor: strfcn.isolated.1200sec.nowind.ctl Binary: strfcn.isolated.1200sec.nowind.dat Type = Gridded Xsize = 99 Ysize = 1 Zsize = 120 Tsize = 121 Number of Variables = 9 u 120 0 horizontal velocity up 120 0 pert horizontal velocity w 120 0 vertical velocity th 120 0 potential temperature thp 120 0 pert potential temperature pi 120 0 ndim pressure pip 120 0 pert ndim pressure ppmb 120 0 pert pressure in millibars str 120 0 streamfunction

ga-> set t 115ga-> strfcn_isolated

Gravity wavesPeriod and frequency

Wavelength and wavenumber

Intrinsic frequency & mean flow

Dispersion relation

Gravity waves

Tilt angle from verticalDispersion relation

Adding flow relative to momentum source

input_strfcn_isolated_up4.txt &environ

bvpbl = 0.01,pbld = 2000.,bvtropo = 0.01,tropo = 12000.,bvstrat = 0.02,psurf = 965.,usurf = 0.,shear1 = 0.,sdepth1 = 8000.,shear2 = 0.002,sdepth2 = 2000.,shear3 = 0.,

$

Shear = 0.002 over 2000 m = ∆U = 4 m/sShear = 0.004 yields ∆U = 8 m/s

dtdm < input_strfcn_isolated_up4.txt

Flow relative to obstacle

Wind U

Height z

Flow relative to obstacle(period = 1200 sec)

U = 0

U = 4 m/s

U = 8 m/s

Note: aspect ratio not 1:1

Further exploration

• Measure phase angles, compare to theory– Perhaps alter plot aspect ratio to 1:1

• Vary source frequency, amplitude, width

• Vary environmental stability, wind and wind shear

Obstacle-effect gravity wavesabove convective rolls

Reference: Fovell (2004, Mon. Wea. Rev.)

input_strfcn_rolls.txt&environ section

usurf = 0.,shear1 = 0.,sdepth1 = 1800.,shear2 = -0.0036,sdepth2 = 2500.,shear3 = 0.,

Zero shear below 1.8 km-9 m/s of wind speed difference between

1.8 and 4.3 km

input_strfcn_rolls.txt

&streamfunctionistrfcn = 1,s_repeat = 1,s_ampl = .40,s_znaught = 1000.,s_hwavel = 10000.,s_vwavel = 6000.,s_period = 0.,

$

s_repeat= 1 for repeated sources_period=0 for steady momentum source

Initial conditions

dtdm < input_strfcn_rolls.txt

Varying flow above obstacle(strfcn_rolls.gs)

u = -3 m/s

u = -6 m/s

u = -9 m/s

Note: aspect ratio not 1:1

Gravity waves excited by heat sources

References: Fovell (2002, QJRMS),Fovell, Mullendore and Kim (2006, Mon. Wea. Rev.)

Nicholls et al. (1991, J. Atmos. Sci.)Mapes (1993, J. Atmos. Sci.)

&experimentcasename = 'hsrc.2mode.no.oscil',

$

&grid_runnx = 101,nz = 84,dx = 1000.,dz = 250.,dt = 2.0,timend = 6000.,plot = 60.,

$

input_hsrc.txt

&environbvpbl = 0.00,pbld = 1500.,bvtropo = 0.01,tropo = 12000.,bvstrat = 0.02,psurf = 965.,usurf = 0.,shear1 = 0.,sdepth1 = 1800.,shear2 = 0.,sdepth2 = 2500.,shear3 = 0.,

$

c===================================================================cc The atmos_heat_source namelist sets up a free tropospheric heat sourcec used to excite gravity waves. The source may be oscillatory or steadycc ihsrc (1 = turn tropospheric heat source on; default is 0)c h_ampl - amplitude of heat source (K$s; default = 0.075)c h_radius_x - horizontal radius of heat source (m; default = 3000.)c h_radius_z - vertical radius of heat source (m; default = 3000.)c h_center_z - height of heat source center (m; default = 3000.)c h_freq - frequency for heat source oscillation (1$s; default = 0.005)c h_modes - number of vertical modes (ndim, max 2; default = 2)cc===================================================================

&atmos_heat_sourceihsrc = 1,h_ampl = 0.025,h_radius_x = 3000.,h_radius_z = 3000.,h_center_z = 3000.,h_freq = 0.000,h_modes = 2,

$

input_hsrc.txt

Heating profiles

For heat source depth H

1st mode H = 6000 m(2 x h_radius_z)

2nd mode H = 3000 m

Results(hsrc.gs)

Animations(hsrc_movie.gs)

Phase speed…

Animationh_freq = 0.005 [~ 21 min]

A simple sea-breeze circulation

Reference: Dailey and Fovell (1999, Mon. Wea. Rev.)

Simple sea-breeze strategy

• Add a surface heat flux for part of domain (“land”)

• Large vertical diffusion as proxy for boundary layer mixing

• One use: to investigate effect of offshore or onshore wind on lifting and propagation of sea-breeze front

input_sbf_no_rolls.txt

&experimentcasename = 'sbf.noroll.nowind',

$

&grid_runnx = 301,nz = 26,dx = 1000.,dz = 400.,dt = 1.0,timend = 18000.,plot = 300.,

$

&frameworkcsnd = 50.,

$

&numericscstar = 100.,dkx = 1500.,dkz = 100.,

$

Coarse resolutionlarge diffusion suppresses noise and

mixes surface heating vertically

input_sbf_no_rolls.txt

Coastline 90 grid points from left side (of 301 total)Large cdh reflects unstable conditions;

No imposed random perturbations (irand=0)

c===================================================================cc The surface_flux namelist sets up at least part of a domainc to represent a heated surface, to heat atmosphere from belowcc ishflux (1 = turn surface heat flux on; default is 0)c tdelt - initial ground-air T difference (K; default = 12)c icoast - gridpt location of coastline (0 for all land; default = 30)c cdh - effective heat flux coefficient (ndim; default = 7.2e-3)c irand - (1 = impose randomness on surface heat flux; default is 0)cc===================================================================

&surface_fluxishflux = 1,tdelt = 12.,icoast = 90,cdh = 7.2e-3,irand = 0,

$

Cases

Surface wind speed = -3, 0 and +3 m/s

Offshore case animation(sbf_movie.gs)

Colored: vertical velocityContoured: perturbation horizontal velocity

Mean flow effect on sea-breeze

(sbf_noroll.gs)

Perturbation u(contoured)and w (shaded);Aspect ratio not 1:1

3 m/s offshore

No mean flow

3 m/s onshore

Sea-breeze with “rolls”

• irand = 1 superimposes random perturbations on surface heat flux– Encourages 2D pseudo-roll circulations– In reality, rolls are 3D organized by along-

roll shear– Two-dimensionality provides an

(overpowering) organization mechanism• input_sbf_with_rolls.txt

Vertical velocity(sbfhcr.gs)

set t 20sbfhcr.gs

Added horizontal velocity

set ccolor 1set cthick 6

d up

Added airflow vectors

set ccolor 1d u;w

Animation(sbfhcr_movie.gs)

Effect of Coriolis on the sea-breeze circulation

Reference: Rotunno (1983, J. Atmos. Sci.)

Long-term sea-breeze strategy

• Add a lower tropospheric heat source (Rotunno 1983), mimicking effect of surface heating + vertical mixing

• Reduce vertical diffusion• Simulations start at sunrise• One use: to investigate effect of latitude

and/or linearity on onshore flow, timing and circulation strength

input_seabreeze.txt&rotunno_seabreeze section

c===================================================================cc The rotunno_seabreeze namelist implements a lower troposphericc heat source following Rotunno (1983), useful for long-termc integrations of the sea-land-breeze circulationc c iseabreeze (1 = turn Rotunno heat source on; default is 0)c sb_ampl - amplitude of heat source (K$s; default = 0.000175)c sb_x0 - controls heat source shape at coastline (m; default = 1000.)c sb_z0 - controls heat source shape at coastline (m; default = 1000.)c sb_period - period of heating, in days (default = 1.0)c sb_latitude - latitude for experiment (degrees; default = 60.)c sb_linear (1 = linearize model; default = 1)cc===================================================================

input_seabreeze.txt&rotunno_seabreeze section

&rotunno_seabreezeiseabreeze = 1,sb_ampl = 0.000175,sb_x0 = 1000.,sb_z0 = 1000.,sb_period = 1.0,sb_latitude = 30.,sb_linear = 1,

$

sb_latitude ≠ 0 activates Coriolissb_linear = 1 linearizes the model

Other settings include:dx = 2000 m, dz = 250 m, dt = 1 secdkx = dkz = 5 m2/s (since linear)

Cross-shore near-surface wind at coastline (linear model)

Time series using GrADS

> open seabreeze.rotunno.00deg> set t 1 289> set z 1> set x 100> set vrange -25 25> set xaxis 0 24 3> d u> open seabreeze.rotunno.60deg> d u.2> open seabreeze.rotunno.30deg> d u.3

Cross-shore flow and vertical motion at noon

Shaded: vertical velocity; contoured: cross-shore velocity

(seabreeze.gs)

Cross-shore flow and vertical motion at sunset

Cross-shore flow and vertical motion at midnight

Hovmoller diagrams(seabreeze_hov.gs)

Note lack of propagation

Further exploration

• Make model nonlinear

• Add mean flow and wind shear

• Explain latitudinal dependence

• Compare to actual data

Fun with cold pools

Reference: Fovell and Tan (2000, QJRMS)Droegemeier and Wilhelmson (1987, J. Atmos. Sci.)

Cold pool options

• ICOOLZONE has two options– ICOOLZONE = 1 for “storm-adaptive” cold pool…

maintained and stays aligned with gust front– ICOOLZONE = 2 gives model impulsive block of

cold air• Lower resolution - look at lifting• Higher resolution - Kelvin-Helmholtz instability• Either - compare buoyancy and dynamic components of

pressure field

Kelvin-Helmholtz Instability (KHI)

• input_coldpool_hires.txt– nx=501, nz=101, dx=dz=50 m, dt=0.125

sec, plotting interval 20 sec• GrADS ctl file will misreport plot interval as 1

min– ICOOLZONE=2, cz_width=4000 m,

cz_depth=2000 m• coldpool.hires.ctl, coldpool.hires.dat

– Simulation takes a very long time

Animation(khi_movie.gs)

Perturbation potential temperature

(khi.gs)

Vertical velocity

Horizontal velocity

Airflow vectors

Perturbation pressure (p’)

Perturbation buoyancy pressure (p’byc)

ipressure = 1

Enables calculation of buoyancy and dynamic pressurecomponents of perturbation pressure

Perturbation dynamic pressure (p’dyn)

Pressure decompositionequations

operation

Pressure decompositionyields (if density constant)

where

and because pressure perturbation is separable

Solve for buoyancy and dynamic pressure perturbations;dimensionalize to millibars

Comparing ppmb and ptot

ptot=pbyc+pdyn

ppmb

ICOOLZONE = 1(input_coolzone.txt & coolzone_movie.gs)

Contact info:help, bug reports, suggestions

Robert FovellAtmospheric and Oceanic SciencesUniversity of California, Los Angeles405 Hilgard AveLos Angeles, CA 90095-1565

rfovell@ucla.edu(310) 206-9956

Recommended