1 / 84

Dynamics and Thermodynamics Demonstration Model (DTDM)

DTDM is a 2D compressible model that demonstrates various phenomena like gravity waves, convective rolls, and sea-breeze circulations. It is free and portable, showcasing simple simulations for educational purposes. The model allows for input script-driven customization and explores thermodynamical phenomena through hands-on package. While not a sophisticated model, DTDM offers a valuable tool for learning basic dynamics and thermodynamics principles.

Download Presentation

Dynamics and Thermodynamics Demonstration Model (DTDM)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Dynamics and Thermodynamics Demonstration Model(DTDM) Robert Fovell University of California, Los Angeles rfovell@ucla.edu

  2. 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.tar tar -zxvf DTDM_examples.tar.gz

  3. 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

  4. 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

  5. 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

  6. 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

  7. 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)

  8. 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)

  9. storage.txt c max array dimensions parameter(nxm=503,nzm=122,ny=1) ! requires nx <= nxm, nz <= nzm nxm, nzm are max values of horizontal dimensions nx and nz

  10. 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 compiler FC = pgf77 FCFLAGS = -O3 -byteswapio SOURCES=src/DTDM_model.f src/blktri.f OBJS= $(SOURCES:.f=.o) dtdm: $(OBJS) $(FC) $(FCFLAGS) -o $@ $(OBJS)

  11. 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!

  12. 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

  13. 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

  14. input_strfcn_isolated_nowind.txt c=================================================================== c c 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') c c=================================================================== &experiment casename = 'strfcn.isolated.1200sec.nowind', $ First namelist section sets experiment name (casename) Names used for GrADS files limited to 76 characters; avoid underscores with GrADS

  15. input_strfcn_isolated_nowind.txt c=================================================================== c c The grid_run namelist specifies model dimensions, integration c length, and plotting output interval c c nx - number of horizontal grid points - max NXM in storage.txt c default is 101 c nz - number of vertical grid points - max NZM in storage.txt c default is 84 c 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 incorrectly c=================================================================== &grid_run nx = 101, nz = 122, dx = 1000., dz = 250., dt = 1.0, timend = 7200., plot = 60., $

  16. input_strfcn_isolated_nowind.txt&environsection c=================================================================== c c The environ namelist sets up the model initial state c c 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 top c c===================================================================

  17. input_strfcn_isolated_nowind.txt&environsection &environ bvpbl = 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., $

  18. input_strfcn_isolated_nowind.txt&streamfunctionsection c=================================================================== c c The streamfunction namelist sets up a momentum source used c to excite gravity waves. The source may be isolated or repeated, c oscillatory or steady c c 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.) c c=================================================================== &streamfunction istrfcn = 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

  19. Streamfunction 

  20. Initial conditions Note: aspect ratio not 1:1

  21. Animation (strfcn_isolated_movie.gs) s_period = 1200 sec For this run: bvpbl = .01 (only part of model depth shown) Note: aspect ratio not 1:1

  22. 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)

  23. Varying oscillation period(strfcn_isolated.gs) Only part of domain is shown Note: aspect ratio not 1:1

  24. Inside a GrADS script(strfcn_isolated.gs) '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' '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…

  25. Executing this GrADS script gradsnc -l ga-> open strfcn.isolated.1200sec.nowind ga-> q file File 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 115 ga-> strfcn_isolated

  26. Gravity waves Period and frequency Intrinsic frequency & mean flow Wavelength and wavenumber Dispersion relation

  27. Gravity waves Dispersion relation Tilt angle from vertical

  28. Adding flow relative to momentum sourceinput_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/s Shear = 0.004 yields ∆U = 8 m/s dtdm < input_strfcn_isolated_up4.txt

  29. Flow relative to obstacle Height z Wind U

  30. Flow relative to obstacle(period = 1200 sec) U = 0 U = 4 m/s U = 8 m/s Note: aspect ratio not 1:1

  31. 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

  32. Obstacle-effect gravity wavesabove convective rolls Reference: Fovell (2004, Mon. Wea. Rev.)

  33. input_strfcn_rolls.txt&environsection 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

  34. input_strfcn_rolls.txt &streamfunction istrfcn = 1, s_repeat = 1, s_ampl = .40, s_znaught = 1000., s_hwavel = 10000., s_vwavel = 6000., s_period = 0., $ s_repeat= 1 for repeated source s_period=0 for steady momentum source

  35. Initial conditions dtdm < input_strfcn_rolls.txt

  36. 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

  37. 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.)

  38. input_hsrc.txt &environ bvpbl = 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., $ &experiment casename = 'hsrc.2mode.no.oscil', $ &grid_run nx = 101, nz = 84, dx = 1000., dz = 250., dt = 2.0, timend = 6000., plot = 60., $

  39. input_hsrc.txt c=================================================================== c c The atmos_heat_source namelist sets up a free tropospheric heat source c used to excite gravity waves. The source may be oscillatory or steady c c 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) c c=================================================================== &atmos_heat_source ihsrc = 1, h_ampl = 0.025, h_radius_x = 3000., h_radius_z = 3000., h_center_z = 3000., h_freq = 0.000, h_modes = 2, $

  40. Heating profiles For heat source depth H 1st mode H = 6000 m (2 x h_radius_z) 2nd mode H = 3000 m

  41. Results(hsrc.gs)

  42. Animations(hsrc_movie.gs)

  43. Phase speed…

  44. Animationh_freq = 0.005 [~ 21 min]

  45. A simple sea-breeze circulation Reference: Dailey and Fovell (1999, Mon. Wea. Rev.)

  46. 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

  47. input_sbf_no_rolls.txt &experiment casename = 'sbf.noroll.nowind', $ &grid_run nx = 301, nz = 26, dx = 1000., dz = 400., dt = 1.0, timend = 18000., plot = 300., $ &framework csnd = 50., $ &numerics cstar = 100., dkx = 1500., dkz = 100., $ Coarse resolution large diffusion suppresses noise and mixes surface heating vertically

  48. input_sbf_no_rolls.txt c=================================================================== c c The surface_flux namelist sets up at least part of a domain c to represent a heated surface, to heat atmosphere from below c c 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) c c=================================================================== &surface_flux ishflux = 1, tdelt = 12., icoast = 90, cdh = 7.2e-3, irand = 0, $ Coastline 90 grid points from left side (of 301 total) Large cdh reflects unstable conditions; No imposed random perturbations (irand=0)

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

  50. Offshore case animation(sbf_movie.gs) Colored: vertical velocity Contoured: perturbation horizontal velocity

More Related