1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
---|
2 | <html xmlns="http://www.w3.org/1999/xhtml"> |
---|
3 | <head> |
---|
4 | <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> |
---|
5 | <meta http-equiv="X-UA-Compatible" content="IE=9"/> |
---|
6 | <meta name="generator" content="Doxygen 1.8.13"/> |
---|
7 | <meta name="viewport" content="width=device-width, initial-scale=1"/> |
---|
8 | <title>Oasis3-MCT: mod_oasis_map Module Reference</title> |
---|
9 | <link href="tabs.css" rel="stylesheet" type="text/css"/> |
---|
10 | <script type="text/javascript" src="jquery.js"></script> |
---|
11 | <script type="text/javascript" src="dynsections.js"></script> |
---|
12 | <link href="search/search.css" rel="stylesheet" type="text/css"/> |
---|
13 | <script type="text/javascript" src="search/searchdata.js"></script> |
---|
14 | <script type="text/javascript" src="search/search.js"></script> |
---|
15 | <link href="doxygen.css" rel="stylesheet" type="text/css" /> |
---|
16 | </head> |
---|
17 | <body> |
---|
18 | <div id="top"><!-- do not remove this div, it is closed by doxygen! --> |
---|
19 | <div id="titlearea"> |
---|
20 | <table cellspacing="0" cellpadding="0"> |
---|
21 | <tbody> |
---|
22 | <tr style="height: 56px;"> |
---|
23 | <td id="projectalign" style="padding-left: 0.5em;"> |
---|
24 | <div id="projectname">Oasis3-MCT |
---|
25 | </div> |
---|
26 | </td> |
---|
27 | </tr> |
---|
28 | </tbody> |
---|
29 | </table> |
---|
30 | </div> |
---|
31 | <!-- end header part --> |
---|
32 | <!-- Generated by Doxygen 1.8.13 --> |
---|
33 | <script type="text/javascript"> |
---|
34 | var searchBox = new SearchBox("searchBox", "search",false,'Search'); |
---|
35 | </script> |
---|
36 | <script type="text/javascript" src="menudata.js"></script> |
---|
37 | <script type="text/javascript" src="menu.js"></script> |
---|
38 | <script type="text/javascript"> |
---|
39 | $(function() { |
---|
40 | initMenu('',true,false,'search.php','Search'); |
---|
41 | $(document).ready(function() { init_search(); }); |
---|
42 | }); |
---|
43 | </script> |
---|
44 | <div id="main-nav"></div> |
---|
45 | <!-- window showing the filter options --> |
---|
46 | <div id="MSearchSelectWindow" |
---|
47 | onmouseover="return searchBox.OnSearchSelectShow()" |
---|
48 | onmouseout="return searchBox.OnSearchSelectHide()" |
---|
49 | onkeydown="return searchBox.OnSearchSelectKey(event)"> |
---|
50 | </div> |
---|
51 | |
---|
52 | <!-- iframe showing the search results (closed by default) --> |
---|
53 | <div id="MSearchResultsWindow"> |
---|
54 | <iframe src="javascript:void(0)" frameborder="0" |
---|
55 | name="MSearchResults" id="MSearchResults"> |
---|
56 | </iframe> |
---|
57 | </div> |
---|
58 | |
---|
59 | </div><!-- top --> |
---|
60 | <div class="header"> |
---|
61 | <div class="summary"> |
---|
62 | <a href="#nested-classes">Data Types</a> | |
---|
63 | <a href="#func-members">Functions/Subroutines</a> | |
---|
64 | <a href="#var-members">Variables</a> </div> |
---|
65 | <div class="headertitle"> |
---|
66 | <div class="title">mod_oasis_map Module Reference</div> </div> |
---|
67 | </div><!--header--> |
---|
68 | <div class="contents"> |
---|
69 | |
---|
70 | <p>OASIS map (interpolation) data and methods. |
---|
71 | <a href="#details">More...</a></p> |
---|
72 | <table class="memberdecls"> |
---|
73 | <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> |
---|
74 | Data Types</h2></td></tr> |
---|
75 | <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">type  </td><td class="memItemRight" valign="bottom"><a class="el" href="structmod__oasis__map_1_1prism__mapper__type.html">prism_mapper_type</a></td></tr> |
---|
76 | <tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Mapper data for interpolating data between grids. <a href="structmod__oasis__map_1_1prism__mapper__type.html#details">More...</a><br /></td></tr> |
---|
77 | <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> |
---|
78 | </table><table class="memberdecls"> |
---|
79 | <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> |
---|
80 | Functions/Subroutines</h2></td></tr> |
---|
81 | <tr class="memitem:a6f27846fb1dcb2db3095b9ace4fa3c5b"><td class="memItemLeft" align="right" valign="top">subroutine, public </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemod__oasis__map.html#a6f27846fb1dcb2db3095b9ace4fa3c5b">oasis_map_genmap</a> (mapid, namid)</td></tr> |
---|
82 | <tr class="memdesc:a6f27846fb1dcb2db3095b9ace4fa3c5b"><td class="mdescLeft"> </td><td class="mdescRight">Routine to generate mapping weights data via a direct SCRIP call. <a href="#a6f27846fb1dcb2db3095b9ace4fa3c5b">More...</a><br /></td></tr> |
---|
83 | <tr class="separator:a6f27846fb1dcb2db3095b9ace4fa3c5b"><td class="memSeparator" colspan="2"> </td></tr> |
---|
84 | <tr class="memitem:acbe7b9e25c19dbbd2fbebd3895a87d64"><td class="memItemLeft" align="right" valign="top">subroutine, public </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemod__oasis__map.html#acbe7b9e25c19dbbd2fbebd3895a87d64">oasis_map_smatreaddnc_orig</a> (sMat, SgsMap, DgsMap, newdom, fileName, mytask, mpicom, nwgts, areasrc, areadst, ni_i, nj_i, ni_o, nj_o)</td></tr> |
---|
85 | <tr class="memdesc:acbe7b9e25c19dbbd2fbebd3895a87d64"><td class="mdescLeft"> </td><td class="mdescRight">Read in mapping matrix data from a SCRIP netCDF weights file. <a href="#acbe7b9e25c19dbbd2fbebd3895a87d64">More...</a><br /></td></tr> |
---|
86 | <tr class="separator:acbe7b9e25c19dbbd2fbebd3895a87d64"><td class="memSeparator" colspan="2"> </td></tr> |
---|
87 | <tr class="memitem:a3345e2fc3d74cc1221d6c6d993233990"><td class="memItemLeft" align="right" valign="top">subroutine, public </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemod__oasis__map.html#a3345e2fc3d74cc1221d6c6d993233990">oasis_map_smatreaddnc_ceg</a> (sMat, SgsMap, DgsMap, newdom, fileName, mytask, mpicom, nwgts, areasrc, areadst, ni_i, nj_i, ni_o, nj_o)</td></tr> |
---|
88 | <tr class="memdesc:a3345e2fc3d74cc1221d6c6d993233990"><td class="mdescLeft"> </td><td class="mdescRight">Read in mapping matrix data from a SCRIP netCDF file using smart scatter (ceg) <a href="#a3345e2fc3d74cc1221d6c6d993233990">More...</a><br /></td></tr> |
---|
89 | <tr class="separator:a3345e2fc3d74cc1221d6c6d993233990"><td class="memSeparator" colspan="2"> </td></tr> |
---|
90 | <tr class="memitem:a84a573c180be2a5dc8a14fd18b2dc4b7"><td class="memItemLeft" align="right" valign="top">subroutine </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemod__oasis__map.html#a84a573c180be2a5dc8a14fd18b2dc4b7">augment_arrays</a> (cnt, reclen, bsize, nwgts)</td></tr> |
---|
91 | <tr class="memdesc:a84a573c180be2a5dc8a14fd18b2dc4b7"><td class="mdescLeft"> </td><td class="mdescRight">Function that increases temporary work array size of Snew, Rnew, Cnew. <a href="#a84a573c180be2a5dc8a14fd18b2dc4b7">More...</a><br /></td></tr> |
---|
92 | <tr class="separator:a84a573c180be2a5dc8a14fd18b2dc4b7"><td class="memSeparator" colspan="2"> </td></tr> |
---|
93 | <tr class="memitem:a2528f60bde618dd4840d3adb5a569996"><td class="memItemLeft" align="right" valign="top">logical function </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemod__oasis__map.html#a2528f60bde618dd4840d3adb5a569996">check_myindex</a> (index, starti, counti)</td></tr> |
---|
94 | <tr class="memdesc:a2528f60bde618dd4840d3adb5a569996"><td class="mdescLeft"> </td><td class="mdescRight">Function that checks whether an index is part of a start and count list. <a href="#a2528f60bde618dd4840d3adb5a569996">More...</a><br /></td></tr> |
---|
95 | <tr class="separator:a2528f60bde618dd4840d3adb5a569996"><td class="memSeparator" colspan="2"> </td></tr> |
---|
96 | <tr class="memitem:a8889e0dcab8e1e894d3203c480110bed"><td class="memItemLeft" align="right" valign="top">integer function </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemod__oasis__map.html#a8889e0dcab8e1e894d3203c480110bed">get_cegindex</a> (index, starti, counti, peloci)</td></tr> |
---|
97 | <tr class="memdesc:a8889e0dcab8e1e894d3203c480110bed"><td class="mdescLeft"> </td><td class="mdescRight">Function that carrys out a binary search for index in list. <a href="#a8889e0dcab8e1e894d3203c480110bed">More...</a><br /></td></tr> |
---|
98 | <tr class="separator:a8889e0dcab8e1e894d3203c480110bed"><td class="memSeparator" colspan="2"> </td></tr> |
---|
99 | </table><table class="memberdecls"> |
---|
100 | <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a> |
---|
101 | Variables</h2></td></tr> |
---|
102 | <tr class="memitem:ab15f72e9f33a67181edc977c06b951e2"><td class="memItemLeft" align="right" valign="top">integer(kind=ip_i4_p), public </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemod__oasis__map.html#ab15f72e9f33a67181edc977c06b951e2">prism_mmapper</a></td></tr> |
---|
103 | <tr class="memdesc:ab15f72e9f33a67181edc977c06b951e2"><td class="mdescLeft"> </td><td class="mdescRight">max mappers <a href="#ab15f72e9f33a67181edc977c06b951e2">More...</a><br /></td></tr> |
---|
104 | <tr class="separator:ab15f72e9f33a67181edc977c06b951e2"><td class="memSeparator" colspan="2"> </td></tr> |
---|
105 | <tr class="memitem:af543b83ec5bed63a4448ff641137b0c5"><td class="memItemLeft" align="right" valign="top">integer(kind=ip_i4_p), public </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemod__oasis__map.html#af543b83ec5bed63a4448ff641137b0c5">prism_nmapper</a> = 0</td></tr> |
---|
106 | <tr class="memdesc:af543b83ec5bed63a4448ff641137b0c5"><td class="mdescLeft"> </td><td class="mdescRight">mapper counter <a href="#af543b83ec5bed63a4448ff641137b0c5">More...</a><br /></td></tr> |
---|
107 | <tr class="separator:af543b83ec5bed63a4448ff641137b0c5"><td class="memSeparator" colspan="2"> </td></tr> |
---|
108 | <tr class="memitem:a00ad53f61b6998938fca792455487f7e"><td class="memItemLeft" align="right" valign="top">type(<a class="el" href="structmod__oasis__map_1_1prism__mapper__type.html">prism_mapper_type</a>), dimension(:), pointer, public </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemod__oasis__map.html#a00ad53f61b6998938fca792455487f7e">prism_mapper</a></td></tr> |
---|
109 | <tr class="memdesc:a00ad53f61b6998938fca792455487f7e"><td class="mdescLeft"> </td><td class="mdescRight">list of defined mappers <a href="#a00ad53f61b6998938fca792455487f7e">More...</a><br /></td></tr> |
---|
110 | <tr class="separator:a00ad53f61b6998938fca792455487f7e"><td class="memSeparator" colspan="2"> </td></tr> |
---|
111 | <tr class="memitem:a30ebe320b9e4c06a1ee1f2a0bbacf2c4"><td class="memItemLeft" align="right" valign="top">integer, parameter, private </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemod__oasis__map.html#a30ebe320b9e4c06a1ee1f2a0bbacf2c4">r8</a> = ip_double_p</td></tr> |
---|
112 | <tr class="separator:a30ebe320b9e4c06a1ee1f2a0bbacf2c4"><td class="memSeparator" colspan="2"> </td></tr> |
---|
113 | <tr class="memitem:aa58997467050224f6db2bc93fe5f7ca1"><td class="memItemLeft" align="right" valign="top">integer, parameter, private </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a> = ip_i4_p</td></tr> |
---|
114 | <tr class="separator:aa58997467050224f6db2bc93fe5f7ca1"><td class="memSeparator" colspan="2"> </td></tr> |
---|
115 | <tr class="memitem:a28b59479c467c58995c6300071ca140a"><td class="memItemLeft" align="right" valign="top">real(<a class="el" href="namespacemod__oasis__map.html#a30ebe320b9e4c06a1ee1f2a0bbacf2c4">r8</a>), dimension(:,:), allocatable, private </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemod__oasis__map.html#a28b59479c467c58995c6300071ca140a">snew</a></td></tr> |
---|
116 | <tr class="separator:a28b59479c467c58995c6300071ca140a"><td class="memSeparator" colspan="2"> </td></tr> |
---|
117 | <tr class="memitem:a1fc7e7f295910352524d442c5d0dbf79"><td class="memItemLeft" align="right" valign="top">real(<a class="el" href="namespacemod__oasis__map.html#a30ebe320b9e4c06a1ee1f2a0bbacf2c4">r8</a>), dimension(:,:), allocatable, private </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemod__oasis__map.html#a1fc7e7f295910352524d442c5d0dbf79">sold</a></td></tr> |
---|
118 | <tr class="separator:a1fc7e7f295910352524d442c5d0dbf79"><td class="memSeparator" colspan="2"> </td></tr> |
---|
119 | <tr class="memitem:a2575785d3ea5e1a37c7f6303f00eb727"><td class="memItemLeft" align="right" valign="top">integer, dimension(:), allocatable, private </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemod__oasis__map.html#a2575785d3ea5e1a37c7f6303f00eb727">rnew</a></td></tr> |
---|
120 | <tr class="separator:a2575785d3ea5e1a37c7f6303f00eb727"><td class="memSeparator" colspan="2"> </td></tr> |
---|
121 | <tr class="memitem:a2931a6f582d0173cc0e6b155b8cb55b7"><td class="memItemLeft" align="right" valign="top">integer, dimension(:), allocatable, private </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemod__oasis__map.html#a2931a6f582d0173cc0e6b155b8cb55b7">rold</a></td></tr> |
---|
122 | <tr class="separator:a2931a6f582d0173cc0e6b155b8cb55b7"><td class="memSeparator" colspan="2"> </td></tr> |
---|
123 | <tr class="memitem:a8ae737bd62499fe60ebb48d04ad3b6dd"><td class="memItemLeft" align="right" valign="top">integer, dimension(:), allocatable, private </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemod__oasis__map.html#a8ae737bd62499fe60ebb48d04ad3b6dd">cnew</a></td></tr> |
---|
124 | <tr class="separator:a8ae737bd62499fe60ebb48d04ad3b6dd"><td class="memSeparator" colspan="2"> </td></tr> |
---|
125 | <tr class="memitem:a479ecc5b0be5d1adf3973cb08c40d30a"><td class="memItemLeft" align="right" valign="top">integer, dimension(:), allocatable, private </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemod__oasis__map.html#a479ecc5b0be5d1adf3973cb08c40d30a">cold</a></td></tr> |
---|
126 | <tr class="separator:a479ecc5b0be5d1adf3973cb08c40d30a"><td class="memSeparator" colspan="2"> </td></tr> |
---|
127 | <tr class="memitem:a0d8a50381f5e15cf11c1c845348c5062"><td class="memItemLeft" align="right" valign="top">logical, parameter </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemod__oasis__map.html#a0d8a50381f5e15cf11c1c845348c5062">local_timers_on</a> = .false.</td></tr> |
---|
128 | <tr class="separator:a0d8a50381f5e15cf11c1c845348c5062"><td class="memSeparator" colspan="2"> </td></tr> |
---|
129 | </table> |
---|
130 | <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> |
---|
131 | <div class="textblock"><p>OASIS map (interpolation) data and methods. </p> |
---|
132 | </div><h2 class="groupheader">Function/Subroutine Documentation</h2> |
---|
133 | <a id="a84a573c180be2a5dc8a14fd18b2dc4b7"></a> |
---|
134 | <h2 class="memtitle"><span class="permalink"><a href="#a84a573c180be2a5dc8a14fd18b2dc4b7">◆ </a></span>augment_arrays()</h2> |
---|
135 | |
---|
136 | <div class="memitem"> |
---|
137 | <div class="memproto"> |
---|
138 | <table class="mlabels"> |
---|
139 | <tr> |
---|
140 | <td class="mlabels-left"> |
---|
141 | <table class="memname"> |
---|
142 | <tr> |
---|
143 | <td class="memname">subroutine mod_oasis_map::augment_arrays </td> |
---|
144 | <td>(</td> |
---|
145 | <td class="paramtype">integer, intent(inout) </td> |
---|
146 | <td class="paramname"><em>cnt</em>, </td> |
---|
147 | </tr> |
---|
148 | <tr> |
---|
149 | <td class="paramkey"></td> |
---|
150 | <td></td> |
---|
151 | <td class="paramtype">integer, intent(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>) </td> |
---|
152 | <td class="paramname"><em>reclen</em>, </td> |
---|
153 | </tr> |
---|
154 | <tr> |
---|
155 | <td class="paramkey"></td> |
---|
156 | <td></td> |
---|
157 | <td class="paramtype">integer, intent(inout) </td> |
---|
158 | <td class="paramname"><em>bsize</em>, </td> |
---|
159 | </tr> |
---|
160 | <tr> |
---|
161 | <td class="paramkey"></td> |
---|
162 | <td></td> |
---|
163 | <td class="paramtype">integer, intent(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>) </td> |
---|
164 | <td class="paramname"><em>nwgts</em> </td> |
---|
165 | </tr> |
---|
166 | <tr> |
---|
167 | <td></td> |
---|
168 | <td>)</td> |
---|
169 | <td></td><td></td> |
---|
170 | </tr> |
---|
171 | </table> |
---|
172 | </td> |
---|
173 | <td class="mlabels-right"> |
---|
174 | <span class="mlabels"><span class="mlabel">private</span></span> </td> |
---|
175 | </tr> |
---|
176 | </table> |
---|
177 | </div><div class="memdoc"> |
---|
178 | |
---|
179 | <p>Function that increases temporary work array size of Snew, Rnew, Cnew. </p> |
---|
180 | <dl class="params"><dt>Parameters</dt><dd> |
---|
181 | <table class="params"> |
---|
182 | <tr><td class="paramdir">[in,out]</td><td class="paramname">cnt</td><td>elements in current array</td></tr> |
---|
183 | <tr><td class="paramdir">[in]</td><td class="paramname">reclen</td><td>elements of new data</td></tr> |
---|
184 | <tr><td class="paramdir">[in,out]</td><td class="paramname">bsize</td><td>max size of current array</td></tr> |
---|
185 | <tr><td class="paramdir">[in]</td><td class="paramname">nwgts</td><td>number of weights in S </td></tr> |
---|
186 | </table> |
---|
187 | </dd> |
---|
188 | </dl> |
---|
189 | |
---|
190 | <p class="definition">Definition at line <a class="el" href="mod__oasis__map_8_f90_source.html#l01603">1603</a> of file <a class="el" href="mod__oasis__map_8_f90_source.html">mod_oasis_map.F90</a>.</p> |
---|
191 | |
---|
192 | </div> |
---|
193 | </div> |
---|
194 | <a id="a2528f60bde618dd4840d3adb5a569996"></a> |
---|
195 | <h2 class="memtitle"><span class="permalink"><a href="#a2528f60bde618dd4840d3adb5a569996">◆ </a></span>check_myindex()</h2> |
---|
196 | |
---|
197 | <div class="memitem"> |
---|
198 | <div class="memproto"> |
---|
199 | <table class="mlabels"> |
---|
200 | <tr> |
---|
201 | <td class="mlabels-left"> |
---|
202 | <table class="memname"> |
---|
203 | <tr> |
---|
204 | <td class="memname">logical function mod_oasis_map::check_myindex </td> |
---|
205 | <td>(</td> |
---|
206 | <td class="paramtype">integer(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>) </td> |
---|
207 | <td class="paramname"><em>index</em>, </td> |
---|
208 | </tr> |
---|
209 | <tr> |
---|
210 | <td class="paramkey"></td> |
---|
211 | <td></td> |
---|
212 | <td class="paramtype">integer(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>), dimension(:) </td> |
---|
213 | <td class="paramname"><em>starti</em>, </td> |
---|
214 | </tr> |
---|
215 | <tr> |
---|
216 | <td class="paramkey"></td> |
---|
217 | <td></td> |
---|
218 | <td class="paramtype">integer(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>), dimension(:) </td> |
---|
219 | <td class="paramname"><em>counti</em> </td> |
---|
220 | </tr> |
---|
221 | <tr> |
---|
222 | <td></td> |
---|
223 | <td>)</td> |
---|
224 | <td></td><td></td> |
---|
225 | </tr> |
---|
226 | </table> |
---|
227 | </td> |
---|
228 | <td class="mlabels-right"> |
---|
229 | <span class="mlabels"><span class="mlabel">private</span></span> </td> |
---|
230 | </tr> |
---|
231 | </table> |
---|
232 | </div><div class="memdoc"> |
---|
233 | |
---|
234 | <p>Function that checks whether an index is part of a start and count list. </p> |
---|
235 | <p>Does a binary search on a sorted start and count list to determine whether index is a value in the list. The list values consist of the values start(i):start(i)+count(i)-1 for all i.</p> |
---|
236 | <dl class="params"><dt>Parameters</dt><dd> |
---|
237 | <table class="params"> |
---|
238 | <tr><td class="paramname">index</td><td>index to search</td></tr> |
---|
239 | <tr><td class="paramname">starti</td><td>start list</td></tr> |
---|
240 | <tr><td class="paramname">counti</td><td>count list </td></tr> |
---|
241 | </table> |
---|
242 | </dd> |
---|
243 | </dl> |
---|
244 | |
---|
245 | <p class="definition">Definition at line <a class="el" href="mod__oasis__map_8_f90_source.html#l01663">1663</a> of file <a class="el" href="mod__oasis__map_8_f90_source.html">mod_oasis_map.F90</a>.</p> |
---|
246 | |
---|
247 | </div> |
---|
248 | </div> |
---|
249 | <a id="a8889e0dcab8e1e894d3203c480110bed"></a> |
---|
250 | <h2 class="memtitle"><span class="permalink"><a href="#a8889e0dcab8e1e894d3203c480110bed">◆ </a></span>get_cegindex()</h2> |
---|
251 | |
---|
252 | <div class="memitem"> |
---|
253 | <div class="memproto"> |
---|
254 | <table class="mlabels"> |
---|
255 | <tr> |
---|
256 | <td class="mlabels-left"> |
---|
257 | <table class="memname"> |
---|
258 | <tr> |
---|
259 | <td class="memname">integer function mod_oasis_map::get_cegindex </td> |
---|
260 | <td>(</td> |
---|
261 | <td class="paramtype">integer(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>) </td> |
---|
262 | <td class="paramname"><em>index</em>, </td> |
---|
263 | </tr> |
---|
264 | <tr> |
---|
265 | <td class="paramkey"></td> |
---|
266 | <td></td> |
---|
267 | <td class="paramtype">integer(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>), dimension(:) </td> |
---|
268 | <td class="paramname"><em>starti</em>, </td> |
---|
269 | </tr> |
---|
270 | <tr> |
---|
271 | <td class="paramkey"></td> |
---|
272 | <td></td> |
---|
273 | <td class="paramtype">integer(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>), dimension(:) </td> |
---|
274 | <td class="paramname"><em>counti</em>, </td> |
---|
275 | </tr> |
---|
276 | <tr> |
---|
277 | <td class="paramkey"></td> |
---|
278 | <td></td> |
---|
279 | <td class="paramtype">integer(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>), dimension(:) </td> |
---|
280 | <td class="paramname"><em>peloci</em> </td> |
---|
281 | </tr> |
---|
282 | <tr> |
---|
283 | <td></td> |
---|
284 | <td>)</td> |
---|
285 | <td></td><td></td> |
---|
286 | </tr> |
---|
287 | </table> |
---|
288 | </td> |
---|
289 | <td class="mlabels-right"> |
---|
290 | <span class="mlabels"><span class="mlabel">private</span></span> </td> |
---|
291 | </tr> |
---|
292 | </table> |
---|
293 | </div><div class="memdoc"> |
---|
294 | |
---|
295 | <p>Function that carrys out a binary search for index in list. </p> |
---|
296 | <dl class="params"><dt>Parameters</dt><dd> |
---|
297 | <table class="params"> |
---|
298 | <tr><td class="paramname">index</td><td>index to search</td></tr> |
---|
299 | <tr><td class="paramname">starti</td><td>start list</td></tr> |
---|
300 | <tr><td class="paramname">counti</td><td>count list</td></tr> |
---|
301 | <tr><td class="paramname">peloci</td><td>pe list </td></tr> |
---|
302 | </table> |
---|
303 | </dd> |
---|
304 | </dl> |
---|
305 | |
---|
306 | <p class="definition">Definition at line <a class="el" href="mod__oasis__map_8_f90_source.html#l01738">1738</a> of file <a class="el" href="mod__oasis__map_8_f90_source.html">mod_oasis_map.F90</a>.</p> |
---|
307 | |
---|
308 | </div> |
---|
309 | </div> |
---|
310 | <a id="a6f27846fb1dcb2db3095b9ace4fa3c5b"></a> |
---|
311 | <h2 class="memtitle"><span class="permalink"><a href="#a6f27846fb1dcb2db3095b9ace4fa3c5b">◆ </a></span>oasis_map_genmap()</h2> |
---|
312 | |
---|
313 | <div class="memitem"> |
---|
314 | <div class="memproto"> |
---|
315 | <table class="memname"> |
---|
316 | <tr> |
---|
317 | <td class="memname">subroutine, public mod_oasis_map::oasis_map_genmap </td> |
---|
318 | <td>(</td> |
---|
319 | <td class="paramtype">integer(ip_i4_p), intent(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>) </td> |
---|
320 | <td class="paramname"><em>mapid</em>, </td> |
---|
321 | </tr> |
---|
322 | <tr> |
---|
323 | <td class="paramkey"></td> |
---|
324 | <td></td> |
---|
325 | <td class="paramtype">integer(ip_i4_p), intent(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>) </td> |
---|
326 | <td class="paramname"><em>namid</em> </td> |
---|
327 | </tr> |
---|
328 | <tr> |
---|
329 | <td></td> |
---|
330 | <td>)</td> |
---|
331 | <td></td><td></td> |
---|
332 | </tr> |
---|
333 | </table> |
---|
334 | </div><div class="memdoc"> |
---|
335 | |
---|
336 | <p>Routine to generate mapping weights data via a direct SCRIP call. </p> |
---|
337 | <p>This routine reads in grid data from files and passes that data to SCRIP. Mapping weights are generated and written to a file. This entire operation is done on a single task.</p> |
---|
338 | <dl class="params"><dt>Parameters</dt><dd> |
---|
339 | <table class="params"> |
---|
340 | <tr><td class="paramdir">[in]</td><td class="paramname">mapid</td><td>map id</td></tr> |
---|
341 | <tr><td class="paramdir">[in]</td><td class="paramname">namid</td><td>namcouple id </td></tr> |
---|
342 | </table> |
---|
343 | </dd> |
---|
344 | </dl> |
---|
345 | |
---|
346 | <p class="definition">Definition at line <a class="el" href="mod__oasis__map_8_f90_source.html#l00083">83</a> of file <a class="el" href="mod__oasis__map_8_f90_source.html">mod_oasis_map.F90</a>.</p> |
---|
347 | |
---|
348 | </div> |
---|
349 | </div> |
---|
350 | <a id="a3345e2fc3d74cc1221d6c6d993233990"></a> |
---|
351 | <h2 class="memtitle"><span class="permalink"><a href="#a3345e2fc3d74cc1221d6c6d993233990">◆ </a></span>oasis_map_smatreaddnc_ceg()</h2> |
---|
352 | |
---|
353 | <div class="memitem"> |
---|
354 | <div class="memproto"> |
---|
355 | <table class="memname"> |
---|
356 | <tr> |
---|
357 | <td class="memname">subroutine, public mod_oasis_map::oasis_map_smatreaddnc_ceg </td> |
---|
358 | <td>(</td> |
---|
359 | <td class="paramtype">type(mct_smat), dimension(:), intent(out), pointer </td> |
---|
360 | <td class="paramname"><em>sMat</em>, </td> |
---|
361 | </tr> |
---|
362 | <tr> |
---|
363 | <td class="paramkey"></td> |
---|
364 | <td></td> |
---|
365 | <td class="paramtype">type(mct_gsmap), intent(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>), target </td> |
---|
366 | <td class="paramname"><em>SgsMap</em>, </td> |
---|
367 | </tr> |
---|
368 | <tr> |
---|
369 | <td class="paramkey"></td> |
---|
370 | <td></td> |
---|
371 | <td class="paramtype">type(mct_gsmap), intent(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>), target </td> |
---|
372 | <td class="paramname"><em>DgsMap</em>, </td> |
---|
373 | </tr> |
---|
374 | <tr> |
---|
375 | <td class="paramkey"></td> |
---|
376 | <td></td> |
---|
377 | <td class="paramtype">character(*), intent(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>) </td> |
---|
378 | <td class="paramname"><em>newdom</em>, </td> |
---|
379 | </tr> |
---|
380 | <tr> |
---|
381 | <td class="paramkey"></td> |
---|
382 | <td></td> |
---|
383 | <td class="paramtype">character(*), intent(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>) </td> |
---|
384 | <td class="paramname"><em>fileName</em>, </td> |
---|
385 | </tr> |
---|
386 | <tr> |
---|
387 | <td class="paramkey"></td> |
---|
388 | <td></td> |
---|
389 | <td class="paramtype">integer(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>), intent(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>) </td> |
---|
390 | <td class="paramname"><em>mytask</em>, </td> |
---|
391 | </tr> |
---|
392 | <tr> |
---|
393 | <td class="paramkey"></td> |
---|
394 | <td></td> |
---|
395 | <td class="paramtype">integer(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>), intent(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>) </td> |
---|
396 | <td class="paramname"><em>mpicom</em>, </td> |
---|
397 | </tr> |
---|
398 | <tr> |
---|
399 | <td class="paramkey"></td> |
---|
400 | <td></td> |
---|
401 | <td class="paramtype">integer(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>), intent(out) </td> |
---|
402 | <td class="paramname"><em>nwgts</em>, </td> |
---|
403 | </tr> |
---|
404 | <tr> |
---|
405 | <td class="paramkey"></td> |
---|
406 | <td></td> |
---|
407 | <td class="paramtype">type(mct_avect), intent(out), optional </td> |
---|
408 | <td class="paramname"><em>areasrc</em>, </td> |
---|
409 | </tr> |
---|
410 | <tr> |
---|
411 | <td class="paramkey"></td> |
---|
412 | <td></td> |
---|
413 | <td class="paramtype">type(mct_avect), intent(out), optional </td> |
---|
414 | <td class="paramname"><em>areadst</em>, </td> |
---|
415 | </tr> |
---|
416 | <tr> |
---|
417 | <td class="paramkey"></td> |
---|
418 | <td></td> |
---|
419 | <td class="paramtype">integer(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>), intent(out), optional </td> |
---|
420 | <td class="paramname"><em>ni_i</em>, </td> |
---|
421 | </tr> |
---|
422 | <tr> |
---|
423 | <td class="paramkey"></td> |
---|
424 | <td></td> |
---|
425 | <td class="paramtype">integer(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>), intent(out), optional </td> |
---|
426 | <td class="paramname"><em>nj_i</em>, </td> |
---|
427 | </tr> |
---|
428 | <tr> |
---|
429 | <td class="paramkey"></td> |
---|
430 | <td></td> |
---|
431 | <td class="paramtype">integer(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>), intent(out), optional </td> |
---|
432 | <td class="paramname"><em>ni_o</em>, </td> |
---|
433 | </tr> |
---|
434 | <tr> |
---|
435 | <td class="paramkey"></td> |
---|
436 | <td></td> |
---|
437 | <td class="paramtype">integer(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>), intent(out), optional </td> |
---|
438 | <td class="paramname"><em>nj_o</em> </td> |
---|
439 | </tr> |
---|
440 | <tr> |
---|
441 | <td></td> |
---|
442 | <td>)</td> |
---|
443 | <td></td><td></td> |
---|
444 | </tr> |
---|
445 | </table> |
---|
446 | </div><div class="memdoc"> |
---|
447 | |
---|
448 | <p>Read in mapping matrix data from a SCRIP netCDF file using smart scatter (ceg) </p> |
---|
449 | <p>Read in mapping matrix data from a SCRIP netCDF data file using a low memory method and then scatter to all pes using a smart method where only select data is sent to tasks. Based on the sMatReaddnc method from CESM1.0.3 This routine leverages gsmaps to determine scatter pattern</p> |
---|
450 | <p>The scatter is implemented via the root task reading the data and then determining which task gets which weights from the gsmap. The root the sends specific data to each task.</p> |
---|
451 | <p>The algorithm to determine which task a weigth belongs to involves checking the task ownership for a given global index.</p> |
---|
452 | <p>The local buffer sizes are estimated up front based on ngridcell/npes plus 20% (see 1.2 below). If the local buffer size fills up, then the buffer is reallocated 50% larger (see 1.5 below) and the fill continues. The idea is to trade off memory reallocation and copy with memory usage. 1.2 and 1.5 are arbitary, other values may result in better performance.</p> |
---|
453 | <p>Once all the matrix weights have been read, the sMat is initialized, the values from the buffers are copied in, and everything is deallocated.</p> |
---|
454 | <dl class="params"><dt>Parameters</dt><dd> |
---|
455 | <table class="params"> |
---|
456 | <tr><td class="paramdir">[out]</td><td class="paramname">smat</td><td>mapping data</td></tr> |
---|
457 | <tr><td class="paramdir">[in]</td><td class="paramname">sgsmap</td><td>src gsmap</td></tr> |
---|
458 | <tr><td class="paramdir">[in]</td><td class="paramname">dgsmap</td><td>dst gsmap</td></tr> |
---|
459 | <tr><td class="paramdir">[in]</td><td class="paramname">newdom</td><td>type of sMat (src or dst) src = rearrange and map (bfb), dst = map and rearrange (partial sums)</td></tr> |
---|
460 | <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>netCDF file to read</td></tr> |
---|
461 | <tr><td class="paramdir">[in]</td><td class="paramname">mytask</td><td>processor id</td></tr> |
---|
462 | <tr><td class="paramdir">[in]</td><td class="paramname">mpicom</td><td>mpi communicator</td></tr> |
---|
463 | <tr><td class="paramdir">[out]</td><td class="paramname">nwgts</td><td>number of weights</td></tr> |
---|
464 | <tr><td class="paramdir">[out]</td><td class="paramname">areasrc</td><td>area of src grid from mapping file</td></tr> |
---|
465 | <tr><td class="paramdir">[out]</td><td class="paramname">areadst</td><td>area of dst grid from mapping file</td></tr> |
---|
466 | <tr><td class="paramdir">[out]</td><td class="paramname">ni_i</td><td>number of lons on input grid</td></tr> |
---|
467 | <tr><td class="paramdir">[out]</td><td class="paramname">nj_i</td><td>number of lats on input grid</td></tr> |
---|
468 | <tr><td class="paramdir">[out]</td><td class="paramname">ni_o</td><td>number of lons on output grid</td></tr> |
---|
469 | <tr><td class="paramdir">[out]</td><td class="paramname">nj_o</td><td>number of lats on output grid </td></tr> |
---|
470 | </table> |
---|
471 | </dd> |
---|
472 | </dl> |
---|
473 | <ul> |
---|
474 | <li>Open and read the file SCRIP weights size on the root task</li> |
---|
475 | <li>Read and load area_a on root task</li> |
---|
476 | <li>Read and load area_b on root task</li> |
---|
477 | <li>Broadcast ni and nj if requested</li> |
---|
478 | <li>Broadcast array sizes and allocate arrays for local storage</li> |
---|
479 | <li>Compute the number of chunks to read, read size is rbuf_size</li> |
---|
480 | <li>Allocate arrays for local weights plus row and column indices</li> |
---|
481 | <li>On the root task<ul> |
---|
482 | <li>Initialize lsstart, lscount, and lspeloc, the sorted list of local indices</li> |
---|
483 | <li>Sort via bubble sort or merge sort depending on size of array</li> |
---|
484 | <li>Allocate arrays for reading data on the root</li> |
---|
485 | <li>Loop over the chunks of weights data</li> |
---|
486 | <li>Read chunk of data</li> |
---|
487 | <li>Determine which process owns each weight and count them</li> |
---|
488 | <li>Determine offsets in the array</li> |
---|
489 | <li>Determine which process owns each weight and fill arrays</li> |
---|
490 | <li>Send select data from root to other processes</li> |
---|
491 | <li>Deallocate memory on root process</li> |
---|
492 | </ul> |
---|
493 | </li> |
---|
494 | <li>On non-root processes<ul> |
---|
495 | <li>Receive data from root</li> |
---|
496 | <li>Reallocate local weights arrays if they need to be bigger</li> |
---|
497 | </ul> |
---|
498 | </li> |
---|
499 | <li>Clean up arrays</li> |
---|
500 | <li>Initialize the mct sMat data type</li> |
---|
501 | <li>More clean up </li> |
---|
502 | </ul> |
---|
503 | |
---|
504 | <p class="definition">Definition at line <a class="el" href="mod__oasis__map_8_f90_source.html#l00931">931</a> of file <a class="el" href="mod__oasis__map_8_f90_source.html">mod_oasis_map.F90</a>.</p> |
---|
505 | |
---|
506 | </div> |
---|
507 | </div> |
---|
508 | <a id="acbe7b9e25c19dbbd2fbebd3895a87d64"></a> |
---|
509 | <h2 class="memtitle"><span class="permalink"><a href="#acbe7b9e25c19dbbd2fbebd3895a87d64">◆ </a></span>oasis_map_smatreaddnc_orig()</h2> |
---|
510 | |
---|
511 | <div class="memitem"> |
---|
512 | <div class="memproto"> |
---|
513 | <table class="memname"> |
---|
514 | <tr> |
---|
515 | <td class="memname">subroutine, public mod_oasis_map::oasis_map_smatreaddnc_orig </td> |
---|
516 | <td>(</td> |
---|
517 | <td class="paramtype">type(mct_smat), dimension(:), intent(out), pointer </td> |
---|
518 | <td class="paramname"><em>sMat</em>, </td> |
---|
519 | </tr> |
---|
520 | <tr> |
---|
521 | <td class="paramkey"></td> |
---|
522 | <td></td> |
---|
523 | <td class="paramtype">type(mct_gsmap), intent(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>), target </td> |
---|
524 | <td class="paramname"><em>SgsMap</em>, </td> |
---|
525 | </tr> |
---|
526 | <tr> |
---|
527 | <td class="paramkey"></td> |
---|
528 | <td></td> |
---|
529 | <td class="paramtype">type(mct_gsmap), intent(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>), target </td> |
---|
530 | <td class="paramname"><em>DgsMap</em>, </td> |
---|
531 | </tr> |
---|
532 | <tr> |
---|
533 | <td class="paramkey"></td> |
---|
534 | <td></td> |
---|
535 | <td class="paramtype">character(*), intent(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>) </td> |
---|
536 | <td class="paramname"><em>newdom</em>, </td> |
---|
537 | </tr> |
---|
538 | <tr> |
---|
539 | <td class="paramkey"></td> |
---|
540 | <td></td> |
---|
541 | <td class="paramtype">character(*), intent(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>) </td> |
---|
542 | <td class="paramname"><em>fileName</em>, </td> |
---|
543 | </tr> |
---|
544 | <tr> |
---|
545 | <td class="paramkey"></td> |
---|
546 | <td></td> |
---|
547 | <td class="paramtype">integer(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>), intent(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>) </td> |
---|
548 | <td class="paramname"><em>mytask</em>, </td> |
---|
549 | </tr> |
---|
550 | <tr> |
---|
551 | <td class="paramkey"></td> |
---|
552 | <td></td> |
---|
553 | <td class="paramtype">integer(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>), intent(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>) </td> |
---|
554 | <td class="paramname"><em>mpicom</em>, </td> |
---|
555 | </tr> |
---|
556 | <tr> |
---|
557 | <td class="paramkey"></td> |
---|
558 | <td></td> |
---|
559 | <td class="paramtype">integer(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>), intent(out) </td> |
---|
560 | <td class="paramname"><em>nwgts</em>, </td> |
---|
561 | </tr> |
---|
562 | <tr> |
---|
563 | <td class="paramkey"></td> |
---|
564 | <td></td> |
---|
565 | <td class="paramtype">type(mct_avect), intent(out), optional </td> |
---|
566 | <td class="paramname"><em>areasrc</em>, </td> |
---|
567 | </tr> |
---|
568 | <tr> |
---|
569 | <td class="paramkey"></td> |
---|
570 | <td></td> |
---|
571 | <td class="paramtype">type(mct_avect), intent(out), optional </td> |
---|
572 | <td class="paramname"><em>areadst</em>, </td> |
---|
573 | </tr> |
---|
574 | <tr> |
---|
575 | <td class="paramkey"></td> |
---|
576 | <td></td> |
---|
577 | <td class="paramtype">integer(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>), intent(out), optional </td> |
---|
578 | <td class="paramname"><em>ni_i</em>, </td> |
---|
579 | </tr> |
---|
580 | <tr> |
---|
581 | <td class="paramkey"></td> |
---|
582 | <td></td> |
---|
583 | <td class="paramtype">integer(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>), intent(out), optional </td> |
---|
584 | <td class="paramname"><em>nj_i</em>, </td> |
---|
585 | </tr> |
---|
586 | <tr> |
---|
587 | <td class="paramkey"></td> |
---|
588 | <td></td> |
---|
589 | <td class="paramtype">integer(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>), intent(out), optional </td> |
---|
590 | <td class="paramname"><em>ni_o</em>, </td> |
---|
591 | </tr> |
---|
592 | <tr> |
---|
593 | <td class="paramkey"></td> |
---|
594 | <td></td> |
---|
595 | <td class="paramtype">integer(<a class="el" href="namespacemod__oasis__map.html#aa58997467050224f6db2bc93fe5f7ca1">in</a>), intent(out), optional </td> |
---|
596 | <td class="paramname"><em>nj_o</em> </td> |
---|
597 | </tr> |
---|
598 | <tr> |
---|
599 | <td></td> |
---|
600 | <td>)</td> |
---|
601 | <td></td><td></td> |
---|
602 | </tr> |
---|
603 | </table> |
---|
604 | </div><div class="memdoc"> |
---|
605 | |
---|
606 | <p>Read in mapping matrix data from a SCRIP netCDF weights file. </p> |
---|
607 | <p>Read in mapping matrix data from a SCRIP netCDF data file using a low memory method and then scatter to all pes. Based on the sMatReaddnc method from CESM1.0.3. This routine leverages gsmaps to determine scatter pattern.</p> |
---|
608 | <p>The scatter is implemented as a broadcast of all weights then a local computation on each pe to determine with weights to keep based on gsmap information.</p> |
---|
609 | <p>The algorithm to determine whether a weight belongs on a pe involves creating a couple local arrays (lsstart and lscount) which are the local values of start and length from the gsmap. These are sorted via a bubble sort and then searched via a binary search to check whether a global index is on the local pe.</p> |
---|
610 | <p>The local buffer sizes are estimated up front based on ngridcell/npes plus 20% (search for 1.2 below). If the local buffer size fills up, then the buffer is reallocated 50% larger (search for 1.5 below) and the fill continues. The idea is to trade off memory reallocation and copy with memory usage. 1.2 and 1.5 are arbitary, other values may result in better performance.</p> |
---|
611 | <p>Once all the matrix weights have been read, the sMat is initialized, the values from the buffers are copied in, and everything is deallocated.</p> |
---|
612 | <dl class="params"><dt>Parameters</dt><dd> |
---|
613 | <table class="params"> |
---|
614 | <tr><td class="paramdir">[out]</td><td class="paramname">smat</td><td>mapping data</td></tr> |
---|
615 | <tr><td class="paramdir">[in]</td><td class="paramname">sgsmap</td><td>src gsmap</td></tr> |
---|
616 | <tr><td class="paramdir">[in]</td><td class="paramname">dgsmap</td><td>dst gsmap</td></tr> |
---|
617 | <tr><td class="paramdir">[in]</td><td class="paramname">newdom</td><td>type of sMat (src or dst) src = rearrange and map (bfb), dst = map and rearrange (partial sums)</td></tr> |
---|
618 | <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>netCDF file to read</td></tr> |
---|
619 | <tr><td class="paramdir">[in]</td><td class="paramname">mytask</td><td>processor id</td></tr> |
---|
620 | <tr><td class="paramdir">[in]</td><td class="paramname">mpicom</td><td>mpi communicator</td></tr> |
---|
621 | <tr><td class="paramdir">[out]</td><td class="paramname">nwgts</td><td>number of weights</td></tr> |
---|
622 | <tr><td class="paramdir">[out]</td><td class="paramname">areasrc</td><td>area of src grid from mapping file</td></tr> |
---|
623 | <tr><td class="paramdir">[out]</td><td class="paramname">areadst</td><td>area of dst grid from mapping file</td></tr> |
---|
624 | <tr><td class="paramdir">[out]</td><td class="paramname">ni_i</td><td>number of lons on input grid</td></tr> |
---|
625 | <tr><td class="paramdir">[out]</td><td class="paramname">nj_i</td><td>number of lats on input grid</td></tr> |
---|
626 | <tr><td class="paramdir">[out]</td><td class="paramname">ni_o</td><td>number of lons on output grid</td></tr> |
---|
627 | <tr><td class="paramdir">[out]</td><td class="paramname">nj_o</td><td>number of lats on output grid </td></tr> |
---|
628 | </table> |
---|
629 | </dd> |
---|
630 | </dl> |
---|
631 | <ul> |
---|
632 | <li>Open and read the file SCRIP weights size on the root task</li> |
---|
633 | <li>Read and load area_a on root task</li> |
---|
634 | <li>Read and load area_b on root task</li> |
---|
635 | <li>Broadcast ni and nj if requested</li> |
---|
636 | <li>Broadcast array sizes and allocate arrays for local storage</li> |
---|
637 | <li>Initialize lsstart and lscount, the sorted list of local indices</li> |
---|
638 | <li>Compute the number of chunks to read, read size is rbuf_size</li> |
---|
639 | <li>Allocate arrays for local weights plus row and column indices</li> |
---|
640 | <li>Loop over the chunks of weights data<ul> |
---|
641 | <li>Read chunk of data on root pe</li> |
---|
642 | <li>Broadcast S, row, col to all tasks</li> |
---|
643 | <li>Each task keeps only the data required</li> |
---|
644 | <li>Reallocate local weights arrays if they need to be bigger</li> |
---|
645 | </ul> |
---|
646 | </li> |
---|
647 | <li>Clean up arrays</li> |
---|
648 | <li>Initialize the mct sMat data type</li> |
---|
649 | <li>More clean up </li> |
---|
650 | </ul> |
---|
651 | |
---|
652 | <p class="definition">Definition at line <a class="el" href="mod__oasis__map_8_f90_source.html#l00377">377</a> of file <a class="el" href="mod__oasis__map_8_f90_source.html">mod_oasis_map.F90</a>.</p> |
---|
653 | |
---|
654 | </div> |
---|
655 | </div> |
---|
656 | <h2 class="groupheader">Variable Documentation</h2> |
---|
657 | <a id="a8ae737bd62499fe60ebb48d04ad3b6dd"></a> |
---|
658 | <h2 class="memtitle"><span class="permalink"><a href="#a8ae737bd62499fe60ebb48d04ad3b6dd">◆ </a></span>cnew</h2> |
---|
659 | |
---|
660 | <div class="memitem"> |
---|
661 | <div class="memproto"> |
---|
662 | <table class="mlabels"> |
---|
663 | <tr> |
---|
664 | <td class="mlabels-left"> |
---|
665 | <table class="memname"> |
---|
666 | <tr> |
---|
667 | <td class="memname">integer, dimension(:), allocatable, private mod_oasis_map::cnew</td> |
---|
668 | </tr> |
---|
669 | </table> |
---|
670 | </td> |
---|
671 | <td class="mlabels-right"> |
---|
672 | <span class="mlabels"><span class="mlabel">private</span></span> </td> |
---|
673 | </tr> |
---|
674 | </table> |
---|
675 | </div><div class="memdoc"> |
---|
676 | |
---|
677 | <p class="definition">Definition at line <a class="el" href="mod__oasis__map_8_f90_source.html#l00066">66</a> of file <a class="el" href="mod__oasis__map_8_f90_source.html">mod_oasis_map.F90</a>.</p> |
---|
678 | |
---|
679 | </div> |
---|
680 | </div> |
---|
681 | <a id="a479ecc5b0be5d1adf3973cb08c40d30a"></a> |
---|
682 | <h2 class="memtitle"><span class="permalink"><a href="#a479ecc5b0be5d1adf3973cb08c40d30a">◆ </a></span>cold</h2> |
---|
683 | |
---|
684 | <div class="memitem"> |
---|
685 | <div class="memproto"> |
---|
686 | <table class="mlabels"> |
---|
687 | <tr> |
---|
688 | <td class="mlabels-left"> |
---|
689 | <table class="memname"> |
---|
690 | <tr> |
---|
691 | <td class="memname">integer, dimension(:), allocatable, private mod_oasis_map::cold</td> |
---|
692 | </tr> |
---|
693 | </table> |
---|
694 | </td> |
---|
695 | <td class="mlabels-right"> |
---|
696 | <span class="mlabels"><span class="mlabel">private</span></span> </td> |
---|
697 | </tr> |
---|
698 | </table> |
---|
699 | </div><div class="memdoc"> |
---|
700 | |
---|
701 | <p class="definition">Definition at line <a class="el" href="mod__oasis__map_8_f90_source.html#l00066">66</a> of file <a class="el" href="mod__oasis__map_8_f90_source.html">mod_oasis_map.F90</a>.</p> |
---|
702 | |
---|
703 | </div> |
---|
704 | </div> |
---|
705 | <a id="aa58997467050224f6db2bc93fe5f7ca1"></a> |
---|
706 | <h2 class="memtitle"><span class="permalink"><a href="#aa58997467050224f6db2bc93fe5f7ca1">◆ </a></span>in</h2> |
---|
707 | |
---|
708 | <div class="memitem"> |
---|
709 | <div class="memproto"> |
---|
710 | <table class="mlabels"> |
---|
711 | <tr> |
---|
712 | <td class="mlabels-left"> |
---|
713 | <table class="memname"> |
---|
714 | <tr> |
---|
715 | <td class="memname">integer, parameter, private mod_oasis_map::in = ip_i4_p</td> |
---|
716 | </tr> |
---|
717 | </table> |
---|
718 | </td> |
---|
719 | <td class="mlabels-right"> |
---|
720 | <span class="mlabels"><span class="mlabel">private</span></span> </td> |
---|
721 | </tr> |
---|
722 | </table> |
---|
723 | </div><div class="memdoc"> |
---|
724 | |
---|
725 | <p class="definition">Definition at line <a class="el" href="mod__oasis__map_8_f90_source.html#l00060">60</a> of file <a class="el" href="mod__oasis__map_8_f90_source.html">mod_oasis_map.F90</a>.</p> |
---|
726 | |
---|
727 | </div> |
---|
728 | </div> |
---|
729 | <a id="a0d8a50381f5e15cf11c1c845348c5062"></a> |
---|
730 | <h2 class="memtitle"><span class="permalink"><a href="#a0d8a50381f5e15cf11c1c845348c5062">◆ </a></span>local_timers_on</h2> |
---|
731 | |
---|
732 | <div class="memitem"> |
---|
733 | <div class="memproto"> |
---|
734 | <table class="mlabels"> |
---|
735 | <tr> |
---|
736 | <td class="mlabels-left"> |
---|
737 | <table class="memname"> |
---|
738 | <tr> |
---|
739 | <td class="memname">logical, parameter mod_oasis_map::local_timers_on = .false.</td> |
---|
740 | </tr> |
---|
741 | </table> |
---|
742 | </td> |
---|
743 | <td class="mlabels-right"> |
---|
744 | <span class="mlabels"><span class="mlabel">private</span></span> </td> |
---|
745 | </tr> |
---|
746 | </table> |
---|
747 | </div><div class="memdoc"> |
---|
748 | |
---|
749 | <p class="definition">Definition at line <a class="el" href="mod__oasis__map_8_f90_source.html#l00068">68</a> of file <a class="el" href="mod__oasis__map_8_f90_source.html">mod_oasis_map.F90</a>.</p> |
---|
750 | |
---|
751 | </div> |
---|
752 | </div> |
---|
753 | <a id="a00ad53f61b6998938fca792455487f7e"></a> |
---|
754 | <h2 class="memtitle"><span class="permalink"><a href="#a00ad53f61b6998938fca792455487f7e">◆ </a></span>prism_mapper</h2> |
---|
755 | |
---|
756 | <div class="memitem"> |
---|
757 | <div class="memproto"> |
---|
758 | <table class="memname"> |
---|
759 | <tr> |
---|
760 | <td class="memname">type(<a class="el" href="structmod__oasis__map_1_1prism__mapper__type.html">prism_mapper_type</a>), dimension(:), pointer, public mod_oasis_map::prism_mapper</td> |
---|
761 | </tr> |
---|
762 | </table> |
---|
763 | </div><div class="memdoc"> |
---|
764 | |
---|
765 | <p>list of defined mappers </p> |
---|
766 | |
---|
767 | <p class="definition">Definition at line <a class="el" href="mod__oasis__map_8_f90_source.html#l00055">55</a> of file <a class="el" href="mod__oasis__map_8_f90_source.html">mod_oasis_map.F90</a>.</p> |
---|
768 | |
---|
769 | </div> |
---|
770 | </div> |
---|
771 | <a id="ab15f72e9f33a67181edc977c06b951e2"></a> |
---|
772 | <h2 class="memtitle"><span class="permalink"><a href="#ab15f72e9f33a67181edc977c06b951e2">◆ </a></span>prism_mmapper</h2> |
---|
773 | |
---|
774 | <div class="memitem"> |
---|
775 | <div class="memproto"> |
---|
776 | <table class="memname"> |
---|
777 | <tr> |
---|
778 | <td class="memname">integer(kind=ip_i4_p), public mod_oasis_map::prism_mmapper</td> |
---|
779 | </tr> |
---|
780 | </table> |
---|
781 | </div><div class="memdoc"> |
---|
782 | |
---|
783 | <p>max mappers </p> |
---|
784 | |
---|
785 | <p class="definition">Definition at line <a class="el" href="mod__oasis__map_8_f90_source.html#l00053">53</a> of file <a class="el" href="mod__oasis__map_8_f90_source.html">mod_oasis_map.F90</a>.</p> |
---|
786 | |
---|
787 | </div> |
---|
788 | </div> |
---|
789 | <a id="af543b83ec5bed63a4448ff641137b0c5"></a> |
---|
790 | <h2 class="memtitle"><span class="permalink"><a href="#af543b83ec5bed63a4448ff641137b0c5">◆ </a></span>prism_nmapper</h2> |
---|
791 | |
---|
792 | <div class="memitem"> |
---|
793 | <div class="memproto"> |
---|
794 | <table class="memname"> |
---|
795 | <tr> |
---|
796 | <td class="memname">integer(kind=ip_i4_p), public mod_oasis_map::prism_nmapper = 0</td> |
---|
797 | </tr> |
---|
798 | </table> |
---|
799 | </div><div class="memdoc"> |
---|
800 | |
---|
801 | <p>mapper counter </p> |
---|
802 | |
---|
803 | <p class="definition">Definition at line <a class="el" href="mod__oasis__map_8_f90_source.html#l00054">54</a> of file <a class="el" href="mod__oasis__map_8_f90_source.html">mod_oasis_map.F90</a>.</p> |
---|
804 | |
---|
805 | </div> |
---|
806 | </div> |
---|
807 | <a id="a30ebe320b9e4c06a1ee1f2a0bbacf2c4"></a> |
---|
808 | <h2 class="memtitle"><span class="permalink"><a href="#a30ebe320b9e4c06a1ee1f2a0bbacf2c4">◆ </a></span>r8</h2> |
---|
809 | |
---|
810 | <div class="memitem"> |
---|
811 | <div class="memproto"> |
---|
812 | <table class="mlabels"> |
---|
813 | <tr> |
---|
814 | <td class="mlabels-left"> |
---|
815 | <table class="memname"> |
---|
816 | <tr> |
---|
817 | <td class="memname">integer, parameter, private mod_oasis_map::r8 = ip_double_p</td> |
---|
818 | </tr> |
---|
819 | </table> |
---|
820 | </td> |
---|
821 | <td class="mlabels-right"> |
---|
822 | <span class="mlabels"><span class="mlabel">private</span></span> </td> |
---|
823 | </tr> |
---|
824 | </table> |
---|
825 | </div><div class="memdoc"> |
---|
826 | |
---|
827 | <p class="definition">Definition at line <a class="el" href="mod__oasis__map_8_f90_source.html#l00059">59</a> of file <a class="el" href="mod__oasis__map_8_f90_source.html">mod_oasis_map.F90</a>.</p> |
---|
828 | |
---|
829 | </div> |
---|
830 | </div> |
---|
831 | <a id="a2575785d3ea5e1a37c7f6303f00eb727"></a> |
---|
832 | <h2 class="memtitle"><span class="permalink"><a href="#a2575785d3ea5e1a37c7f6303f00eb727">◆ </a></span>rnew</h2> |
---|
833 | |
---|
834 | <div class="memitem"> |
---|
835 | <div class="memproto"> |
---|
836 | <table class="mlabels"> |
---|
837 | <tr> |
---|
838 | <td class="mlabels-left"> |
---|
839 | <table class="memname"> |
---|
840 | <tr> |
---|
841 | <td class="memname">integer, dimension(:), allocatable, private mod_oasis_map::rnew</td> |
---|
842 | </tr> |
---|
843 | </table> |
---|
844 | </td> |
---|
845 | <td class="mlabels-right"> |
---|
846 | <span class="mlabels"><span class="mlabel">private</span></span> </td> |
---|
847 | </tr> |
---|
848 | </table> |
---|
849 | </div><div class="memdoc"> |
---|
850 | |
---|
851 | <p class="definition">Definition at line <a class="el" href="mod__oasis__map_8_f90_source.html#l00065">65</a> of file <a class="el" href="mod__oasis__map_8_f90_source.html">mod_oasis_map.F90</a>.</p> |
---|
852 | |
---|
853 | </div> |
---|
854 | </div> |
---|
855 | <a id="a2931a6f582d0173cc0e6b155b8cb55b7"></a> |
---|
856 | <h2 class="memtitle"><span class="permalink"><a href="#a2931a6f582d0173cc0e6b155b8cb55b7">◆ </a></span>rold</h2> |
---|
857 | |
---|
858 | <div class="memitem"> |
---|
859 | <div class="memproto"> |
---|
860 | <table class="mlabels"> |
---|
861 | <tr> |
---|
862 | <td class="mlabels-left"> |
---|
863 | <table class="memname"> |
---|
864 | <tr> |
---|
865 | <td class="memname">integer, dimension(:), allocatable, private mod_oasis_map::rold</td> |
---|
866 | </tr> |
---|
867 | </table> |
---|
868 | </td> |
---|
869 | <td class="mlabels-right"> |
---|
870 | <span class="mlabels"><span class="mlabel">private</span></span> </td> |
---|
871 | </tr> |
---|
872 | </table> |
---|
873 | </div><div class="memdoc"> |
---|
874 | |
---|
875 | <p class="definition">Definition at line <a class="el" href="mod__oasis__map_8_f90_source.html#l00065">65</a> of file <a class="el" href="mod__oasis__map_8_f90_source.html">mod_oasis_map.F90</a>.</p> |
---|
876 | |
---|
877 | </div> |
---|
878 | </div> |
---|
879 | <a id="a28b59479c467c58995c6300071ca140a"></a> |
---|
880 | <h2 class="memtitle"><span class="permalink"><a href="#a28b59479c467c58995c6300071ca140a">◆ </a></span>snew</h2> |
---|
881 | |
---|
882 | <div class="memitem"> |
---|
883 | <div class="memproto"> |
---|
884 | <table class="mlabels"> |
---|
885 | <tr> |
---|
886 | <td class="mlabels-left"> |
---|
887 | <table class="memname"> |
---|
888 | <tr> |
---|
889 | <td class="memname">real(<a class="el" href="namespacemod__oasis__map.html#a30ebe320b9e4c06a1ee1f2a0bbacf2c4">r8</a>), dimension(:,:), allocatable, private mod_oasis_map::snew</td> |
---|
890 | </tr> |
---|
891 | </table> |
---|
892 | </td> |
---|
893 | <td class="mlabels-right"> |
---|
894 | <span class="mlabels"><span class="mlabel">private</span></span> </td> |
---|
895 | </tr> |
---|
896 | </table> |
---|
897 | </div><div class="memdoc"> |
---|
898 | |
---|
899 | <p class="definition">Definition at line <a class="el" href="mod__oasis__map_8_f90_source.html#l00064">64</a> of file <a class="el" href="mod__oasis__map_8_f90_source.html">mod_oasis_map.F90</a>.</p> |
---|
900 | |
---|
901 | </div> |
---|
902 | </div> |
---|
903 | <a id="a1fc7e7f295910352524d442c5d0dbf79"></a> |
---|
904 | <h2 class="memtitle"><span class="permalink"><a href="#a1fc7e7f295910352524d442c5d0dbf79">◆ </a></span>sold</h2> |
---|
905 | |
---|
906 | <div class="memitem"> |
---|
907 | <div class="memproto"> |
---|
908 | <table class="mlabels"> |
---|
909 | <tr> |
---|
910 | <td class="mlabels-left"> |
---|
911 | <table class="memname"> |
---|
912 | <tr> |
---|
913 | <td class="memname">real(<a class="el" href="namespacemod__oasis__map.html#a30ebe320b9e4c06a1ee1f2a0bbacf2c4">r8</a>), dimension(:,:), allocatable, private mod_oasis_map::sold</td> |
---|
914 | </tr> |
---|
915 | </table> |
---|
916 | </td> |
---|
917 | <td class="mlabels-right"> |
---|
918 | <span class="mlabels"><span class="mlabel">private</span></span> </td> |
---|
919 | </tr> |
---|
920 | </table> |
---|
921 | </div><div class="memdoc"> |
---|
922 | |
---|
923 | <p class="definition">Definition at line <a class="el" href="mod__oasis__map_8_f90_source.html#l00064">64</a> of file <a class="el" href="mod__oasis__map_8_f90_source.html">mod_oasis_map.F90</a>.</p> |
---|
924 | |
---|
925 | </div> |
---|
926 | </div> |
---|
927 | </div><!-- contents --> |
---|
928 | <!-- start footer part --> |
---|
929 | <hr class="footer"/><address class="footer"><small> |
---|
930 | Generated on Fri Jun 29 2018 20:52:29 for Oasis3-MCT by  <a href="http://www.doxygen.org/index.html"> |
---|
931 | <img class="footer" src="doxygen.png" alt="doxygen"/> |
---|
932 | </a> 1.8.13 |
---|
933 | </small></address> |
---|
934 | </body> |
---|
935 | </html> |
---|