<div dir="ltr"><div>Hi Walter, <br></div><div><br></div><div>My first impression is that it looks like you might indeed be setting the mesh field value using the mesh coordinates. </div><div><br></div><div>It's a little difficult to debug without an actual runnable program or the pos file that shows everything is OK.<br></div><div>Would you mind sharing your program and pos file? <br></div><div><br></div><div>Sincerely, <br></div><div>Max <br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Nov 17, 2019 at 4:49 AM walter steffe <<a href="mailto:walter.steffe@alice.it">walter.steffe@alice.it</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
Hello everyone, I am still experimenting with adaptive meshing and I wanted to set a background field based on a PView.<br>
I have build the view and related background field with the following code:<br>
<br>
<br>
 //sf_ele, and getKeysValues are the same as in gmsh-4.4.1-source/demos/api/adapt_mesh.cpp<br>
 getKeysValues(sf_ele, keys, values);<br>
<br>
<br>
 int viewTag = gmsh::view::add("mesh size");<br>
<br>
 const std::vector<double> listdata;<br>
 int nelem=keys.size();<br>
 for(int i=0; i<nelem ; i++){<br>
  int etag=keys[i];<br>
  for(int j=0; j<mesh.elements()[etag]->nodesNum(); j++) listdata.push_back(mesh.elements()[etag]->nodes()[j]->x());<br>
  for(int j=0; j<mesh.elements()[etag]->nodesNum(); j++) listdata.push_back(mesh.elements()[etag]->nodes()[j]->y());<br>
  for(int j=0; j<mesh.elements()[etag]->nodesNum(); j++) listdata.push_back(mesh.elements()[etag]->nodes()[j]->z());<br>
  listdata.insert(listdata.end(),values[i].begin(),values[i].end());<br>
 }<br>
 gmsh::view::addListData(viewTag, "SS", nelem, listdata);<br>
<br>
<br>
 // just to check the data: <br>
 gmsh::view::write(viewTag, "data.pos");<br>
 // It seems OK<br>
<br>
 ...<br>
<br>
 GModel *gm0=new GModel();<br>
 #importing of OCC geometry ...<br>
<br>
 ...<br>
<br>
<br>
 FieldManager *fields = gm->getFields();<br>
 int fieldTag=1;<br>
 Field *size_f=fields->newField(fieldTag, "PostView");<br>
 size_f->options["ViewTag"]->numericalValue(viewTag);<br>
 fields->setBackgroundFieldId(fieldTag);<br>
<br>
<br>
 gm->mesh(1);   <br>
 gm->mesh(2);<br>
 gm->mesh(3);<br>
<br>
<br>
 The problem is that the field computed in BGM_MeshSize is WRONG.<br>
<br>
 Following lines are taken from BackgroundMeshTools.cpp:<br>
<br>
 double BGM_MeshSize(GEntity *ge, double U, double V, double X, double Y,<br>
          double Z)<br>
{<br>
 ....<br>
 // lc from fields<br>
 double l4 = MAX_LC;<br>
 if(ge){<br>
  FieldManager *fields = ge->model()->getFields();<br>
  if(fields->getBackgroundField() > 0) {<br>
   Field *f = fields->get(fields->getBackgroundField()); <br>
   if(f) l4 = (*f)(X, Y, Z, ge);<br>
  }<br>
 }<br>
<br>
 ..<br>
}<br>
<br>
<br>
 I have debugged the code going inside of that computation and I have found that, quite often, it happens that <br>
 the value returned by (*f)(X, Y, Z, ge) coincides with the coordinate (x,y,or z) of a vertex used in the view data.<br>
<br>
 This could be produced by a wrong ordering of data passed to gmsh::view::addListData.<br>
 But the data file printed by gmsh::view::write(viewTag, "data.pos") seems good and the values are not exchanged with <br>
 the coordinates.<br>
<br>
 So I do not understand where is the problem. May you please give me a hint ?<br>
<br>
<br>
 Thanks in advance,<br>
 Walter Steffè<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
gmsh mailing list<br>
<a href="mailto:gmsh@onelab.info" target="_blank">gmsh@onelab.info</a><br>
<a href="http://onelab.info/mailman/listinfo/gmsh" rel="noreferrer" target="_blank">http://onelab.info/mailman/listinfo/gmsh</a><br>
</blockquote></div><br clear="all"><br>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div>Max Orok</div><div>Contractor<br></div></div><div dir="ltr"><a href="http://www.mevex.com" target="_blank">www.mevex.com</a><br><br><img src="https://docs.google.com/uc?export=download&id=1fHTIiW4OMUjQr1iOkspQ7wiEsxunoOs0&revid=0B6x5w-5zVaEjSkpwbm5oY29jbG1XMzJoYldXTmJpNGFtb3dVPQ" width="164" height="42"><br></div></div></div></div></div></div>