Skip to content

Commit

Permalink
added more files
Browse files Browse the repository at this point in the history
  • Loading branch information
edhartnett committed Feb 8, 2019
1 parent b89700e commit f39290b
Show file tree
Hide file tree
Showing 500 changed files with 72,762 additions and 1 deletion.
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
.project
html/
docs/
*~
\#*\#
*.o
Expand Down
115 changes: 115 additions & 0 deletions docs/_c_a_mexample.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>PIO: Community Atmosphere Model (CAM)</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">PIO
&#160;<span id="projectnumber">2.4.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="examp.html">Examples</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Community Atmosphere Model (CAM) </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h1><a class="anchor" id="cam"></a>
Implementation of PIO in CAM</h1>
<p>CAM references PIO through both interface routines (which call PIO routines) and PIO routines proper. The interface routines control much of the setting up of PIO output and input, whereas the actual output and input is accomplished through direct PIO calls. The PIO routines are located in models/utils/pio. A description of the PIO package along with usage information may be found in the main PIO documentation. We will first describe the interface and then cover the direct calls.</p>
<h1><a class="anchor" id="description"></a>
Description of the CAM Interface</h1>
<p>The CAM interface to PIO consists of the pio_utils module, which is the file models/atm/cam/src/utils/pio_utils.F90.</p>
<p>Init_pio_subsystem is the first routine called. It is called from cam_init and initializes PIO in CAM. Init_pio_subsystem calls read_namelist_pio, which calls set_pio_parameters. The main parameters set includes the IO mode (netcdf vs pnetcdf), number of IO tasks, and IO stride.</p>
<p>Cam_pio_createfile and cam_pio_openfile create and open a PIO file, respectively. Cam_pio_createfile is called from cam_write_restart, h_define (called from wshist, which is called from write_restart_history), and atm_write_srfrest_mct.</p>
<p>Cam_pio_openfile is called from setup_initial (called from cam_initial), cam_read_restart, read_restart_history, atm_read_srfrest_mct, and wrapup (called from cam_run4).</p>
<p>Clean_iodesc_list, called from startup_initialconds and cam_read_restart, cleans the list of IO descriptors.</p>
<p>Get_phys_decomp and get_dyn_decomp create decompositions for physics and dynamics variables, respectively. Get_decomp is an interface to those routines.</p>
<p>Get_phys_decomp is directly called from infld_real_2d, infld_real_3d, infld_real_3dncol; read_restart_physics, write_restart_physics; and pbuf_read_restart, pbuf_write_restart.</p>
<p>Get_dyn_decomp is directly called from infld_real_2d and infld_real_3d.</p>
<p>Get_decomp is called from read_restart_history and dump_field (called from wshist, which is called from write_restart_history). We see that the only time the get_decomp interface is called is when dealing with history variables (where each variable contains a description telling whether it relates to dynamics or physics).</p>
<p>Get_phys_decomp and get_dyn_decomp have an optional column (or column_in) argument, which is used when defining history variables over a range of columns rather than the whole domain.</p>
<p>Whenever a decomposition is created, a description of that decomposition is stored in a list. When a new variable is catalogued, that list is searched to see if that needed decomposition already exists. The routine performing that search is find_iodesc (called from get_phys_decomp and get_dyn_decomp). This capability is supported only when the range of history output is the whole domain.</p>
<p>Get_phys_decomp calls get_phys_ldof (or get_column_ldof), and get_dyn_decomp calls get_dyn_ldof (or get_column_ldof). These routines do the bulk of the work in constructing the IO decompositions. Get_column_ldof is called when the history output is restricted to a subset of the domain.</p>
<h1><a class="anchor" id="direct"></a>
Direct calls to PIO</h1>
<p>Virtually all the calls to PIO routines reference the pio module, located in <a class="el" href="pio_8_f90.html" title="User interface Module for PIO, this is the only file a user program should &#39;use&#39;. ...">pio.F90</a>. Many of the variables contained in the pio module are referenced as well. This section of the documentation focuses on these calls and surrounding environs and discusses data types only peripherally.</p>
<h1><a class="anchor" id="historyWrite"></a>
Writing a history file</h1>
<p>Write_restart_history (in control/cam_history.F90) controls the writing of a history file. Wshist writes the main variables that are on history tapes. Pio_put_var is used to write header information, and subroutine dump_field writes the main history variables, using primarily <a class="el" href="group___p_i_o__write__darray.html">PIO_write_darray</a>. Additional variables are then written using <a class="el" href="group___p_i_o__put__var.html">PIO_put_var</a>. (Recall that <a class="el" href="group___p_i_o__write__darray.html">PIO_write_darray</a> isused to write distributed arrays.)</p>
<h1><a class="anchor" id="historyRead"></a>
Reading a history file</h1>
<p>Read_restart_history (in control/cam_history.F90) controls the reading of a history file. Individual parameters are first read using pio_get_var. History variables are then read in using <a class="el" href="group___p_i_o__read__darray.html">PIO_read_darray</a> (which reads distributed arrays).</p>
<h1><a class="anchor" id="restartWrite"></a>
Writing a restart dump</h1>
<p>Cam_write_restart (in control/cam_restart.F90) controls the writing of a restart dump. The calling chain includes write_restart_hycoef (which writes the pressure coefficients), write_restart_dynamics, write_restart_physics, and write_restart_history. Write_restart_coef is in hycoef.F90 and uses <a class="el" href="group___p_i_o__put__var.html">PIO_put_var</a> calls. Write_restart_dynamics is in restart_dynamics.F90 (in the dynamics subdirectory relevant to the active dynamical core) and issues primarily <a class="el" href="group___p_i_o__write__darray.html">PIO_write_darray</a> calls. Write_restart_physics is in physics/cam/restart_physics.F90. It calls a number of restart routines relating to chemistry and aerosols, such as pbuf_write_restart (in physics/cam/phys_buffer.F90), chem_write_restart (in chemistry/mozart), and write_prescribed_?????_restart (where ????? = ozone, ghg, aero, volcaero), located in chemistry/utils/prescribed_?????.F90. Pbuf_write_restart calls the relevant decomposition routine followed by <a class="el" href="group___p_i_o__write__darray.html">PIO_write_darray</a>. Chem_write_restart calls write_?????_restart (where ????? = tracer_cnst, tracer_srcs, linoz_data, spedata), located in chemistry/mozart/?????.F90. These routines typically use <a class="el" href="group___p_i_o__put__var.html">PIO_put_var</a>. Write_restart_history is in cam_history.F90 and uses <a class="el" href="group___p_i_o__put__var.html">PIO_put_var</a>.</p>
<h1><a class="anchor" id="restartRead"></a>
Reading a restart dump</h1>
<p>Cam_read_restart (in control/cam_restart.F90) controls the reading of a restart dump. The calling chain corresponds to that for cam_write_restart, and includes read_restart_hycoef, read_restart_dynamics, read_restart_physics, and read_restart_history. Typical routines called are pio_get_var and <a class="el" href="group___p_i_o__read__darray.html">PIO_read_darray</a>.</p>
<h1><a class="anchor" id="Init"></a>
Initialization</h1>
<p>Cam_init (in control/cam_comp.F90) calls cam_initial and phys_init. Cam_initial, which is located in the relevant dynamics subdirectory, calls initial_conds, located in control/startup_initialconds. Initial_conds calls read_inidat, which is located in the relevant dynamics subdirectory. Read_inidat calls infld, located in control/ncdio_atm.F90. Infld calls the relevant decomposition routine followed by <a class="el" href="group___p_i_o__read__darray.html">PIO_read_darray</a>.</p>
<p>Phys_init is located in physics/cam/phys_grid.F90 and calls a number of initialization routines. An important one is phys_inidat, which makes several calls to infld. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Feb 8 2019 12:51:08 for PIO by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
Loading

0 comments on commit f39290b

Please sign in to comment.