<html><head><style type='text/css'>p { margin: 0; }</style></head><body><div style='font-family: times new roman,new york,times,serif; font-size: 12pt; color: #000000'>Hi Tim,<br>How was Boulder trip?<br>I think that this portion of the code assumes that NP=4 (so, the spectral order is 3)<br>...<br> // read connectivity into that space<br> if (!spectral_mesh)<br> std::copy(&tmp_conn[start_idx], &tmp_conn[start_idx+4*num_fine_quads], conn_arr);<br> else {<br> <b> const unsigned int permute_array[] =<br> {0, 25, 34, 11, // corner nodes<br> 1, 13, 26, 30, 22, 23, 8, 4, // edge nodes<br> 15, 17, 18, 19 // interior nodes<br> };</b><br> int f = start_idx;<br> for (int c = 0; c < num_coarse_quads; c++) {<br> for (int i = 0; i < verts_per_quad; i++) <br> conn_arr[i] = tmp_conn[f+permute_array[i]];<br> f += 4*spectral_unit;<br> conn_arr += verts_per_quad;<br> }<br> conn_arr -= 4*spectral_unit*num_coarse_quads;<br> }<br><br>I think they use 4 most of the time, but should it be more general or not?<br><br>So should I work with coarse or fine grid, for ACES4BGC?<br><br>Iulian<br><br><br><hr id="zwchr"><blockquote style="border-left:2px solid rgb(16, 16, 255);margin-left:5px;padding-left:5px;">Author: tautges<br>Date: 2012-10-30 10:20:17 -0500 (Tue, 30 Oct 2012)<br>New Revision: 5841<br><br>Modified:<br> MOAB/trunk/src/io/ReadNC.cpp<br> MOAB/trunk/src/io/ReadNC.hpp<br> MOAB/trunk/tools/mbcoupler/Coupler.cpp<br> MOAB/trunk/tools/mbcoupler/Coupler.hpp<br>Log:<br>Backing up some changes in ReadNC towards an option to create coarse,<br> true spectral elements, instead of fine linear hexes from a spectral mesh.<br><br>In Coupler, some fixes for locate_points that I'd made some time back but<br> hadn't committed.<br><br>Passes make check, serial and parallel.<br><br><br><br>Modified: MOAB/trunk/src/io/ReadNC.cpp<br>===================================================================<br>--- MOAB/trunk/src/io/ReadNC.cpp 2012-10-30 05:50:06 UTC (rev 5840)<br>+++ MOAB/trunk/src/io/ReadNC.cpp 2012-10-30 15:20:17 UTC (rev 5841)<br>@@ -34,8 +34,9 @@<br> <br> ReadNC::ReadNC(Interface* impl) :<br> mbImpl(impl), CPU_WORD_SIZE(-1), IO_WORD_SIZE(-1), fileId(-1), tMin(-1), tMax(-1), iDim(-1), jDim(-1), tDim(-1), iCDim(-1),<br>- jCDim(-1), numUnLim(-1), mCurrentMeshHandle(0), startVertex(0), startElem(0), mGlobalIdTag(0), max_line_length(-1),<br>- max_str_length(-1), vertexOffset(0), dbgOut(stderr), isParallel(false), partMethod(-1), ucdMesh(false), npMesh(false)<br>+ jCDim(-1), numUnLim(-1), mCurrentMeshHandle(0), startVertex(0), startElem(0), mGlobalIdTag(0), max_line_length(-1),<br>+ max_str_length(-1), vertexOffset(0), dbgOut(stderr), isParallel(false), partMethod(-1), camType(NOT_CAM), isCf(false),<br>+ spectralOrder(-1), npMesh(false)<br> <br> #ifdef USE_MPI<br> , myPcomm(NULL)<br>@@ -80,8 +81,6 @@<br> dbgOut = stderr;<br> mCurrentMeshHandle = 0;<br> vertexOffset = 0;<br>- ucdMesh = false;<br>- npMesh = false;<br> <br> #ifdef USE_MPI<br> myPcomm = NULL;<br>@@ -112,9 +111,9 @@<br> return rval;<br> }<br> <br>- bool nomesh = false, novars = false;<br>+ bool nomesh = false, novars = false, spectral_mesh = false;<br> std::string partition_tag_name;<br>- rval = parse_options(opts, var_names, tstep_nums, tstep_vals, nomesh, novars, partition_tag_name);<br>+ rval = parse_options(opts, var_names, tstep_nums, tstep_vals, nomesh, novars, spectral_mesh, partition_tag_name);<br> ERRORR(rval, "Trouble parsing option string.");<br> <br> // Open the file<br>@@ -155,27 +154,6 @@<br> rval = read_header();<br> ERRORR(rval, " ");<br> <br>- // check if CF convention is being followed<br>- std::string attname;<br>- std::map<std::string, AttData>::iterator attIt = globalAtts.find("conventions");<br>- if (attIt == globalAtts.end()) {<br>- attIt = globalAtts.find("Conventions");<br>- attname = std::string("Conventions");<br>- }<br>- else<br>- attname = std::string("conventions");<br>- if (attIt == globalAtts.end())<br></blockquote><br></div></body></html>