200 likes | 377 Views
Southern California Earthquake Center CVM-H Development Plan 2010 Q1. Patrick Small Research Programmer. Goals with CVM-H. Formal release of CVM-H suitable for use in CyberShake and other modeling projects
E N D
Southern California Earthquake CenterCVM-H Development Plan2010 Q1 Patrick Small Research Programmer
Goals with CVM-H • Formal release of CVM-H suitable for use in CyberShake and other modeling projects • Maintained under s/w configuration management and assigned consistent version identifiers • Produce set of acceptance test results for each new release that gives confidence in the quality of the model
Features/Products to Support Goals • CVM-H coverage extended and support for querying by depth (topography flattening) • Set of comparison plots of SCEC CVM4 versus CVM-H at various depths and locations • Testing framework with automated unit tests for vx and visualization tools • Automated acceptance tests that include two reference problems for synthetic seismogram generation based on CVM-H
Extending CVM-H • Implement simple C API to allow programs to query model directly • Improves query speed • Simplifies query process for C/Python applications • Allows modeler to easily add their own background model • Extend traditional vx interface to allow querying by depth (topo flattening) • Many modeling groups generate meshes where the z coordinate represents depth • Extract 1D background model from SCEC CVM4 and integrate it into CVM-H with smoothing in a 50km transition zone • Necessary so model covers entire CyberShake region
Extending CVM-H – C API • Add new C static library, libvxapi.a, to CVM-H distribution • Programs that import library can query directly without having to run vx in a sub process • Supports querying by lon/lat or UTM coords • Allows program to define its own background model to extend CVM-H (the SCEC 1D background model from CVM4 is predefined) • Allows program to query by depth by providing function to determine true surface at any point • Conversion from depth to elev is then: elev = true_surface – depth • (Probably better to provide additional query function that just accepts depth and above calc is done inside function call)
Extending CVM-H – Current C API • /* Initializer */ • intvx_setup(char* data_dir); • /* Get version number */ • void vx_version(char *ver); • /* Initialize data structures */ • void vx_init_entry(vx_entry_t *entry); • void vx_init_voxel(vx_voxel_t *voxel); • /* Retrieve data point in LatLon or UTM */ • void vx_getcoord(vx_entry_t *entry); • /* Retrieve true surface elev at data point */ • void vx_getsurface(double *coor, vx_coord_tcoor_type, float *surface); • /* Retrieve data point by referencing voxel index position */ • void vx_getvoxel(vx_voxel_t *voxel); • /* Register user-defined background model handler */ • void vx_register_bkg( int (*backgrnd)(vx_entry_t *entry, vx_request_treq_type) ); • /* Register SCEC bkg/topo handlers */ • void vx_register_scec(); • /* Predefined SCEC bkg/topo handler */ • int vx_scec_1d(vx_entry_t *entry, vx_request_treq_type);
Extending CVM-H – vx_lite • Add new executable, vx_lite to CVM-H distribution • vx_lite is a reimplementation of vx using a C API • Supports querying by depth, elevation offset, all original vx functionality • Command-line flag enables use of SCEC 1D background for points outside of original CVM-H model • Executes faster and is more robust due to optimizations and more error checking
Visualization Tools • In order to evaluate CVM-H, scientists need: • Plots of Vp, Vs, Rho at user defined depths • Plots of Vp, Vs, Rho for vertical slices between two arbitrary lon/lat points • Plots of Vs30, Z2500 • Comparison plots showing CVM-H and CVM4 side-by-side • Difference plots showing CVM-H minus CVM4 for the property of interest • Any viz tool will need to support the above plot types at a minimum
Viz Tools – Slice Tool • The Slice Tool is a simple plotting script to produce high-quality images from CVM-H and CVM-4 • Develop in Python 2.6 with the matplotlib and basemap modules • Runs in an automated manner, no dependencies on X11 or GUI editors. • Simple command line interface: • ./Slice.py <map_type> <outfile> <map arguments>
Viz Tools – Slice Tool Examples • Horizontal slice, Vp at depth 0.0m • ./Slice.py hor hor_0_vp.png 0.0 Vp • Vertical Profile Slice for Vp between two points • ./Slice.py prof profile1_vp.png -119.292 34.431 -118.966 34.098 Vp
Testing • New test center at SCEC with CruiseControl, Pegasus, Condor, and Globus • SCEC machine aftershock is current candidate server to host software • CruiseControl continuous integration tool will be used to conduct unit and acceptance tests of CVM-H • Checkout CVM-H and Viz tools • Build CVM-H locally and on grid resource • Execute individual unit tests • Execute acceptance tests on high-performance computing resources • Generate set of reference plots • Generate test reports and distribute results by web and email
Testing – Unit Tests • Coverage over all the public functions in the vxC API • Verification of vx, vx_lite output using the “Eight Test Points” from the User Manual for the SCEC CVM-H 6.2 (/doc/cvmh_manual.pdf): • -125 35 -7777 • -118.56 32.55 -2450 • 360061 3750229 -1400 • -118.52 34.12 -1400 • -116.40 32.34 -1000 • 376592 3773379 -1770 • 376592 3773379 -17700 • 408669 3766189 -3000 • Note: May fail if underlying model is changed in a significant way
Testing – Acceptance Tests • Two point source reference problems: Chino Hills, Yorba Linda • Kim Olsen’s AWP codes used for synthetic seismogram generation • Simulations executed at low frequency (0.25 Hz) for fast execution time and low resource usage • Synthetic seismograms compared to observed using GOF codes • Thin Python wrapper interfaces CruiseControl to Pegasus/Condor • Parses Pegasus logs • Examines condor queue • Keeps running while simulation in progress • Formats errors with FAIL strings to stdout for CruiseControl
CVM-H Release Process - External • Quarterly release schedule, with possibility of interim releases to fix urgent defects • CSEP style release identifiers YY.MM.Rev (ie: 10.3.0) • Press release to SCEC community on www.scec.org
CVM-H Release Process - Internal • Obtain new version of vx model (GoCADvoxel volumes) from Harvard University • Update vx extraction code if necessary to support new model • Check-in new model and codes into SVN repository • Schedule automated build and test with CruiseControl • Review test results to ensure all tests executed successfully • Scientific review of plots and synthetic seismograms • Assign version label YY.MM.Rev to that version of CVM-H • Package CVM-H model, vx source code into downloadable distribution • Public announcement on scec.org that CVM-H YY.MM.Rev is available for download with link
Iteration Outline 2010 Q2 • If development continues into Q2, additional functionality could include: • Expand CVM-H C API to allow querying array of points, and a query by depth function which abstracts all the depth-elev conversion issues • Acceptance test for the Yorba Linda reference problem w/ GoF verification • Employ finite-fault sources instead of point sources • Increase simulation frequency to 0.5 Hz or higher • Customize CVM-H Trac site (http://intensity.usc.edu/trac/cvmh) and promote it as collection point for suggestions and bug reports • Submit acceptance tests to ranger (may be difficult since shock is the only authorized submit host for TACC)
Risks • Difficulties preparing Kim Olsen’s AWP code for execution on HPCC • Mitigated by separating task of generation of synthetic seismograms from GoF comparisons. Allows GoF task to be postponed. • Mitigated by running simulation at low frequency, 0.25 Hz • Unexpected CruiseControl behavior for long running tests • No known limit exists but these acceptance tests will be longest running tests that SCEC has attempted with CC • HPCC outages