<div dir="ltr"><div><div><div><div><div><div><div><div><div>Hi Tom,<br><br></div>The problem in parallel is that <br></div>e=gllel(eg) <br></div>is giving you the local element count for a global element.  Thus, this value is relative to the processor.  <br>

(I.E. on a 4 element domain with 4 processors running, the global numbers will be 1,2,3,4 whereas the local are 1,1,1,1 because each element is the first element on that processor.)<br></div><br></div>In order to know what element goes to what data point, you will need to use the global number which is probably eg, depending on your setup.<br>

<br></div>Of course, this is all dependant on the fact that your elements are in a nice box that is numbered as you described. <br><br></div>There could be a more elegant solution to address the inlet elements, but you would still need to calculate which data point goes to which nodal point since in parallel, you will not necessarily be accessing the array sequentially.<br>

<br></div>hth,<br></div>Katherine<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sun, Jul 27, 2014 at 1:01 AM,  <span dir="ltr"><<a href="mailto:nek5000-users@lists.mcs.anl.gov" target="_blank">nek5000-users@lists.mcs.anl.gov</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hello again, <br><br><div>I want to provide more information, and more detail of my exact case to hopefully make it easier to get assistance.</div>

<div><br></div><div>Using the 2D blasius example as a base, I have created a mesh file "box.box" that allow me to modify the domain.</div>

<div>After renaming the necessary files (program is now called 'box') this works fine with the an unmodified blasius.usr (now 'box.usr') code.</div><div><br></div><div>The next step I took was to change the boundary conditions in <font face="courier new, monospace">userbc() [</font><font face="verdana, sans-serif">and</font><font face="courier new, monospace"> useric()] </font><font face="verdana, sans-serif">in box.usr</font>.</div>



<div>As I understand, the nodes on the inlet plane are called sequentially from bottom to top, by element number ('<font face="courier new, monospace">e</font>') and then by node number ('<font face="courier new, monospace">iy</font>').</div>



<div>The elements are not numbered sequentially from bottom to top, but rather left-to-right, then back to the start, then up, then left-to-right again.</div><div>Therefore for a domain of 410 elements in the streamwise (x) direction, the element numbers along the inlet are, from bottom to top: 1, 411, 821, etc. </div>



<div>There are 12 elements in the wall normal (y) direction.</div><div><br></div><div>I have an array ('<font face="courier new, monospace">ArrangedInlet</font>') in the subroutine containing the horizontal velocity component, ux, value for each of the nodes along the inlet according to their y coordinate  The original data lives in the file called 'InletArranged.out'. This is output by a process in MATLAB so there is freedom in what is included and how it is arranged and formatted.</div>



<div>The data points are currently entered manually. This is initially to test, but it is intended that this is read automatically from the external file.</div><div>However in order to assign the correct velocity value to the correct position along the inlet, I arranged the data in the array such that the rows counted iy from 1 to 8 (<font face="courier new, monospace">lx1</font>) and each is addressing a node: Row 1=Node 1; Row 2 = Node 2, etc. where the nodes go bottom-to-top (y=0 to y=10), </div>



<div>The columns contained the data for each element along the inlet - ordered from bottom to top. At the moment each row . </div><div><br></div><div>Using the same domain as described above (NELX, NELY)=(410, 12):</div>


<div>
column 1 contains data at each node ('<font face="courier new, monospace">iy</font>') for element 1,</div><div>column 2 contains data at each node ('<font face="courier new, monospace">iy</font>') for element 411, </div>



<div>column 3 contains data at each node ('<font face="courier new, monospace">iy</font>') for element 821, </div><div>and so on. </div><div><br></div><div>I got around this by using the following transformation:</div>



<div><font face="courier new, monospace">COL=((e-1)/NELX)+1</font></div><div>where:</div><div><font face="courier new, monospace">COL</font> is the column number of the array (1 to 12); </div><div><font face="courier new, monospace">e  = gllel(eg)</font> is the element number;<br>



</div><div><font face="courier new, monospace">NELX = 410</font> is the number of elements in the streamwise (x) direction.<br></div><div><br></div><div>This is then read by the program by:</div><div><font face="courier new, monospace">ux = ArrangedInlet(iy,COL)</font><br>



</div><div><br></div><div>And it works! ... but only for a serial case. Also, it currently only works for the single set of data.</div><div><br></div><div>As soon as I run the case in parallel the addressing changes and this method does not work.</div>



<div>The element addressing no longer appears to have a discernible pattern.</div><div><br></div><div><b>So my questions are primarily:</b></div><div><b>1) How can I get the values onto the inlet and make it work in parallel? </b>and<br>



</div><div><b>2) Is there a more elegant/efficient method of doing this? IE. a way of calling the inlet nodes only?</b></div><div><br></div><div>I have attached my case "box_2D_Inlet.tar.gz". </div>
<div>I have tested it and it does work, however currently it bombs out after 9 iterations, but I'm really only testing the inlet parameters.</div><div><br></div><div>Looking forward to any assistance.</div><div><br></div>



<div>Thanks, </div><div><br></div><div>Tom.</div><div><br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On 17 July 2014 10:37, Thomas Yankos <span dir="ltr"><<a href="mailto:s3286374@student.rmit.edu.au" target="_blank">s3286374@student.rmit.edu.au</a>></span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi All, <div><br></div><div>I'm using NEK5000 for a university project. I've found it to be blissfully fast and relatively easy to use.</div>


<div><br></div><div>The problem I'm doing is a blasius boundary layer case with perturbations (simulating Tollmien–Schlichting waves), initially in 2D as per the blasius example, then eventually moving to 3D.</div>
<div>I've so far been successful in running the blasius example case, and modifying the mesh, polynomial order and other input parameters.</div><div><br></div><div>Now however, I want to change the way the boundary conditions are defined.</div>



<div>I have input files that are unique for each time step specifying velocity and pressures along a line (the inlet) in text format. It would be possible to re-format these as .csv or another file if necessary.</div><div>



<br></div><div><b>How can I get NEK to read these files as boundary conditions on the inlet for each time step?</b><br></div><div><br></div><div>I understand it will be a specification in the user userbc subroutine in blasius.usr however I'm not sure how to actually implement this.</div>



<div>Doing it in 2D will be a precursor to a 3D simulation with the file specifying the inlet <i>plane </i>in a text file, rather than just a <i>line</i>. </div><div><br></div><div>Looking forward to a response.</div><div>



<br></div><div>Warm Regards,</div><div>Tom.</div></div>
</blockquote></div><br></div></div>
<br>_______________________________________________<br>
Nek5000-users mailing list<br>
<a href="mailto:Nek5000-users@lists.mcs.anl.gov">Nek5000-users@lists.mcs.anl.gov</a><br>
<a href="https://lists.mcs.anl.gov/mailman/listinfo/nek5000-users" target="_blank">https://lists.mcs.anl.gov/mailman/listinfo/nek5000-users</a><br>
<br></blockquote></div><br></div>