<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://fluid.colorado.edu/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mabl7046</id>
		<title>PHASTA Wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://fluid.colorado.edu/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mabl7046"/>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php/Special:Contributions/Mabl7046"/>
		<updated>2026-05-23T00:02:56Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=ParaView/Automation_with_Python&amp;diff=1283</id>
		<title>ParaView/Automation with Python</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=ParaView/Automation_with_Python&amp;diff=1283"/>
				<updated>2021-02-16T21:24:40Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;1. Extract surface using paraview, the code will look like &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;from paraview.simple import *&lt;br /&gt;
&lt;br /&gt;
#========== read in data file&lt;br /&gt;
print 'Read phasta file'&lt;br /&gt;
dataObj = PhastaReader( FileName= 'restart_one.pht' )  # you have to change the name of this pht file&lt;br /&gt;
SRF = ExtractSurface(Input=dataObj)&lt;br /&gt;
MGBLK1 = MergeBlocks(Input=SRF)&lt;br /&gt;
vtkWriter = DataSetWriter(FileName = 'Surface.vtk' , Input = MGBLK1, FileType = 1) # you have to change the name of this vtk file&lt;br /&gt;
vtkWriter.UpdatePipeline()&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get the python file from &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/users/ychen/NGC/geometry2012/pvExtractSuface.py&amp;lt;/code&amp;gt;&lt;br /&gt;
[[Category:Paraview]]  [[Category:Post-processing]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Generating Python Scripts for Data Extraction==&lt;br /&gt;
&lt;br /&gt;
Generating python scripts can be done in the Paraview GUI and is actually pretty easy and straightforward. This process is documented [https://fluid.colorado.edu/tutorials/Paraview_Data_Extraction_Automation_1.mp4 here] in an example. Once the the script you want is generated, that script can be edited to automate data extraction. Again, a general example of this is outlined [https://fluid.colorado.edu/tutorials/Paraview_Data_Extraction_Automation_2.mp4 here]. Finally, once the script is run, data will be exported and look something like [https://fluid.colorado.edu/tutorials/Paraview_Data_Extraction_Automation_3.mp4 this].&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=ParaView/Automation_with_Python&amp;diff=1282</id>
		<title>ParaView/Automation with Python</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=ParaView/Automation_with_Python&amp;diff=1282"/>
				<updated>2021-02-16T21:18:42Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;1. Extract surface using paraview, the code will look like &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;from paraview.simple import *&lt;br /&gt;
&lt;br /&gt;
#========== read in data file&lt;br /&gt;
print 'Read phasta file'&lt;br /&gt;
dataObj = PhastaReader( FileName= 'restart_one.pht' )  # you have to change the name of this pht file&lt;br /&gt;
SRF = ExtractSurface(Input=dataObj)&lt;br /&gt;
MGBLK1 = MergeBlocks(Input=SRF)&lt;br /&gt;
vtkWriter = DataSetWriter(FileName = 'Surface.vtk' , Input = MGBLK1, FileType = 1) # you have to change the name of this vtk file&lt;br /&gt;
vtkWriter.UpdatePipeline()&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get the python file from &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/users/ychen/NGC/geometry2012/pvExtractSuface.py&amp;lt;/code&amp;gt;&lt;br /&gt;
[[Category:Paraview]]  [[Category:Post-processing]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Generating Python Scripts for Data Extraction==&lt;br /&gt;
&lt;br /&gt;
which is documented [https://fluid.colorado.edu/tutorials/Paraview_Data_Extraction_Automation_1.mp4 here].&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1279</id>
		<title>ParaView/Tricks</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1279"/>
				<updated>2021-02-05T00:02:09Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* Step 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of tips and tricks for ParaView, which may be useful for others.&lt;br /&gt;
&lt;br /&gt;
==Difference Between Two Timesteps==&lt;br /&gt;
To look at the &amp;quot;delta&amp;quot; between two timesteps, follow these steps.&lt;br /&gt;
# Load your data file twice, so your pipeline browser has two separate instances of &amp;quot;flow.pht&amp;quot; or whatever file you open.&lt;br /&gt;
# Apply one Force Time filter to each input file, and specify the physical time (not time index) for each. This will force the time for each and make them independent of the global ParaView time control in the upper toolbar.&lt;br /&gt;
# Select both Force Time filters simultaneously, and apply a Programmable Filter. Your pipeline browser will now show arrows representing multiple inputs to the single programmable filter.&lt;br /&gt;
# Populate the programmable filter with the following code:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;tmp = inputs[0].PointData['myAvailableFieldName'] - inputs[1].PointData['myAvailableFieldName']&amp;lt;br&amp;gt;output.PointData.append(tmp, 'delta of myAvailableFieldName')&amp;lt;/code&amp;gt;&lt;br /&gt;
# You can now view the field, &amp;quot;delta of myAvailableFieldName,&amp;quot; and change the time steps it uses to compute the time-delta by modifying the Force Time filter properties.&lt;br /&gt;
&lt;br /&gt;
Example script: relative change in eddy viscosity&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
s = 'EV'&lt;br /&gt;
a = inputs[0].PointData[s]&lt;br /&gt;
b = inputs[1].PointData[s]&lt;br /&gt;
tmp = (a - b) / b&lt;br /&gt;
output.PointData.append(tmp, 'delta')&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stepping Forward in Time==&lt;br /&gt;
Let's say you load your ParaView file (for PHASTA, *.pht or *.phts) as &amp;lt;code&amp;gt;phtFile&amp;lt;/code&amp;gt;. The times associated with each timestep referenced by the file are given by &amp;lt;code&amp;gt;phtFile.TimestepValues&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To step forward in time, set the time of the current view. For example, &amp;lt;code&amp;gt;GetActiveView().ViewTime = myTime&amp;lt;/code&amp;gt;. When you save an image, all visible sources will be rendered using data from that time (&amp;lt;code&amp;gt;myTime&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==Saving Data at a Given Time==&lt;br /&gt;
It turns out the data fields you access through Python are not updated simply by setting the active view's &amp;lt;code&amp;gt;ViewTime&amp;lt;/code&amp;gt; property. For example, if you're trying to extract data from a probe location or along a line, simply saving that pipeline object does not reflect the updated timestep. Instead, you need to call the &amp;lt;code&amp;gt;UpdatePipeline(time=myTime)&amp;lt;/code&amp;gt; method of your &amp;lt;code&amp;gt;ProbeLocation&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Slice&amp;lt;/code&amp;gt;, or other pipeline object. This method is inherited from &amp;lt;code&amp;gt;SourceProxy&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Visualizing Vortices==&lt;br /&gt;
Two methods for visualizing vortices are taking iso-surfaces of either Q-criterion or the Omega-criterion (Liu 2016, &amp;quot;New omega vortex identification method&amp;quot;). To compute both, apply &amp;quot;Gradient of Unstructured Dataset&amp;quot; to the velocity field in ParaView, and name the result &amp;lt;code&amp;gt;g&amp;lt;/code&amp;gt;. Then enter one of the following expressions into a Calculator, and finally apply a Contour at the appropriate value:&lt;br /&gt;
; Q-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;-g_1*g_3-g_2*g_6-g_5*g_7+g_4*g_8+g_0*(g_4+g_8)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at whatever value shows the features you want; try 1e7 as a starting point, but Q has a huge range of magnitudes&lt;br /&gt;
; Omega-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;(g_1^2 + g_2^2 - 2*g_1*g_3 + g_3^2 + g_5^2 - 2*g_2*g_6 + g_6^2 - 2*g_5*g_7 + g_7^2) / (2 * (g_0^2 + g_1^2 + g_2^2 + g_3^2 + g_4^2 + g_5^2 + g_6^2 + g_7^2 + g_8^2 + 1e-14))&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at 0.52 as recommended in the Liu (2016) paper to start; Omega is always between 0 and 1&lt;br /&gt;
&lt;br /&gt;
There is also a third useful metric for visualizing vortices. This is lambda_2 criterion. This process is outlined below.&lt;br /&gt;
&lt;br /&gt;
; Lambda_2-criterion&lt;br /&gt;
&lt;br /&gt;
======Step 1======&lt;br /&gt;
&lt;br /&gt;
First, you will need to compute the velocity gradient vector. This can be done using Paraview's &amp;lt;code&amp;gt;Gradient of Unstructured DataSet&amp;lt;/code&amp;gt; filter. Make sure the box labeled &amp;lt;code&amp;gt;Computed Gradient&amp;lt;/code&amp;gt; has an x and that the velocity field is set as the Scalar Array. When this is set, click apply.&lt;br /&gt;
&lt;br /&gt;
======Step 2======&lt;br /&gt;
Once the velocity gradient vector is computed, use the &amp;lt;code&amp;gt;Python Calculator&amp;lt;/code&amp;gt; filter. In the box labeled expression, type &amp;lt;code&amp;gt;eigenvalue(strain(Velocity)**2 + (Gradients - strain(Velocity))**2)&amp;lt;/code&amp;gt;. Note that your velocity field may not be called Velocity. If this is the case, change the aforementioned formula accordingly. Also, I recommend calling the Array name &amp;lt;code&amp;gt;lambda&amp;lt;/code&amp;gt; opposed to the default &amp;lt;code&amp;gt;result&amp;lt;/code&amp;gt;. The lambda_2 values will be the entries in the second column of this computed vector. &lt;br /&gt;
[[Category:Paraview]]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1278</id>
		<title>ParaView/Tricks</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1278"/>
				<updated>2021-02-05T00:01:23Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* Step 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of tips and tricks for ParaView, which may be useful for others.&lt;br /&gt;
&lt;br /&gt;
==Difference Between Two Timesteps==&lt;br /&gt;
To look at the &amp;quot;delta&amp;quot; between two timesteps, follow these steps.&lt;br /&gt;
# Load your data file twice, so your pipeline browser has two separate instances of &amp;quot;flow.pht&amp;quot; or whatever file you open.&lt;br /&gt;
# Apply one Force Time filter to each input file, and specify the physical time (not time index) for each. This will force the time for each and make them independent of the global ParaView time control in the upper toolbar.&lt;br /&gt;
# Select both Force Time filters simultaneously, and apply a Programmable Filter. Your pipeline browser will now show arrows representing multiple inputs to the single programmable filter.&lt;br /&gt;
# Populate the programmable filter with the following code:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;tmp = inputs[0].PointData['myAvailableFieldName'] - inputs[1].PointData['myAvailableFieldName']&amp;lt;br&amp;gt;output.PointData.append(tmp, 'delta of myAvailableFieldName')&amp;lt;/code&amp;gt;&lt;br /&gt;
# You can now view the field, &amp;quot;delta of myAvailableFieldName,&amp;quot; and change the time steps it uses to compute the time-delta by modifying the Force Time filter properties.&lt;br /&gt;
&lt;br /&gt;
Example script: relative change in eddy viscosity&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
s = 'EV'&lt;br /&gt;
a = inputs[0].PointData[s]&lt;br /&gt;
b = inputs[1].PointData[s]&lt;br /&gt;
tmp = (a - b) / b&lt;br /&gt;
output.PointData.append(tmp, 'delta')&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stepping Forward in Time==&lt;br /&gt;
Let's say you load your ParaView file (for PHASTA, *.pht or *.phts) as &amp;lt;code&amp;gt;phtFile&amp;lt;/code&amp;gt;. The times associated with each timestep referenced by the file are given by &amp;lt;code&amp;gt;phtFile.TimestepValues&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To step forward in time, set the time of the current view. For example, &amp;lt;code&amp;gt;GetActiveView().ViewTime = myTime&amp;lt;/code&amp;gt;. When you save an image, all visible sources will be rendered using data from that time (&amp;lt;code&amp;gt;myTime&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==Saving Data at a Given Time==&lt;br /&gt;
It turns out the data fields you access through Python are not updated simply by setting the active view's &amp;lt;code&amp;gt;ViewTime&amp;lt;/code&amp;gt; property. For example, if you're trying to extract data from a probe location or along a line, simply saving that pipeline object does not reflect the updated timestep. Instead, you need to call the &amp;lt;code&amp;gt;UpdatePipeline(time=myTime)&amp;lt;/code&amp;gt; method of your &amp;lt;code&amp;gt;ProbeLocation&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Slice&amp;lt;/code&amp;gt;, or other pipeline object. This method is inherited from &amp;lt;code&amp;gt;SourceProxy&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Visualizing Vortices==&lt;br /&gt;
Two methods for visualizing vortices are taking iso-surfaces of either Q-criterion or the Omega-criterion (Liu 2016, &amp;quot;New omega vortex identification method&amp;quot;). To compute both, apply &amp;quot;Gradient of Unstructured Dataset&amp;quot; to the velocity field in ParaView, and name the result &amp;lt;code&amp;gt;g&amp;lt;/code&amp;gt;. Then enter one of the following expressions into a Calculator, and finally apply a Contour at the appropriate value:&lt;br /&gt;
; Q-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;-g_1*g_3-g_2*g_6-g_5*g_7+g_4*g_8+g_0*(g_4+g_8)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at whatever value shows the features you want; try 1e7 as a starting point, but Q has a huge range of magnitudes&lt;br /&gt;
; Omega-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;(g_1^2 + g_2^2 - 2*g_1*g_3 + g_3^2 + g_5^2 - 2*g_2*g_6 + g_6^2 - 2*g_5*g_7 + g_7^2) / (2 * (g_0^2 + g_1^2 + g_2^2 + g_3^2 + g_4^2 + g_5^2 + g_6^2 + g_7^2 + g_8^2 + 1e-14))&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at 0.52 as recommended in the Liu (2016) paper to start; Omega is always between 0 and 1&lt;br /&gt;
&lt;br /&gt;
There is also a third useful metric for visualizing vortices. This is lambda_2 criterion. This process is outlined below.&lt;br /&gt;
&lt;br /&gt;
; Lambda_2-criterion&lt;br /&gt;
&lt;br /&gt;
======Step 1======&lt;br /&gt;
&lt;br /&gt;
First, you will need to compute the velocity gradient vector. This can be done using Paraview's &amp;lt;code&amp;gt;Gradient of Unstructured DataSet&amp;lt;/code&amp;gt; filter. Make sure the box labeled &amp;lt;code&amp;gt;Computed Gradient&amp;lt;/code&amp;gt; has an x and that the velocity field is set as the Scalar Array. When this is set, click apply.&lt;br /&gt;
&lt;br /&gt;
======Step 2======&lt;br /&gt;
Once the velocity gradient vector is computed, use the &amp;lt;code&amp;gt;Python Calculator&amp;lt;/code&amp;gt; filter. In the box labeled expression, type &amp;lt;code&amp;gt;eigenvalue(strain(Velocity)**2 + (Gradients - strain(Velocity))**2)&amp;lt;/code&amp;gt;. Note that your velocity field may not be called Velocity. If this is the case, change the aforementioned formula accordingly. Also, I recommend calling the Array name &amp;lt;code&amp;gt;lambda&amp;lt;/code&amp;gt; opposed to the default &amp;lt;code&amp;gt;result&amp;lt;/code&amp;gt;. &lt;br /&gt;
[[Category:Paraview]]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1277</id>
		<title>ParaView/Tricks</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1277"/>
				<updated>2021-02-04T23:59:04Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* Step 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of tips and tricks for ParaView, which may be useful for others.&lt;br /&gt;
&lt;br /&gt;
==Difference Between Two Timesteps==&lt;br /&gt;
To look at the &amp;quot;delta&amp;quot; between two timesteps, follow these steps.&lt;br /&gt;
# Load your data file twice, so your pipeline browser has two separate instances of &amp;quot;flow.pht&amp;quot; or whatever file you open.&lt;br /&gt;
# Apply one Force Time filter to each input file, and specify the physical time (not time index) for each. This will force the time for each and make them independent of the global ParaView time control in the upper toolbar.&lt;br /&gt;
# Select both Force Time filters simultaneously, and apply a Programmable Filter. Your pipeline browser will now show arrows representing multiple inputs to the single programmable filter.&lt;br /&gt;
# Populate the programmable filter with the following code:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;tmp = inputs[0].PointData['myAvailableFieldName'] - inputs[1].PointData['myAvailableFieldName']&amp;lt;br&amp;gt;output.PointData.append(tmp, 'delta of myAvailableFieldName')&amp;lt;/code&amp;gt;&lt;br /&gt;
# You can now view the field, &amp;quot;delta of myAvailableFieldName,&amp;quot; and change the time steps it uses to compute the time-delta by modifying the Force Time filter properties.&lt;br /&gt;
&lt;br /&gt;
Example script: relative change in eddy viscosity&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
s = 'EV'&lt;br /&gt;
a = inputs[0].PointData[s]&lt;br /&gt;
b = inputs[1].PointData[s]&lt;br /&gt;
tmp = (a - b) / b&lt;br /&gt;
output.PointData.append(tmp, 'delta')&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stepping Forward in Time==&lt;br /&gt;
Let's say you load your ParaView file (for PHASTA, *.pht or *.phts) as &amp;lt;code&amp;gt;phtFile&amp;lt;/code&amp;gt;. The times associated with each timestep referenced by the file are given by &amp;lt;code&amp;gt;phtFile.TimestepValues&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To step forward in time, set the time of the current view. For example, &amp;lt;code&amp;gt;GetActiveView().ViewTime = myTime&amp;lt;/code&amp;gt;. When you save an image, all visible sources will be rendered using data from that time (&amp;lt;code&amp;gt;myTime&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==Saving Data at a Given Time==&lt;br /&gt;
It turns out the data fields you access through Python are not updated simply by setting the active view's &amp;lt;code&amp;gt;ViewTime&amp;lt;/code&amp;gt; property. For example, if you're trying to extract data from a probe location or along a line, simply saving that pipeline object does not reflect the updated timestep. Instead, you need to call the &amp;lt;code&amp;gt;UpdatePipeline(time=myTime)&amp;lt;/code&amp;gt; method of your &amp;lt;code&amp;gt;ProbeLocation&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Slice&amp;lt;/code&amp;gt;, or other pipeline object. This method is inherited from &amp;lt;code&amp;gt;SourceProxy&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Visualizing Vortices==&lt;br /&gt;
Two methods for visualizing vortices are taking iso-surfaces of either Q-criterion or the Omega-criterion (Liu 2016, &amp;quot;New omega vortex identification method&amp;quot;). To compute both, apply &amp;quot;Gradient of Unstructured Dataset&amp;quot; to the velocity field in ParaView, and name the result &amp;lt;code&amp;gt;g&amp;lt;/code&amp;gt;. Then enter one of the following expressions into a Calculator, and finally apply a Contour at the appropriate value:&lt;br /&gt;
; Q-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;-g_1*g_3-g_2*g_6-g_5*g_7+g_4*g_8+g_0*(g_4+g_8)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at whatever value shows the features you want; try 1e7 as a starting point, but Q has a huge range of magnitudes&lt;br /&gt;
; Omega-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;(g_1^2 + g_2^2 - 2*g_1*g_3 + g_3^2 + g_5^2 - 2*g_2*g_6 + g_6^2 - 2*g_5*g_7 + g_7^2) / (2 * (g_0^2 + g_1^2 + g_2^2 + g_3^2 + g_4^2 + g_5^2 + g_6^2 + g_7^2 + g_8^2 + 1e-14))&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at 0.52 as recommended in the Liu (2016) paper to start; Omega is always between 0 and 1&lt;br /&gt;
&lt;br /&gt;
There is also a third useful metric for visualizing vortices. This is lambda_2 criterion. This process is outlined below.&lt;br /&gt;
&lt;br /&gt;
; Lambda_2-criterion&lt;br /&gt;
&lt;br /&gt;
======Step 1======&lt;br /&gt;
&lt;br /&gt;
First, you will need to compute the velocity gradient vector. This can be done using Paraview's &amp;lt;code&amp;gt;Gradient of Unstructured DataSet&amp;lt;/code&amp;gt; filter. Make sure the box labeled &amp;lt;code&amp;gt;Computed Gradient&amp;lt;/code&amp;gt; has an x and that the velocity field is set as the Scalar Array. When this is set, click apply.&lt;br /&gt;
&lt;br /&gt;
======Step 2======&lt;br /&gt;
Once the velocity gradient vector is computed, use the &amp;lt;code&amp;gt;Python Calculator&amp;lt;/code&amp;gt; filter. In the box labeled expression, type &amp;lt;code&amp;gt;eigenvalue(strain(Velocity)**2 + (Gradients - strain(Velocity))**2)&amp;lt;/code&amp;gt;. Note that your velocity field may not be called Velocity. If this is the case, change the formula accordingly. &lt;br /&gt;
[[Category:Paraview]]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1276</id>
		<title>ParaView/Tricks</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1276"/>
				<updated>2021-02-04T23:55:11Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* Step 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of tips and tricks for ParaView, which may be useful for others.&lt;br /&gt;
&lt;br /&gt;
==Difference Between Two Timesteps==&lt;br /&gt;
To look at the &amp;quot;delta&amp;quot; between two timesteps, follow these steps.&lt;br /&gt;
# Load your data file twice, so your pipeline browser has two separate instances of &amp;quot;flow.pht&amp;quot; or whatever file you open.&lt;br /&gt;
# Apply one Force Time filter to each input file, and specify the physical time (not time index) for each. This will force the time for each and make them independent of the global ParaView time control in the upper toolbar.&lt;br /&gt;
# Select both Force Time filters simultaneously, and apply a Programmable Filter. Your pipeline browser will now show arrows representing multiple inputs to the single programmable filter.&lt;br /&gt;
# Populate the programmable filter with the following code:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;tmp = inputs[0].PointData['myAvailableFieldName'] - inputs[1].PointData['myAvailableFieldName']&amp;lt;br&amp;gt;output.PointData.append(tmp, 'delta of myAvailableFieldName')&amp;lt;/code&amp;gt;&lt;br /&gt;
# You can now view the field, &amp;quot;delta of myAvailableFieldName,&amp;quot; and change the time steps it uses to compute the time-delta by modifying the Force Time filter properties.&lt;br /&gt;
&lt;br /&gt;
Example script: relative change in eddy viscosity&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
s = 'EV'&lt;br /&gt;
a = inputs[0].PointData[s]&lt;br /&gt;
b = inputs[1].PointData[s]&lt;br /&gt;
tmp = (a - b) / b&lt;br /&gt;
output.PointData.append(tmp, 'delta')&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stepping Forward in Time==&lt;br /&gt;
Let's say you load your ParaView file (for PHASTA, *.pht or *.phts) as &amp;lt;code&amp;gt;phtFile&amp;lt;/code&amp;gt;. The times associated with each timestep referenced by the file are given by &amp;lt;code&amp;gt;phtFile.TimestepValues&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To step forward in time, set the time of the current view. For example, &amp;lt;code&amp;gt;GetActiveView().ViewTime = myTime&amp;lt;/code&amp;gt;. When you save an image, all visible sources will be rendered using data from that time (&amp;lt;code&amp;gt;myTime&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==Saving Data at a Given Time==&lt;br /&gt;
It turns out the data fields you access through Python are not updated simply by setting the active view's &amp;lt;code&amp;gt;ViewTime&amp;lt;/code&amp;gt; property. For example, if you're trying to extract data from a probe location or along a line, simply saving that pipeline object does not reflect the updated timestep. Instead, you need to call the &amp;lt;code&amp;gt;UpdatePipeline(time=myTime)&amp;lt;/code&amp;gt; method of your &amp;lt;code&amp;gt;ProbeLocation&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Slice&amp;lt;/code&amp;gt;, or other pipeline object. This method is inherited from &amp;lt;code&amp;gt;SourceProxy&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Visualizing Vortices==&lt;br /&gt;
Two methods for visualizing vortices are taking iso-surfaces of either Q-criterion or the Omega-criterion (Liu 2016, &amp;quot;New omega vortex identification method&amp;quot;). To compute both, apply &amp;quot;Gradient of Unstructured Dataset&amp;quot; to the velocity field in ParaView, and name the result &amp;lt;code&amp;gt;g&amp;lt;/code&amp;gt;. Then enter one of the following expressions into a Calculator, and finally apply a Contour at the appropriate value:&lt;br /&gt;
; Q-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;-g_1*g_3-g_2*g_6-g_5*g_7+g_4*g_8+g_0*(g_4+g_8)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at whatever value shows the features you want; try 1e7 as a starting point, but Q has a huge range of magnitudes&lt;br /&gt;
; Omega-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;(g_1^2 + g_2^2 - 2*g_1*g_3 + g_3^2 + g_5^2 - 2*g_2*g_6 + g_6^2 - 2*g_5*g_7 + g_7^2) / (2 * (g_0^2 + g_1^2 + g_2^2 + g_3^2 + g_4^2 + g_5^2 + g_6^2 + g_7^2 + g_8^2 + 1e-14))&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at 0.52 as recommended in the Liu (2016) paper to start; Omega is always between 0 and 1&lt;br /&gt;
&lt;br /&gt;
There is also a third useful metric for visualizing vortices. This is lambda_2 criterion. This process is outlined below.&lt;br /&gt;
&lt;br /&gt;
; Lambda_2-criterion&lt;br /&gt;
&lt;br /&gt;
======Step 1======&lt;br /&gt;
&lt;br /&gt;
First, you will need to compute the velocity gradient vector. This can be done using Paraview's &amp;lt;code&amp;gt;Gradient of Unstructured DataSet&amp;lt;/code&amp;gt; filter. Make sure the box labeled &amp;lt;code&amp;gt;Computed Gradient&amp;lt;/code&amp;gt; has an x and that the velocity field is set as the Scalar Array. When this is set, click apply.&lt;br /&gt;
&lt;br /&gt;
======Step 2======&lt;br /&gt;
Once the velocity gradient vector is computed, use the &amp;lt;code&amp;gt;Python Calculator&amp;lt;/code&amp;gt; filter. &lt;br /&gt;
[[Category:Paraview]]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1275</id>
		<title>ParaView/Tricks</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1275"/>
				<updated>2021-02-04T23:55:01Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* Step 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of tips and tricks for ParaView, which may be useful for others.&lt;br /&gt;
&lt;br /&gt;
==Difference Between Two Timesteps==&lt;br /&gt;
To look at the &amp;quot;delta&amp;quot; between two timesteps, follow these steps.&lt;br /&gt;
# Load your data file twice, so your pipeline browser has two separate instances of &amp;quot;flow.pht&amp;quot; or whatever file you open.&lt;br /&gt;
# Apply one Force Time filter to each input file, and specify the physical time (not time index) for each. This will force the time for each and make them independent of the global ParaView time control in the upper toolbar.&lt;br /&gt;
# Select both Force Time filters simultaneously, and apply a Programmable Filter. Your pipeline browser will now show arrows representing multiple inputs to the single programmable filter.&lt;br /&gt;
# Populate the programmable filter with the following code:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;tmp = inputs[0].PointData['myAvailableFieldName'] - inputs[1].PointData['myAvailableFieldName']&amp;lt;br&amp;gt;output.PointData.append(tmp, 'delta of myAvailableFieldName')&amp;lt;/code&amp;gt;&lt;br /&gt;
# You can now view the field, &amp;quot;delta of myAvailableFieldName,&amp;quot; and change the time steps it uses to compute the time-delta by modifying the Force Time filter properties.&lt;br /&gt;
&lt;br /&gt;
Example script: relative change in eddy viscosity&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
s = 'EV'&lt;br /&gt;
a = inputs[0].PointData[s]&lt;br /&gt;
b = inputs[1].PointData[s]&lt;br /&gt;
tmp = (a - b) / b&lt;br /&gt;
output.PointData.append(tmp, 'delta')&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stepping Forward in Time==&lt;br /&gt;
Let's say you load your ParaView file (for PHASTA, *.pht or *.phts) as &amp;lt;code&amp;gt;phtFile&amp;lt;/code&amp;gt;. The times associated with each timestep referenced by the file are given by &amp;lt;code&amp;gt;phtFile.TimestepValues&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To step forward in time, set the time of the current view. For example, &amp;lt;code&amp;gt;GetActiveView().ViewTime = myTime&amp;lt;/code&amp;gt;. When you save an image, all visible sources will be rendered using data from that time (&amp;lt;code&amp;gt;myTime&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==Saving Data at a Given Time==&lt;br /&gt;
It turns out the data fields you access through Python are not updated simply by setting the active view's &amp;lt;code&amp;gt;ViewTime&amp;lt;/code&amp;gt; property. For example, if you're trying to extract data from a probe location or along a line, simply saving that pipeline object does not reflect the updated timestep. Instead, you need to call the &amp;lt;code&amp;gt;UpdatePipeline(time=myTime)&amp;lt;/code&amp;gt; method of your &amp;lt;code&amp;gt;ProbeLocation&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Slice&amp;lt;/code&amp;gt;, or other pipeline object. This method is inherited from &amp;lt;code&amp;gt;SourceProxy&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Visualizing Vortices==&lt;br /&gt;
Two methods for visualizing vortices are taking iso-surfaces of either Q-criterion or the Omega-criterion (Liu 2016, &amp;quot;New omega vortex identification method&amp;quot;). To compute both, apply &amp;quot;Gradient of Unstructured Dataset&amp;quot; to the velocity field in ParaView, and name the result &amp;lt;code&amp;gt;g&amp;lt;/code&amp;gt;. Then enter one of the following expressions into a Calculator, and finally apply a Contour at the appropriate value:&lt;br /&gt;
; Q-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;-g_1*g_3-g_2*g_6-g_5*g_7+g_4*g_8+g_0*(g_4+g_8)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at whatever value shows the features you want; try 1e7 as a starting point, but Q has a huge range of magnitudes&lt;br /&gt;
; Omega-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;(g_1^2 + g_2^2 - 2*g_1*g_3 + g_3^2 + g_5^2 - 2*g_2*g_6 + g_6^2 - 2*g_5*g_7 + g_7^2) / (2 * (g_0^2 + g_1^2 + g_2^2 + g_3^2 + g_4^2 + g_5^2 + g_6^2 + g_7^2 + g_8^2 + 1e-14))&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at 0.52 as recommended in the Liu (2016) paper to start; Omega is always between 0 and 1&lt;br /&gt;
&lt;br /&gt;
There is also a third useful metric for visualizing vortices. This is lambda_2 criterion. This process is outlined below.&lt;br /&gt;
&lt;br /&gt;
; Lambda_2-criterion&lt;br /&gt;
&lt;br /&gt;
======Step 1======&lt;br /&gt;
&lt;br /&gt;
First, you will need to compute the velocity gradient vector. This can be done using Paraview's &amp;lt;code&amp;gt;Gradient of Unstructured DataSet&amp;lt;/code&amp;gt; filter. Make sure the box labeled &amp;lt;code&amp;gt;Computed Gradient&amp;lt;/code&amp;gt; has an x and that the velocity field is set as the Scalar Array. When this is set, click apply.&lt;br /&gt;
&lt;br /&gt;
======Step 2======&lt;br /&gt;
Once the velocity gradient vector is computed, use the &amp;lt;code&amp;gt;Python Calculator &amp;lt;/code&amp;gt; filter. &lt;br /&gt;
[[Category:Paraview]]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1274</id>
		<title>ParaView/Tricks</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1274"/>
				<updated>2021-02-04T23:54:53Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* Step 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of tips and tricks for ParaView, which may be useful for others.&lt;br /&gt;
&lt;br /&gt;
==Difference Between Two Timesteps==&lt;br /&gt;
To look at the &amp;quot;delta&amp;quot; between two timesteps, follow these steps.&lt;br /&gt;
# Load your data file twice, so your pipeline browser has two separate instances of &amp;quot;flow.pht&amp;quot; or whatever file you open.&lt;br /&gt;
# Apply one Force Time filter to each input file, and specify the physical time (not time index) for each. This will force the time for each and make them independent of the global ParaView time control in the upper toolbar.&lt;br /&gt;
# Select both Force Time filters simultaneously, and apply a Programmable Filter. Your pipeline browser will now show arrows representing multiple inputs to the single programmable filter.&lt;br /&gt;
# Populate the programmable filter with the following code:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;tmp = inputs[0].PointData['myAvailableFieldName'] - inputs[1].PointData['myAvailableFieldName']&amp;lt;br&amp;gt;output.PointData.append(tmp, 'delta of myAvailableFieldName')&amp;lt;/code&amp;gt;&lt;br /&gt;
# You can now view the field, &amp;quot;delta of myAvailableFieldName,&amp;quot; and change the time steps it uses to compute the time-delta by modifying the Force Time filter properties.&lt;br /&gt;
&lt;br /&gt;
Example script: relative change in eddy viscosity&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
s = 'EV'&lt;br /&gt;
a = inputs[0].PointData[s]&lt;br /&gt;
b = inputs[1].PointData[s]&lt;br /&gt;
tmp = (a - b) / b&lt;br /&gt;
output.PointData.append(tmp, 'delta')&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stepping Forward in Time==&lt;br /&gt;
Let's say you load your ParaView file (for PHASTA, *.pht or *.phts) as &amp;lt;code&amp;gt;phtFile&amp;lt;/code&amp;gt;. The times associated with each timestep referenced by the file are given by &amp;lt;code&amp;gt;phtFile.TimestepValues&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To step forward in time, set the time of the current view. For example, &amp;lt;code&amp;gt;GetActiveView().ViewTime = myTime&amp;lt;/code&amp;gt;. When you save an image, all visible sources will be rendered using data from that time (&amp;lt;code&amp;gt;myTime&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==Saving Data at a Given Time==&lt;br /&gt;
It turns out the data fields you access through Python are not updated simply by setting the active view's &amp;lt;code&amp;gt;ViewTime&amp;lt;/code&amp;gt; property. For example, if you're trying to extract data from a probe location or along a line, simply saving that pipeline object does not reflect the updated timestep. Instead, you need to call the &amp;lt;code&amp;gt;UpdatePipeline(time=myTime)&amp;lt;/code&amp;gt; method of your &amp;lt;code&amp;gt;ProbeLocation&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Slice&amp;lt;/code&amp;gt;, or other pipeline object. This method is inherited from &amp;lt;code&amp;gt;SourceProxy&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Visualizing Vortices==&lt;br /&gt;
Two methods for visualizing vortices are taking iso-surfaces of either Q-criterion or the Omega-criterion (Liu 2016, &amp;quot;New omega vortex identification method&amp;quot;). To compute both, apply &amp;quot;Gradient of Unstructured Dataset&amp;quot; to the velocity field in ParaView, and name the result &amp;lt;code&amp;gt;g&amp;lt;/code&amp;gt;. Then enter one of the following expressions into a Calculator, and finally apply a Contour at the appropriate value:&lt;br /&gt;
; Q-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;-g_1*g_3-g_2*g_6-g_5*g_7+g_4*g_8+g_0*(g_4+g_8)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at whatever value shows the features you want; try 1e7 as a starting point, but Q has a huge range of magnitudes&lt;br /&gt;
; Omega-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;(g_1^2 + g_2^2 - 2*g_1*g_3 + g_3^2 + g_5^2 - 2*g_2*g_6 + g_6^2 - 2*g_5*g_7 + g_7^2) / (2 * (g_0^2 + g_1^2 + g_2^2 + g_3^2 + g_4^2 + g_5^2 + g_6^2 + g_7^2 + g_8^2 + 1e-14))&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at 0.52 as recommended in the Liu (2016) paper to start; Omega is always between 0 and 1&lt;br /&gt;
&lt;br /&gt;
There is also a third useful metric for visualizing vortices. This is lambda_2 criterion. This process is outlined below.&lt;br /&gt;
&lt;br /&gt;
; Lambda_2-criterion&lt;br /&gt;
&lt;br /&gt;
======Step 1======&lt;br /&gt;
&lt;br /&gt;
First, you will need to compute the velocity gradient vector. This can be done using Paraview's &amp;lt;code&amp;gt;Gradient of Unstructured DataSet&amp;lt;/code&amp;gt; filter. Make sure the box labeled &amp;lt;code&amp;gt;Computed Gradient&amp;lt;/code&amp;gt; has an x and that the velocity field is set as the Scalar Array. When this is set, click apply.&lt;br /&gt;
&lt;br /&gt;
======Step 2======&lt;br /&gt;
Once the velocity gradient vector is computed, use the &amp;lt;code&amp;gt;Python Calculator &amp;lt;\code&amp;gt; filter. &lt;br /&gt;
[[Category:Paraview]]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1273</id>
		<title>ParaView/Tricks</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1273"/>
				<updated>2021-02-04T23:54:42Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* Step 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of tips and tricks for ParaView, which may be useful for others.&lt;br /&gt;
&lt;br /&gt;
==Difference Between Two Timesteps==&lt;br /&gt;
To look at the &amp;quot;delta&amp;quot; between two timesteps, follow these steps.&lt;br /&gt;
# Load your data file twice, so your pipeline browser has two separate instances of &amp;quot;flow.pht&amp;quot; or whatever file you open.&lt;br /&gt;
# Apply one Force Time filter to each input file, and specify the physical time (not time index) for each. This will force the time for each and make them independent of the global ParaView time control in the upper toolbar.&lt;br /&gt;
# Select both Force Time filters simultaneously, and apply a Programmable Filter. Your pipeline browser will now show arrows representing multiple inputs to the single programmable filter.&lt;br /&gt;
# Populate the programmable filter with the following code:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;tmp = inputs[0].PointData['myAvailableFieldName'] - inputs[1].PointData['myAvailableFieldName']&amp;lt;br&amp;gt;output.PointData.append(tmp, 'delta of myAvailableFieldName')&amp;lt;/code&amp;gt;&lt;br /&gt;
# You can now view the field, &amp;quot;delta of myAvailableFieldName,&amp;quot; and change the time steps it uses to compute the time-delta by modifying the Force Time filter properties.&lt;br /&gt;
&lt;br /&gt;
Example script: relative change in eddy viscosity&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
s = 'EV'&lt;br /&gt;
a = inputs[0].PointData[s]&lt;br /&gt;
b = inputs[1].PointData[s]&lt;br /&gt;
tmp = (a - b) / b&lt;br /&gt;
output.PointData.append(tmp, 'delta')&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stepping Forward in Time==&lt;br /&gt;
Let's say you load your ParaView file (for PHASTA, *.pht or *.phts) as &amp;lt;code&amp;gt;phtFile&amp;lt;/code&amp;gt;. The times associated with each timestep referenced by the file are given by &amp;lt;code&amp;gt;phtFile.TimestepValues&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To step forward in time, set the time of the current view. For example, &amp;lt;code&amp;gt;GetActiveView().ViewTime = myTime&amp;lt;/code&amp;gt;. When you save an image, all visible sources will be rendered using data from that time (&amp;lt;code&amp;gt;myTime&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==Saving Data at a Given Time==&lt;br /&gt;
It turns out the data fields you access through Python are not updated simply by setting the active view's &amp;lt;code&amp;gt;ViewTime&amp;lt;/code&amp;gt; property. For example, if you're trying to extract data from a probe location or along a line, simply saving that pipeline object does not reflect the updated timestep. Instead, you need to call the &amp;lt;code&amp;gt;UpdatePipeline(time=myTime)&amp;lt;/code&amp;gt; method of your &amp;lt;code&amp;gt;ProbeLocation&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Slice&amp;lt;/code&amp;gt;, or other pipeline object. This method is inherited from &amp;lt;code&amp;gt;SourceProxy&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Visualizing Vortices==&lt;br /&gt;
Two methods for visualizing vortices are taking iso-surfaces of either Q-criterion or the Omega-criterion (Liu 2016, &amp;quot;New omega vortex identification method&amp;quot;). To compute both, apply &amp;quot;Gradient of Unstructured Dataset&amp;quot; to the velocity field in ParaView, and name the result &amp;lt;code&amp;gt;g&amp;lt;/code&amp;gt;. Then enter one of the following expressions into a Calculator, and finally apply a Contour at the appropriate value:&lt;br /&gt;
; Q-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;-g_1*g_3-g_2*g_6-g_5*g_7+g_4*g_8+g_0*(g_4+g_8)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at whatever value shows the features you want; try 1e7 as a starting point, but Q has a huge range of magnitudes&lt;br /&gt;
; Omega-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;(g_1^2 + g_2^2 - 2*g_1*g_3 + g_3^2 + g_5^2 - 2*g_2*g_6 + g_6^2 - 2*g_5*g_7 + g_7^2) / (2 * (g_0^2 + g_1^2 + g_2^2 + g_3^2 + g_4^2 + g_5^2 + g_6^2 + g_7^2 + g_8^2 + 1e-14))&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at 0.52 as recommended in the Liu (2016) paper to start; Omega is always between 0 and 1&lt;br /&gt;
&lt;br /&gt;
There is also a third useful metric for visualizing vortices. This is lambda_2 criterion. This process is outlined below.&lt;br /&gt;
&lt;br /&gt;
; Lambda_2-criterion&lt;br /&gt;
&lt;br /&gt;
======Step 1======&lt;br /&gt;
&lt;br /&gt;
First, you will need to compute the velocity gradient vector. This can be done using Paraview's &amp;lt;code&amp;gt;Gradient of Unstructured DataSet&amp;lt;/code&amp;gt; filter. Make sure the box labeled &amp;lt;code&amp;gt;Computed Gradient&amp;lt;/code&amp;gt; has an x and that the velocity field is set as the Scalar Array. When this is set, click apply.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
======Step 2======&lt;br /&gt;
Once the velocity gradient vector is computed, use the &amp;lt;code&amp;gt;Python Calculator &amp;lt;\code&amp;gt; filter. &lt;br /&gt;
[[Category:Paraview]]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1272</id>
		<title>ParaView/Tricks</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1272"/>
				<updated>2021-02-04T23:53:07Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* Step 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of tips and tricks for ParaView, which may be useful for others.&lt;br /&gt;
&lt;br /&gt;
==Difference Between Two Timesteps==&lt;br /&gt;
To look at the &amp;quot;delta&amp;quot; between two timesteps, follow these steps.&lt;br /&gt;
# Load your data file twice, so your pipeline browser has two separate instances of &amp;quot;flow.pht&amp;quot; or whatever file you open.&lt;br /&gt;
# Apply one Force Time filter to each input file, and specify the physical time (not time index) for each. This will force the time for each and make them independent of the global ParaView time control in the upper toolbar.&lt;br /&gt;
# Select both Force Time filters simultaneously, and apply a Programmable Filter. Your pipeline browser will now show arrows representing multiple inputs to the single programmable filter.&lt;br /&gt;
# Populate the programmable filter with the following code:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;tmp = inputs[0].PointData['myAvailableFieldName'] - inputs[1].PointData['myAvailableFieldName']&amp;lt;br&amp;gt;output.PointData.append(tmp, 'delta of myAvailableFieldName')&amp;lt;/code&amp;gt;&lt;br /&gt;
# You can now view the field, &amp;quot;delta of myAvailableFieldName,&amp;quot; and change the time steps it uses to compute the time-delta by modifying the Force Time filter properties.&lt;br /&gt;
&lt;br /&gt;
Example script: relative change in eddy viscosity&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
s = 'EV'&lt;br /&gt;
a = inputs[0].PointData[s]&lt;br /&gt;
b = inputs[1].PointData[s]&lt;br /&gt;
tmp = (a - b) / b&lt;br /&gt;
output.PointData.append(tmp, 'delta')&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stepping Forward in Time==&lt;br /&gt;
Let's say you load your ParaView file (for PHASTA, *.pht or *.phts) as &amp;lt;code&amp;gt;phtFile&amp;lt;/code&amp;gt;. The times associated with each timestep referenced by the file are given by &amp;lt;code&amp;gt;phtFile.TimestepValues&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To step forward in time, set the time of the current view. For example, &amp;lt;code&amp;gt;GetActiveView().ViewTime = myTime&amp;lt;/code&amp;gt;. When you save an image, all visible sources will be rendered using data from that time (&amp;lt;code&amp;gt;myTime&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==Saving Data at a Given Time==&lt;br /&gt;
It turns out the data fields you access through Python are not updated simply by setting the active view's &amp;lt;code&amp;gt;ViewTime&amp;lt;/code&amp;gt; property. For example, if you're trying to extract data from a probe location or along a line, simply saving that pipeline object does not reflect the updated timestep. Instead, you need to call the &amp;lt;code&amp;gt;UpdatePipeline(time=myTime)&amp;lt;/code&amp;gt; method of your &amp;lt;code&amp;gt;ProbeLocation&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Slice&amp;lt;/code&amp;gt;, or other pipeline object. This method is inherited from &amp;lt;code&amp;gt;SourceProxy&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Visualizing Vortices==&lt;br /&gt;
Two methods for visualizing vortices are taking iso-surfaces of either Q-criterion or the Omega-criterion (Liu 2016, &amp;quot;New omega vortex identification method&amp;quot;). To compute both, apply &amp;quot;Gradient of Unstructured Dataset&amp;quot; to the velocity field in ParaView, and name the result &amp;lt;code&amp;gt;g&amp;lt;/code&amp;gt;. Then enter one of the following expressions into a Calculator, and finally apply a Contour at the appropriate value:&lt;br /&gt;
; Q-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;-g_1*g_3-g_2*g_6-g_5*g_7+g_4*g_8+g_0*(g_4+g_8)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at whatever value shows the features you want; try 1e7 as a starting point, but Q has a huge range of magnitudes&lt;br /&gt;
; Omega-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;(g_1^2 + g_2^2 - 2*g_1*g_3 + g_3^2 + g_5^2 - 2*g_2*g_6 + g_6^2 - 2*g_5*g_7 + g_7^2) / (2 * (g_0^2 + g_1^2 + g_2^2 + g_3^2 + g_4^2 + g_5^2 + g_6^2 + g_7^2 + g_8^2 + 1e-14))&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at 0.52 as recommended in the Liu (2016) paper to start; Omega is always between 0 and 1&lt;br /&gt;
&lt;br /&gt;
There is also a third useful metric for visualizing vortices. This is lambda_2 criterion. This process is outlined below.&lt;br /&gt;
&lt;br /&gt;
; Lambda_2-criterion&lt;br /&gt;
&lt;br /&gt;
======Step 1======&lt;br /&gt;
&lt;br /&gt;
First, you will need to compute the velocity gradient vector. This can be done using Paraview's &amp;lt;code&amp;gt;Gradient of Unstructured DataSet&amp;lt;/code&amp;gt; filter. Make sure the box labeled &amp;lt;code&amp;gt;Computed Gradient&amp;lt;/code&amp;gt; has an x and that the velocity field is set as the Scalar Array. When this is set, click apply.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
======Step 2======&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Paraview]]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1271</id>
		<title>ParaView/Tricks</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1271"/>
				<updated>2021-02-04T23:52:35Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* Step 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of tips and tricks for ParaView, which may be useful for others.&lt;br /&gt;
&lt;br /&gt;
==Difference Between Two Timesteps==&lt;br /&gt;
To look at the &amp;quot;delta&amp;quot; between two timesteps, follow these steps.&lt;br /&gt;
# Load your data file twice, so your pipeline browser has two separate instances of &amp;quot;flow.pht&amp;quot; or whatever file you open.&lt;br /&gt;
# Apply one Force Time filter to each input file, and specify the physical time (not time index) for each. This will force the time for each and make them independent of the global ParaView time control in the upper toolbar.&lt;br /&gt;
# Select both Force Time filters simultaneously, and apply a Programmable Filter. Your pipeline browser will now show arrows representing multiple inputs to the single programmable filter.&lt;br /&gt;
# Populate the programmable filter with the following code:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;tmp = inputs[0].PointData['myAvailableFieldName'] - inputs[1].PointData['myAvailableFieldName']&amp;lt;br&amp;gt;output.PointData.append(tmp, 'delta of myAvailableFieldName')&amp;lt;/code&amp;gt;&lt;br /&gt;
# You can now view the field, &amp;quot;delta of myAvailableFieldName,&amp;quot; and change the time steps it uses to compute the time-delta by modifying the Force Time filter properties.&lt;br /&gt;
&lt;br /&gt;
Example script: relative change in eddy viscosity&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
s = 'EV'&lt;br /&gt;
a = inputs[0].PointData[s]&lt;br /&gt;
b = inputs[1].PointData[s]&lt;br /&gt;
tmp = (a - b) / b&lt;br /&gt;
output.PointData.append(tmp, 'delta')&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stepping Forward in Time==&lt;br /&gt;
Let's say you load your ParaView file (for PHASTA, *.pht or *.phts) as &amp;lt;code&amp;gt;phtFile&amp;lt;/code&amp;gt;. The times associated with each timestep referenced by the file are given by &amp;lt;code&amp;gt;phtFile.TimestepValues&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To step forward in time, set the time of the current view. For example, &amp;lt;code&amp;gt;GetActiveView().ViewTime = myTime&amp;lt;/code&amp;gt;. When you save an image, all visible sources will be rendered using data from that time (&amp;lt;code&amp;gt;myTime&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==Saving Data at a Given Time==&lt;br /&gt;
It turns out the data fields you access through Python are not updated simply by setting the active view's &amp;lt;code&amp;gt;ViewTime&amp;lt;/code&amp;gt; property. For example, if you're trying to extract data from a probe location or along a line, simply saving that pipeline object does not reflect the updated timestep. Instead, you need to call the &amp;lt;code&amp;gt;UpdatePipeline(time=myTime)&amp;lt;/code&amp;gt; method of your &amp;lt;code&amp;gt;ProbeLocation&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Slice&amp;lt;/code&amp;gt;, or other pipeline object. This method is inherited from &amp;lt;code&amp;gt;SourceProxy&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Visualizing Vortices==&lt;br /&gt;
Two methods for visualizing vortices are taking iso-surfaces of either Q-criterion or the Omega-criterion (Liu 2016, &amp;quot;New omega vortex identification method&amp;quot;). To compute both, apply &amp;quot;Gradient of Unstructured Dataset&amp;quot; to the velocity field in ParaView, and name the result &amp;lt;code&amp;gt;g&amp;lt;/code&amp;gt;. Then enter one of the following expressions into a Calculator, and finally apply a Contour at the appropriate value:&lt;br /&gt;
; Q-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;-g_1*g_3-g_2*g_6-g_5*g_7+g_4*g_8+g_0*(g_4+g_8)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at whatever value shows the features you want; try 1e7 as a starting point, but Q has a huge range of magnitudes&lt;br /&gt;
; Omega-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;(g_1^2 + g_2^2 - 2*g_1*g_3 + g_3^2 + g_5^2 - 2*g_2*g_6 + g_6^2 - 2*g_5*g_7 + g_7^2) / (2 * (g_0^2 + g_1^2 + g_2^2 + g_3^2 + g_4^2 + g_5^2 + g_6^2 + g_7^2 + g_8^2 + 1e-14))&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at 0.52 as recommended in the Liu (2016) paper to start; Omega is always between 0 and 1&lt;br /&gt;
&lt;br /&gt;
There is also a third useful metric for visualizing vortices. This is lambda_2 criterion. This process is outlined below.&lt;br /&gt;
&lt;br /&gt;
; Lambda_2-criterion&lt;br /&gt;
&lt;br /&gt;
======Step 1======&lt;br /&gt;
&lt;br /&gt;
First, you will need to compute the velocity gradient vector. This can be done using Paraview's &amp;lt;code&amp;gt;Gradient of Unstructured DataSet&amp;lt;/code&amp;gt; filter. Make sure the box labeled &amp;lt;code&amp;gt;Computed Gradient&amp;lt;/code&amp;gt; has an x and that the velocity field is set as the Scalar Array.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Paraview]]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1270</id>
		<title>ParaView/Tricks</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1270"/>
				<updated>2021-02-04T23:52:02Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* Step 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of tips and tricks for ParaView, which may be useful for others.&lt;br /&gt;
&lt;br /&gt;
==Difference Between Two Timesteps==&lt;br /&gt;
To look at the &amp;quot;delta&amp;quot; between two timesteps, follow these steps.&lt;br /&gt;
# Load your data file twice, so your pipeline browser has two separate instances of &amp;quot;flow.pht&amp;quot; or whatever file you open.&lt;br /&gt;
# Apply one Force Time filter to each input file, and specify the physical time (not time index) for each. This will force the time for each and make them independent of the global ParaView time control in the upper toolbar.&lt;br /&gt;
# Select both Force Time filters simultaneously, and apply a Programmable Filter. Your pipeline browser will now show arrows representing multiple inputs to the single programmable filter.&lt;br /&gt;
# Populate the programmable filter with the following code:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;tmp = inputs[0].PointData['myAvailableFieldName'] - inputs[1].PointData['myAvailableFieldName']&amp;lt;br&amp;gt;output.PointData.append(tmp, 'delta of myAvailableFieldName')&amp;lt;/code&amp;gt;&lt;br /&gt;
# You can now view the field, &amp;quot;delta of myAvailableFieldName,&amp;quot; and change the time steps it uses to compute the time-delta by modifying the Force Time filter properties.&lt;br /&gt;
&lt;br /&gt;
Example script: relative change in eddy viscosity&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
s = 'EV'&lt;br /&gt;
a = inputs[0].PointData[s]&lt;br /&gt;
b = inputs[1].PointData[s]&lt;br /&gt;
tmp = (a - b) / b&lt;br /&gt;
output.PointData.append(tmp, 'delta')&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stepping Forward in Time==&lt;br /&gt;
Let's say you load your ParaView file (for PHASTA, *.pht or *.phts) as &amp;lt;code&amp;gt;phtFile&amp;lt;/code&amp;gt;. The times associated with each timestep referenced by the file are given by &amp;lt;code&amp;gt;phtFile.TimestepValues&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To step forward in time, set the time of the current view. For example, &amp;lt;code&amp;gt;GetActiveView().ViewTime = myTime&amp;lt;/code&amp;gt;. When you save an image, all visible sources will be rendered using data from that time (&amp;lt;code&amp;gt;myTime&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==Saving Data at a Given Time==&lt;br /&gt;
It turns out the data fields you access through Python are not updated simply by setting the active view's &amp;lt;code&amp;gt;ViewTime&amp;lt;/code&amp;gt; property. For example, if you're trying to extract data from a probe location or along a line, simply saving that pipeline object does not reflect the updated timestep. Instead, you need to call the &amp;lt;code&amp;gt;UpdatePipeline(time=myTime)&amp;lt;/code&amp;gt; method of your &amp;lt;code&amp;gt;ProbeLocation&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Slice&amp;lt;/code&amp;gt;, or other pipeline object. This method is inherited from &amp;lt;code&amp;gt;SourceProxy&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Visualizing Vortices==&lt;br /&gt;
Two methods for visualizing vortices are taking iso-surfaces of either Q-criterion or the Omega-criterion (Liu 2016, &amp;quot;New omega vortex identification method&amp;quot;). To compute both, apply &amp;quot;Gradient of Unstructured Dataset&amp;quot; to the velocity field in ParaView, and name the result &amp;lt;code&amp;gt;g&amp;lt;/code&amp;gt;. Then enter one of the following expressions into a Calculator, and finally apply a Contour at the appropriate value:&lt;br /&gt;
; Q-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;-g_1*g_3-g_2*g_6-g_5*g_7+g_4*g_8+g_0*(g_4+g_8)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at whatever value shows the features you want; try 1e7 as a starting point, but Q has a huge range of magnitudes&lt;br /&gt;
; Omega-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;(g_1^2 + g_2^2 - 2*g_1*g_3 + g_3^2 + g_5^2 - 2*g_2*g_6 + g_6^2 - 2*g_5*g_7 + g_7^2) / (2 * (g_0^2 + g_1^2 + g_2^2 + g_3^2 + g_4^2 + g_5^2 + g_6^2 + g_7^2 + g_8^2 + 1e-14))&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at 0.52 as recommended in the Liu (2016) paper to start; Omega is always between 0 and 1&lt;br /&gt;
&lt;br /&gt;
There is also a third useful metric for visualizing vortices. This is lambda_2 criterion. This process is outlined below.&lt;br /&gt;
&lt;br /&gt;
; Lambda_2-criterion&lt;br /&gt;
&lt;br /&gt;
======Step 1======&lt;br /&gt;
&lt;br /&gt;
First, you will need to compute the velocity gradient vector. This can be done using Paraview's &amp;lt;code&amp;gt;Gradient of Unstructured DataSet&amp;lt;/code&amp;gt; filter. Make sure the box labeled &amp;lt;code&amp;gt;Computed Gradient&amp;lt;/code&amp;gt; has an x and that &amp;lt;code&amp;gt;u&amp;lt;/code&amp;gt; is set as the Scalar Array.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Paraview]]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1269</id>
		<title>ParaView/Tricks</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1269"/>
				<updated>2021-02-04T23:47:16Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* Visualizing Vortices */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of tips and tricks for ParaView, which may be useful for others.&lt;br /&gt;
&lt;br /&gt;
==Difference Between Two Timesteps==&lt;br /&gt;
To look at the &amp;quot;delta&amp;quot; between two timesteps, follow these steps.&lt;br /&gt;
# Load your data file twice, so your pipeline browser has two separate instances of &amp;quot;flow.pht&amp;quot; or whatever file you open.&lt;br /&gt;
# Apply one Force Time filter to each input file, and specify the physical time (not time index) for each. This will force the time for each and make them independent of the global ParaView time control in the upper toolbar.&lt;br /&gt;
# Select both Force Time filters simultaneously, and apply a Programmable Filter. Your pipeline browser will now show arrows representing multiple inputs to the single programmable filter.&lt;br /&gt;
# Populate the programmable filter with the following code:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;tmp = inputs[0].PointData['myAvailableFieldName'] - inputs[1].PointData['myAvailableFieldName']&amp;lt;br&amp;gt;output.PointData.append(tmp, 'delta of myAvailableFieldName')&amp;lt;/code&amp;gt;&lt;br /&gt;
# You can now view the field, &amp;quot;delta of myAvailableFieldName,&amp;quot; and change the time steps it uses to compute the time-delta by modifying the Force Time filter properties.&lt;br /&gt;
&lt;br /&gt;
Example script: relative change in eddy viscosity&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
s = 'EV'&lt;br /&gt;
a = inputs[0].PointData[s]&lt;br /&gt;
b = inputs[1].PointData[s]&lt;br /&gt;
tmp = (a - b) / b&lt;br /&gt;
output.PointData.append(tmp, 'delta')&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stepping Forward in Time==&lt;br /&gt;
Let's say you load your ParaView file (for PHASTA, *.pht or *.phts) as &amp;lt;code&amp;gt;phtFile&amp;lt;/code&amp;gt;. The times associated with each timestep referenced by the file are given by &amp;lt;code&amp;gt;phtFile.TimestepValues&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To step forward in time, set the time of the current view. For example, &amp;lt;code&amp;gt;GetActiveView().ViewTime = myTime&amp;lt;/code&amp;gt;. When you save an image, all visible sources will be rendered using data from that time (&amp;lt;code&amp;gt;myTime&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==Saving Data at a Given Time==&lt;br /&gt;
It turns out the data fields you access through Python are not updated simply by setting the active view's &amp;lt;code&amp;gt;ViewTime&amp;lt;/code&amp;gt; property. For example, if you're trying to extract data from a probe location or along a line, simply saving that pipeline object does not reflect the updated timestep. Instead, you need to call the &amp;lt;code&amp;gt;UpdatePipeline(time=myTime)&amp;lt;/code&amp;gt; method of your &amp;lt;code&amp;gt;ProbeLocation&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Slice&amp;lt;/code&amp;gt;, or other pipeline object. This method is inherited from &amp;lt;code&amp;gt;SourceProxy&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Visualizing Vortices==&lt;br /&gt;
Two methods for visualizing vortices are taking iso-surfaces of either Q-criterion or the Omega-criterion (Liu 2016, &amp;quot;New omega vortex identification method&amp;quot;). To compute both, apply &amp;quot;Gradient of Unstructured Dataset&amp;quot; to the velocity field in ParaView, and name the result &amp;lt;code&amp;gt;g&amp;lt;/code&amp;gt;. Then enter one of the following expressions into a Calculator, and finally apply a Contour at the appropriate value:&lt;br /&gt;
; Q-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;-g_1*g_3-g_2*g_6-g_5*g_7+g_4*g_8+g_0*(g_4+g_8)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at whatever value shows the features you want; try 1e7 as a starting point, but Q has a huge range of magnitudes&lt;br /&gt;
; Omega-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;(g_1^2 + g_2^2 - 2*g_1*g_3 + g_3^2 + g_5^2 - 2*g_2*g_6 + g_6^2 - 2*g_5*g_7 + g_7^2) / (2 * (g_0^2 + g_1^2 + g_2^2 + g_3^2 + g_4^2 + g_5^2 + g_6^2 + g_7^2 + g_8^2 + 1e-14))&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at 0.52 as recommended in the Liu (2016) paper to start; Omega is always between 0 and 1&lt;br /&gt;
&lt;br /&gt;
There is also a third useful metric for visualizing vortices. This is lambda_2 criterion. This process is outlined below.&lt;br /&gt;
&lt;br /&gt;
; Lambda_2-criterion&lt;br /&gt;
&lt;br /&gt;
======Step 1======&lt;br /&gt;
&lt;br /&gt;
First, you will need to compute the velocity gradient vector. This can be done using Paraview's &amp;lt;code&amp;gt;Gradient of Unstructured DataSet&amp;lt;/code&amp;gt; filter.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Paraview]]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1268</id>
		<title>ParaView/Tricks</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1268"/>
				<updated>2021-02-04T23:46:23Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* Visualizing Vortices */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of tips and tricks for ParaView, which may be useful for others.&lt;br /&gt;
&lt;br /&gt;
==Difference Between Two Timesteps==&lt;br /&gt;
To look at the &amp;quot;delta&amp;quot; between two timesteps, follow these steps.&lt;br /&gt;
# Load your data file twice, so your pipeline browser has two separate instances of &amp;quot;flow.pht&amp;quot; or whatever file you open.&lt;br /&gt;
# Apply one Force Time filter to each input file, and specify the physical time (not time index) for each. This will force the time for each and make them independent of the global ParaView time control in the upper toolbar.&lt;br /&gt;
# Select both Force Time filters simultaneously, and apply a Programmable Filter. Your pipeline browser will now show arrows representing multiple inputs to the single programmable filter.&lt;br /&gt;
# Populate the programmable filter with the following code:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;tmp = inputs[0].PointData['myAvailableFieldName'] - inputs[1].PointData['myAvailableFieldName']&amp;lt;br&amp;gt;output.PointData.append(tmp, 'delta of myAvailableFieldName')&amp;lt;/code&amp;gt;&lt;br /&gt;
# You can now view the field, &amp;quot;delta of myAvailableFieldName,&amp;quot; and change the time steps it uses to compute the time-delta by modifying the Force Time filter properties.&lt;br /&gt;
&lt;br /&gt;
Example script: relative change in eddy viscosity&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
s = 'EV'&lt;br /&gt;
a = inputs[0].PointData[s]&lt;br /&gt;
b = inputs[1].PointData[s]&lt;br /&gt;
tmp = (a - b) / b&lt;br /&gt;
output.PointData.append(tmp, 'delta')&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stepping Forward in Time==&lt;br /&gt;
Let's say you load your ParaView file (for PHASTA, *.pht or *.phts) as &amp;lt;code&amp;gt;phtFile&amp;lt;/code&amp;gt;. The times associated with each timestep referenced by the file are given by &amp;lt;code&amp;gt;phtFile.TimestepValues&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To step forward in time, set the time of the current view. For example, &amp;lt;code&amp;gt;GetActiveView().ViewTime = myTime&amp;lt;/code&amp;gt;. When you save an image, all visible sources will be rendered using data from that time (&amp;lt;code&amp;gt;myTime&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==Saving Data at a Given Time==&lt;br /&gt;
It turns out the data fields you access through Python are not updated simply by setting the active view's &amp;lt;code&amp;gt;ViewTime&amp;lt;/code&amp;gt; property. For example, if you're trying to extract data from a probe location or along a line, simply saving that pipeline object does not reflect the updated timestep. Instead, you need to call the &amp;lt;code&amp;gt;UpdatePipeline(time=myTime)&amp;lt;/code&amp;gt; method of your &amp;lt;code&amp;gt;ProbeLocation&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Slice&amp;lt;/code&amp;gt;, or other pipeline object. This method is inherited from &amp;lt;code&amp;gt;SourceProxy&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Visualizing Vortices==&lt;br /&gt;
Two methods for visualizing vortices are taking iso-surfaces of either Q-criterion or the Omega-criterion (Liu 2016, &amp;quot;New omega vortex identification method&amp;quot;). To compute both, apply &amp;quot;Gradient of Unstructured Dataset&amp;quot; to the velocity field in ParaView, and name the result &amp;lt;code&amp;gt;g&amp;lt;/code&amp;gt;. Then enter one of the following expressions into a Calculator, and finally apply a Contour at the appropriate value:&lt;br /&gt;
; Q-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;-g_1*g_3-g_2*g_6-g_5*g_7+g_4*g_8+g_0*(g_4+g_8)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at whatever value shows the features you want; try 1e7 as a starting point, but Q has a huge range of magnitudes&lt;br /&gt;
; Omega-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;(g_1^2 + g_2^2 - 2*g_1*g_3 + g_3^2 + g_5^2 - 2*g_2*g_6 + g_6^2 - 2*g_5*g_7 + g_7^2) / (2 * (g_0^2 + g_1^2 + g_2^2 + g_3^2 + g_4^2 + g_5^2 + g_6^2 + g_7^2 + g_8^2 + 1e-14))&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at 0.52 as recommended in the Liu (2016) paper to start; Omega is always between 0 and 1&lt;br /&gt;
&lt;br /&gt;
A third useful metric for visualizing vortices is lambda_2 criterion. This process is outlined below.&lt;br /&gt;
&lt;br /&gt;
; Lambda_2-criterion&lt;br /&gt;
&lt;br /&gt;
======Step 1======&lt;br /&gt;
&lt;br /&gt;
First, you will need to compute the velocity gradient vector. This can be done using Paraview's &amp;lt;code&amp;gt;Gradient of Unstructured DataSet&amp;lt;/code&amp;gt; filter.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Paraview]]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1267</id>
		<title>ParaView/Tricks</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1267"/>
				<updated>2021-02-04T23:42:06Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* Visualizing Vortices */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of tips and tricks for ParaView, which may be useful for others.&lt;br /&gt;
&lt;br /&gt;
==Difference Between Two Timesteps==&lt;br /&gt;
To look at the &amp;quot;delta&amp;quot; between two timesteps, follow these steps.&lt;br /&gt;
# Load your data file twice, so your pipeline browser has two separate instances of &amp;quot;flow.pht&amp;quot; or whatever file you open.&lt;br /&gt;
# Apply one Force Time filter to each input file, and specify the physical time (not time index) for each. This will force the time for each and make them independent of the global ParaView time control in the upper toolbar.&lt;br /&gt;
# Select both Force Time filters simultaneously, and apply a Programmable Filter. Your pipeline browser will now show arrows representing multiple inputs to the single programmable filter.&lt;br /&gt;
# Populate the programmable filter with the following code:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;tmp = inputs[0].PointData['myAvailableFieldName'] - inputs[1].PointData['myAvailableFieldName']&amp;lt;br&amp;gt;output.PointData.append(tmp, 'delta of myAvailableFieldName')&amp;lt;/code&amp;gt;&lt;br /&gt;
# You can now view the field, &amp;quot;delta of myAvailableFieldName,&amp;quot; and change the time steps it uses to compute the time-delta by modifying the Force Time filter properties.&lt;br /&gt;
&lt;br /&gt;
Example script: relative change in eddy viscosity&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
s = 'EV'&lt;br /&gt;
a = inputs[0].PointData[s]&lt;br /&gt;
b = inputs[1].PointData[s]&lt;br /&gt;
tmp = (a - b) / b&lt;br /&gt;
output.PointData.append(tmp, 'delta')&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stepping Forward in Time==&lt;br /&gt;
Let's say you load your ParaView file (for PHASTA, *.pht or *.phts) as &amp;lt;code&amp;gt;phtFile&amp;lt;/code&amp;gt;. The times associated with each timestep referenced by the file are given by &amp;lt;code&amp;gt;phtFile.TimestepValues&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To step forward in time, set the time of the current view. For example, &amp;lt;code&amp;gt;GetActiveView().ViewTime = myTime&amp;lt;/code&amp;gt;. When you save an image, all visible sources will be rendered using data from that time (&amp;lt;code&amp;gt;myTime&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==Saving Data at a Given Time==&lt;br /&gt;
It turns out the data fields you access through Python are not updated simply by setting the active view's &amp;lt;code&amp;gt;ViewTime&amp;lt;/code&amp;gt; property. For example, if you're trying to extract data from a probe location or along a line, simply saving that pipeline object does not reflect the updated timestep. Instead, you need to call the &amp;lt;code&amp;gt;UpdatePipeline(time=myTime)&amp;lt;/code&amp;gt; method of your &amp;lt;code&amp;gt;ProbeLocation&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Slice&amp;lt;/code&amp;gt;, or other pipeline object. This method is inherited from &amp;lt;code&amp;gt;SourceProxy&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Visualizing Vortices==&lt;br /&gt;
Two methods for visualizing vortices are taking iso-surfaces of either Q-criterion or the Omega-criterion (Liu 2016, &amp;quot;New omega vortex identification method&amp;quot;). To compute both, apply &amp;quot;Gradient of Unstructured Dataset&amp;quot; to the velocity field in ParaView, and name the result &amp;lt;code&amp;gt;g&amp;lt;/code&amp;gt;. Then enter one of the following expressions into a Calculator, and finally apply a Contour at the appropriate value:&lt;br /&gt;
; Q-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;-g_1*g_3-g_2*g_6-g_5*g_7+g_4*g_8+g_0*(g_4+g_8)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at whatever value shows the features you want; try 1e7 as a starting point, but Q has a huge range of magnitudes&lt;br /&gt;
; Omega-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;(g_1^2 + g_2^2 - 2*g_1*g_3 + g_3^2 + g_5^2 - 2*g_2*g_6 + g_6^2 - 2*g_5*g_7 + g_7^2) / (2 * (g_0^2 + g_1^2 + g_2^2 + g_3^2 + g_4^2 + g_5^2 + g_6^2 + g_7^2 + g_8^2 + 1e-14))&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at 0.52 as recommended in the Liu (2016) paper to start; Omega is always between 0 and 1&lt;br /&gt;
&lt;br /&gt;
A third useful metric for visualizing vortices is lambda_2 criterion. This process is outlined below.&lt;br /&gt;
&lt;br /&gt;
; Lambda_2-criterion&lt;br /&gt;
&lt;br /&gt;
======Step 1======&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Paraview]]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1266</id>
		<title>ParaView/Tricks</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1266"/>
				<updated>2021-02-04T23:41:55Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* Visualizing Vortices */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of tips and tricks for ParaView, which may be useful for others.&lt;br /&gt;
&lt;br /&gt;
==Difference Between Two Timesteps==&lt;br /&gt;
To look at the &amp;quot;delta&amp;quot; between two timesteps, follow these steps.&lt;br /&gt;
# Load your data file twice, so your pipeline browser has two separate instances of &amp;quot;flow.pht&amp;quot; or whatever file you open.&lt;br /&gt;
# Apply one Force Time filter to each input file, and specify the physical time (not time index) for each. This will force the time for each and make them independent of the global ParaView time control in the upper toolbar.&lt;br /&gt;
# Select both Force Time filters simultaneously, and apply a Programmable Filter. Your pipeline browser will now show arrows representing multiple inputs to the single programmable filter.&lt;br /&gt;
# Populate the programmable filter with the following code:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;tmp = inputs[0].PointData['myAvailableFieldName'] - inputs[1].PointData['myAvailableFieldName']&amp;lt;br&amp;gt;output.PointData.append(tmp, 'delta of myAvailableFieldName')&amp;lt;/code&amp;gt;&lt;br /&gt;
# You can now view the field, &amp;quot;delta of myAvailableFieldName,&amp;quot; and change the time steps it uses to compute the time-delta by modifying the Force Time filter properties.&lt;br /&gt;
&lt;br /&gt;
Example script: relative change in eddy viscosity&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
s = 'EV'&lt;br /&gt;
a = inputs[0].PointData[s]&lt;br /&gt;
b = inputs[1].PointData[s]&lt;br /&gt;
tmp = (a - b) / b&lt;br /&gt;
output.PointData.append(tmp, 'delta')&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stepping Forward in Time==&lt;br /&gt;
Let's say you load your ParaView file (for PHASTA, *.pht or *.phts) as &amp;lt;code&amp;gt;phtFile&amp;lt;/code&amp;gt;. The times associated with each timestep referenced by the file are given by &amp;lt;code&amp;gt;phtFile.TimestepValues&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To step forward in time, set the time of the current view. For example, &amp;lt;code&amp;gt;GetActiveView().ViewTime = myTime&amp;lt;/code&amp;gt;. When you save an image, all visible sources will be rendered using data from that time (&amp;lt;code&amp;gt;myTime&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==Saving Data at a Given Time==&lt;br /&gt;
It turns out the data fields you access through Python are not updated simply by setting the active view's &amp;lt;code&amp;gt;ViewTime&amp;lt;/code&amp;gt; property. For example, if you're trying to extract data from a probe location or along a line, simply saving that pipeline object does not reflect the updated timestep. Instead, you need to call the &amp;lt;code&amp;gt;UpdatePipeline(time=myTime)&amp;lt;/code&amp;gt; method of your &amp;lt;code&amp;gt;ProbeLocation&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Slice&amp;lt;/code&amp;gt;, or other pipeline object. This method is inherited from &amp;lt;code&amp;gt;SourceProxy&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Visualizing Vortices==&lt;br /&gt;
Two methods for visualizing vortices are taking iso-surfaces of either Q-criterion or the Omega-criterion (Liu 2016, &amp;quot;New omega vortex identification method&amp;quot;). To compute both, apply &amp;quot;Gradient of Unstructured Dataset&amp;quot; to the velocity field in ParaView, and name the result &amp;lt;code&amp;gt;g&amp;lt;/code&amp;gt;. Then enter one of the following expressions into a Calculator, and finally apply a Contour at the appropriate value:&lt;br /&gt;
; Q-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;-g_1*g_3-g_2*g_6-g_5*g_7+g_4*g_8+g_0*(g_4+g_8)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at whatever value shows the features you want; try 1e7 as a starting point, but Q has a huge range of magnitudes&lt;br /&gt;
; Omega-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;(g_1^2 + g_2^2 - 2*g_1*g_3 + g_3^2 + g_5^2 - 2*g_2*g_6 + g_6^2 - 2*g_5*g_7 + g_7^2) / (2 * (g_0^2 + g_1^2 + g_2^2 + g_3^2 + g_4^2 + g_5^2 + g_6^2 + g_7^2 + g_8^2 + 1e-14))&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at 0.52 as recommended in the Liu (2016) paper to start; Omega is always between 0 and 1&lt;br /&gt;
&lt;br /&gt;
A third useful metric for visualizing vortices is lambda_2 criterion. This process is outlined below.&lt;br /&gt;
&lt;br /&gt;
; Lambda_2-criterion&lt;br /&gt;
&lt;br /&gt;
=======Step 1=======&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Paraview]]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1265</id>
		<title>ParaView/Tricks</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1265"/>
				<updated>2021-02-04T23:41:46Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* Visualizing Vortices */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of tips and tricks for ParaView, which may be useful for others.&lt;br /&gt;
&lt;br /&gt;
==Difference Between Two Timesteps==&lt;br /&gt;
To look at the &amp;quot;delta&amp;quot; between two timesteps, follow these steps.&lt;br /&gt;
# Load your data file twice, so your pipeline browser has two separate instances of &amp;quot;flow.pht&amp;quot; or whatever file you open.&lt;br /&gt;
# Apply one Force Time filter to each input file, and specify the physical time (not time index) for each. This will force the time for each and make them independent of the global ParaView time control in the upper toolbar.&lt;br /&gt;
# Select both Force Time filters simultaneously, and apply a Programmable Filter. Your pipeline browser will now show arrows representing multiple inputs to the single programmable filter.&lt;br /&gt;
# Populate the programmable filter with the following code:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;tmp = inputs[0].PointData['myAvailableFieldName'] - inputs[1].PointData['myAvailableFieldName']&amp;lt;br&amp;gt;output.PointData.append(tmp, 'delta of myAvailableFieldName')&amp;lt;/code&amp;gt;&lt;br /&gt;
# You can now view the field, &amp;quot;delta of myAvailableFieldName,&amp;quot; and change the time steps it uses to compute the time-delta by modifying the Force Time filter properties.&lt;br /&gt;
&lt;br /&gt;
Example script: relative change in eddy viscosity&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
s = 'EV'&lt;br /&gt;
a = inputs[0].PointData[s]&lt;br /&gt;
b = inputs[1].PointData[s]&lt;br /&gt;
tmp = (a - b) / b&lt;br /&gt;
output.PointData.append(tmp, 'delta')&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stepping Forward in Time==&lt;br /&gt;
Let's say you load your ParaView file (for PHASTA, *.pht or *.phts) as &amp;lt;code&amp;gt;phtFile&amp;lt;/code&amp;gt;. The times associated with each timestep referenced by the file are given by &amp;lt;code&amp;gt;phtFile.TimestepValues&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To step forward in time, set the time of the current view. For example, &amp;lt;code&amp;gt;GetActiveView().ViewTime = myTime&amp;lt;/code&amp;gt;. When you save an image, all visible sources will be rendered using data from that time (&amp;lt;code&amp;gt;myTime&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==Saving Data at a Given Time==&lt;br /&gt;
It turns out the data fields you access through Python are not updated simply by setting the active view's &amp;lt;code&amp;gt;ViewTime&amp;lt;/code&amp;gt; property. For example, if you're trying to extract data from a probe location or along a line, simply saving that pipeline object does not reflect the updated timestep. Instead, you need to call the &amp;lt;code&amp;gt;UpdatePipeline(time=myTime)&amp;lt;/code&amp;gt; method of your &amp;lt;code&amp;gt;ProbeLocation&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Slice&amp;lt;/code&amp;gt;, or other pipeline object. This method is inherited from &amp;lt;code&amp;gt;SourceProxy&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Visualizing Vortices==&lt;br /&gt;
Two methods for visualizing vortices are taking iso-surfaces of either Q-criterion or the Omega-criterion (Liu 2016, &amp;quot;New omega vortex identification method&amp;quot;). To compute both, apply &amp;quot;Gradient of Unstructured Dataset&amp;quot; to the velocity field in ParaView, and name the result &amp;lt;code&amp;gt;g&amp;lt;/code&amp;gt;. Then enter one of the following expressions into a Calculator, and finally apply a Contour at the appropriate value:&lt;br /&gt;
; Q-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;-g_1*g_3-g_2*g_6-g_5*g_7+g_4*g_8+g_0*(g_4+g_8)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at whatever value shows the features you want; try 1e7 as a starting point, but Q has a huge range of magnitudes&lt;br /&gt;
; Omega-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;(g_1^2 + g_2^2 - 2*g_1*g_3 + g_3^2 + g_5^2 - 2*g_2*g_6 + g_6^2 - 2*g_5*g_7 + g_7^2) / (2 * (g_0^2 + g_1^2 + g_2^2 + g_3^2 + g_4^2 + g_5^2 + g_6^2 + g_7^2 + g_8^2 + 1e-14))&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at 0.52 as recommended in the Liu (2016) paper to start; Omega is always between 0 and 1&lt;br /&gt;
&lt;br /&gt;
A third useful metric for visualizing vortices is lambda_2 criterion. This process is outlined below.&lt;br /&gt;
&lt;br /&gt;
; Lambda_2-criterion&lt;br /&gt;
&lt;br /&gt;
======Step 1======&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Paraview]]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1264</id>
		<title>ParaView/Tricks</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1264"/>
				<updated>2021-02-04T23:41:35Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* Visualizing Vortices */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of tips and tricks for ParaView, which may be useful for others.&lt;br /&gt;
&lt;br /&gt;
==Difference Between Two Timesteps==&lt;br /&gt;
To look at the &amp;quot;delta&amp;quot; between two timesteps, follow these steps.&lt;br /&gt;
# Load your data file twice, so your pipeline browser has two separate instances of &amp;quot;flow.pht&amp;quot; or whatever file you open.&lt;br /&gt;
# Apply one Force Time filter to each input file, and specify the physical time (not time index) for each. This will force the time for each and make them independent of the global ParaView time control in the upper toolbar.&lt;br /&gt;
# Select both Force Time filters simultaneously, and apply a Programmable Filter. Your pipeline browser will now show arrows representing multiple inputs to the single programmable filter.&lt;br /&gt;
# Populate the programmable filter with the following code:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;tmp = inputs[0].PointData['myAvailableFieldName'] - inputs[1].PointData['myAvailableFieldName']&amp;lt;br&amp;gt;output.PointData.append(tmp, 'delta of myAvailableFieldName')&amp;lt;/code&amp;gt;&lt;br /&gt;
# You can now view the field, &amp;quot;delta of myAvailableFieldName,&amp;quot; and change the time steps it uses to compute the time-delta by modifying the Force Time filter properties.&lt;br /&gt;
&lt;br /&gt;
Example script: relative change in eddy viscosity&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
s = 'EV'&lt;br /&gt;
a = inputs[0].PointData[s]&lt;br /&gt;
b = inputs[1].PointData[s]&lt;br /&gt;
tmp = (a - b) / b&lt;br /&gt;
output.PointData.append(tmp, 'delta')&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stepping Forward in Time==&lt;br /&gt;
Let's say you load your ParaView file (for PHASTA, *.pht or *.phts) as &amp;lt;code&amp;gt;phtFile&amp;lt;/code&amp;gt;. The times associated with each timestep referenced by the file are given by &amp;lt;code&amp;gt;phtFile.TimestepValues&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To step forward in time, set the time of the current view. For example, &amp;lt;code&amp;gt;GetActiveView().ViewTime = myTime&amp;lt;/code&amp;gt;. When you save an image, all visible sources will be rendered using data from that time (&amp;lt;code&amp;gt;myTime&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==Saving Data at a Given Time==&lt;br /&gt;
It turns out the data fields you access through Python are not updated simply by setting the active view's &amp;lt;code&amp;gt;ViewTime&amp;lt;/code&amp;gt; property. For example, if you're trying to extract data from a probe location or along a line, simply saving that pipeline object does not reflect the updated timestep. Instead, you need to call the &amp;lt;code&amp;gt;UpdatePipeline(time=myTime)&amp;lt;/code&amp;gt; method of your &amp;lt;code&amp;gt;ProbeLocation&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Slice&amp;lt;/code&amp;gt;, or other pipeline object. This method is inherited from &amp;lt;code&amp;gt;SourceProxy&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Visualizing Vortices==&lt;br /&gt;
Two methods for visualizing vortices are taking iso-surfaces of either Q-criterion or the Omega-criterion (Liu 2016, &amp;quot;New omega vortex identification method&amp;quot;). To compute both, apply &amp;quot;Gradient of Unstructured Dataset&amp;quot; to the velocity field in ParaView, and name the result &amp;lt;code&amp;gt;g&amp;lt;/code&amp;gt;. Then enter one of the following expressions into a Calculator, and finally apply a Contour at the appropriate value:&lt;br /&gt;
; Q-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;-g_1*g_3-g_2*g_6-g_5*g_7+g_4*g_8+g_0*(g_4+g_8)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at whatever value shows the features you want; try 1e7 as a starting point, but Q has a huge range of magnitudes&lt;br /&gt;
; Omega-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;(g_1^2 + g_2^2 - 2*g_1*g_3 + g_3^2 + g_5^2 - 2*g_2*g_6 + g_6^2 - 2*g_5*g_7 + g_7^2) / (2 * (g_0^2 + g_1^2 + g_2^2 + g_3^2 + g_4^2 + g_5^2 + g_6^2 + g_7^2 + g_8^2 + 1e-14))&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at 0.52 as recommended in the Liu (2016) paper to start; Omega is always between 0 and 1&lt;br /&gt;
&lt;br /&gt;
A third useful metric for visualizing vortices is lambda_2 criterion. This process is outlined below.&lt;br /&gt;
&lt;br /&gt;
; Lambda_2-criterion&lt;br /&gt;
&lt;br /&gt;
=====Step 1=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Paraview]]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1263</id>
		<title>ParaView/Tricks</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1263"/>
				<updated>2021-02-04T23:41:25Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* Visualizing Vortices */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of tips and tricks for ParaView, which may be useful for others.&lt;br /&gt;
&lt;br /&gt;
==Difference Between Two Timesteps==&lt;br /&gt;
To look at the &amp;quot;delta&amp;quot; between two timesteps, follow these steps.&lt;br /&gt;
# Load your data file twice, so your pipeline browser has two separate instances of &amp;quot;flow.pht&amp;quot; or whatever file you open.&lt;br /&gt;
# Apply one Force Time filter to each input file, and specify the physical time (not time index) for each. This will force the time for each and make them independent of the global ParaView time control in the upper toolbar.&lt;br /&gt;
# Select both Force Time filters simultaneously, and apply a Programmable Filter. Your pipeline browser will now show arrows representing multiple inputs to the single programmable filter.&lt;br /&gt;
# Populate the programmable filter with the following code:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;tmp = inputs[0].PointData['myAvailableFieldName'] - inputs[1].PointData['myAvailableFieldName']&amp;lt;br&amp;gt;output.PointData.append(tmp, 'delta of myAvailableFieldName')&amp;lt;/code&amp;gt;&lt;br /&gt;
# You can now view the field, &amp;quot;delta of myAvailableFieldName,&amp;quot; and change the time steps it uses to compute the time-delta by modifying the Force Time filter properties.&lt;br /&gt;
&lt;br /&gt;
Example script: relative change in eddy viscosity&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
s = 'EV'&lt;br /&gt;
a = inputs[0].PointData[s]&lt;br /&gt;
b = inputs[1].PointData[s]&lt;br /&gt;
tmp = (a - b) / b&lt;br /&gt;
output.PointData.append(tmp, 'delta')&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stepping Forward in Time==&lt;br /&gt;
Let's say you load your ParaView file (for PHASTA, *.pht or *.phts) as &amp;lt;code&amp;gt;phtFile&amp;lt;/code&amp;gt;. The times associated with each timestep referenced by the file are given by &amp;lt;code&amp;gt;phtFile.TimestepValues&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To step forward in time, set the time of the current view. For example, &amp;lt;code&amp;gt;GetActiveView().ViewTime = myTime&amp;lt;/code&amp;gt;. When you save an image, all visible sources will be rendered using data from that time (&amp;lt;code&amp;gt;myTime&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==Saving Data at a Given Time==&lt;br /&gt;
It turns out the data fields you access through Python are not updated simply by setting the active view's &amp;lt;code&amp;gt;ViewTime&amp;lt;/code&amp;gt; property. For example, if you're trying to extract data from a probe location or along a line, simply saving that pipeline object does not reflect the updated timestep. Instead, you need to call the &amp;lt;code&amp;gt;UpdatePipeline(time=myTime)&amp;lt;/code&amp;gt; method of your &amp;lt;code&amp;gt;ProbeLocation&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Slice&amp;lt;/code&amp;gt;, or other pipeline object. This method is inherited from &amp;lt;code&amp;gt;SourceProxy&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Visualizing Vortices==&lt;br /&gt;
Two methods for visualizing vortices are taking iso-surfaces of either Q-criterion or the Omega-criterion (Liu 2016, &amp;quot;New omega vortex identification method&amp;quot;). To compute both, apply &amp;quot;Gradient of Unstructured Dataset&amp;quot; to the velocity field in ParaView, and name the result &amp;lt;code&amp;gt;g&amp;lt;/code&amp;gt;. Then enter one of the following expressions into a Calculator, and finally apply a Contour at the appropriate value:&lt;br /&gt;
; Q-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;-g_1*g_3-g_2*g_6-g_5*g_7+g_4*g_8+g_0*(g_4+g_8)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at whatever value shows the features you want; try 1e7 as a starting point, but Q has a huge range of magnitudes&lt;br /&gt;
; Omega-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;(g_1^2 + g_2^2 - 2*g_1*g_3 + g_3^2 + g_5^2 - 2*g_2*g_6 + g_6^2 - 2*g_5*g_7 + g_7^2) / (2 * (g_0^2 + g_1^2 + g_2^2 + g_3^2 + g_4^2 + g_5^2 + g_6^2 + g_7^2 + g_8^2 + 1e-14))&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at 0.52 as recommended in the Liu (2016) paper to start; Omega is always between 0 and 1&lt;br /&gt;
&lt;br /&gt;
A third useful metric for visualizing vortices is lambda_2 criterion. This process is outlined below.&lt;br /&gt;
&lt;br /&gt;
; Lambda_2-criterion&lt;br /&gt;
&lt;br /&gt;
====Step 1====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Paraview]]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1262</id>
		<title>ParaView/Tricks</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1262"/>
				<updated>2021-02-04T23:41:06Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* Visualizing Vortices */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of tips and tricks for ParaView, which may be useful for others.&lt;br /&gt;
&lt;br /&gt;
==Difference Between Two Timesteps==&lt;br /&gt;
To look at the &amp;quot;delta&amp;quot; between two timesteps, follow these steps.&lt;br /&gt;
# Load your data file twice, so your pipeline browser has two separate instances of &amp;quot;flow.pht&amp;quot; or whatever file you open.&lt;br /&gt;
# Apply one Force Time filter to each input file, and specify the physical time (not time index) for each. This will force the time for each and make them independent of the global ParaView time control in the upper toolbar.&lt;br /&gt;
# Select both Force Time filters simultaneously, and apply a Programmable Filter. Your pipeline browser will now show arrows representing multiple inputs to the single programmable filter.&lt;br /&gt;
# Populate the programmable filter with the following code:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;tmp = inputs[0].PointData['myAvailableFieldName'] - inputs[1].PointData['myAvailableFieldName']&amp;lt;br&amp;gt;output.PointData.append(tmp, 'delta of myAvailableFieldName')&amp;lt;/code&amp;gt;&lt;br /&gt;
# You can now view the field, &amp;quot;delta of myAvailableFieldName,&amp;quot; and change the time steps it uses to compute the time-delta by modifying the Force Time filter properties.&lt;br /&gt;
&lt;br /&gt;
Example script: relative change in eddy viscosity&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
s = 'EV'&lt;br /&gt;
a = inputs[0].PointData[s]&lt;br /&gt;
b = inputs[1].PointData[s]&lt;br /&gt;
tmp = (a - b) / b&lt;br /&gt;
output.PointData.append(tmp, 'delta')&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stepping Forward in Time==&lt;br /&gt;
Let's say you load your ParaView file (for PHASTA, *.pht or *.phts) as &amp;lt;code&amp;gt;phtFile&amp;lt;/code&amp;gt;. The times associated with each timestep referenced by the file are given by &amp;lt;code&amp;gt;phtFile.TimestepValues&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To step forward in time, set the time of the current view. For example, &amp;lt;code&amp;gt;GetActiveView().ViewTime = myTime&amp;lt;/code&amp;gt;. When you save an image, all visible sources will be rendered using data from that time (&amp;lt;code&amp;gt;myTime&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==Saving Data at a Given Time==&lt;br /&gt;
It turns out the data fields you access through Python are not updated simply by setting the active view's &amp;lt;code&amp;gt;ViewTime&amp;lt;/code&amp;gt; property. For example, if you're trying to extract data from a probe location or along a line, simply saving that pipeline object does not reflect the updated timestep. Instead, you need to call the &amp;lt;code&amp;gt;UpdatePipeline(time=myTime)&amp;lt;/code&amp;gt; method of your &amp;lt;code&amp;gt;ProbeLocation&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Slice&amp;lt;/code&amp;gt;, or other pipeline object. This method is inherited from &amp;lt;code&amp;gt;SourceProxy&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Visualizing Vortices==&lt;br /&gt;
Two methods for visualizing vortices are taking iso-surfaces of either Q-criterion or the Omega-criterion (Liu 2016, &amp;quot;New omega vortex identification method&amp;quot;). To compute both, apply &amp;quot;Gradient of Unstructured Dataset&amp;quot; to the velocity field in ParaView, and name the result &amp;lt;code&amp;gt;g&amp;lt;/code&amp;gt;. Then enter one of the following expressions into a Calculator, and finally apply a Contour at the appropriate value:&lt;br /&gt;
; Q-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;-g_1*g_3-g_2*g_6-g_5*g_7+g_4*g_8+g_0*(g_4+g_8)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at whatever value shows the features you want; try 1e7 as a starting point, but Q has a huge range of magnitudes&lt;br /&gt;
; Omega-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;(g_1^2 + g_2^2 - 2*g_1*g_3 + g_3^2 + g_5^2 - 2*g_2*g_6 + g_6^2 - 2*g_5*g_7 + g_7^2) / (2 * (g_0^2 + g_1^2 + g_2^2 + g_3^2 + g_4^2 + g_5^2 + g_6^2 + g_7^2 + g_8^2 + 1e-14))&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at 0.52 as recommended in the Liu (2016) paper to start; Omega is always between 0 and 1&lt;br /&gt;
&lt;br /&gt;
A third useful metric for visualizing vortices is lambda_2 criterion. This process is outlined below.&lt;br /&gt;
&lt;br /&gt;
; Lambda_2-criterion&lt;br /&gt;
&lt;br /&gt;
===Step 1===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Paraview]]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1261</id>
		<title>ParaView/Tricks</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1261"/>
				<updated>2021-02-04T23:40:48Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* Visualizing Vortices */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of tips and tricks for ParaView, which may be useful for others.&lt;br /&gt;
&lt;br /&gt;
==Difference Between Two Timesteps==&lt;br /&gt;
To look at the &amp;quot;delta&amp;quot; between two timesteps, follow these steps.&lt;br /&gt;
# Load your data file twice, so your pipeline browser has two separate instances of &amp;quot;flow.pht&amp;quot; or whatever file you open.&lt;br /&gt;
# Apply one Force Time filter to each input file, and specify the physical time (not time index) for each. This will force the time for each and make them independent of the global ParaView time control in the upper toolbar.&lt;br /&gt;
# Select both Force Time filters simultaneously, and apply a Programmable Filter. Your pipeline browser will now show arrows representing multiple inputs to the single programmable filter.&lt;br /&gt;
# Populate the programmable filter with the following code:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;tmp = inputs[0].PointData['myAvailableFieldName'] - inputs[1].PointData['myAvailableFieldName']&amp;lt;br&amp;gt;output.PointData.append(tmp, 'delta of myAvailableFieldName')&amp;lt;/code&amp;gt;&lt;br /&gt;
# You can now view the field, &amp;quot;delta of myAvailableFieldName,&amp;quot; and change the time steps it uses to compute the time-delta by modifying the Force Time filter properties.&lt;br /&gt;
&lt;br /&gt;
Example script: relative change in eddy viscosity&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
s = 'EV'&lt;br /&gt;
a = inputs[0].PointData[s]&lt;br /&gt;
b = inputs[1].PointData[s]&lt;br /&gt;
tmp = (a - b) / b&lt;br /&gt;
output.PointData.append(tmp, 'delta')&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stepping Forward in Time==&lt;br /&gt;
Let's say you load your ParaView file (for PHASTA, *.pht or *.phts) as &amp;lt;code&amp;gt;phtFile&amp;lt;/code&amp;gt;. The times associated with each timestep referenced by the file are given by &amp;lt;code&amp;gt;phtFile.TimestepValues&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To step forward in time, set the time of the current view. For example, &amp;lt;code&amp;gt;GetActiveView().ViewTime = myTime&amp;lt;/code&amp;gt;. When you save an image, all visible sources will be rendered using data from that time (&amp;lt;code&amp;gt;myTime&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==Saving Data at a Given Time==&lt;br /&gt;
It turns out the data fields you access through Python are not updated simply by setting the active view's &amp;lt;code&amp;gt;ViewTime&amp;lt;/code&amp;gt; property. For example, if you're trying to extract data from a probe location or along a line, simply saving that pipeline object does not reflect the updated timestep. Instead, you need to call the &amp;lt;code&amp;gt;UpdatePipeline(time=myTime)&amp;lt;/code&amp;gt; method of your &amp;lt;code&amp;gt;ProbeLocation&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Slice&amp;lt;/code&amp;gt;, or other pipeline object. This method is inherited from &amp;lt;code&amp;gt;SourceProxy&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Visualizing Vortices==&lt;br /&gt;
Two methods for visualizing vortices are taking iso-surfaces of either Q-criterion or the Omega-criterion (Liu 2016, &amp;quot;New omega vortex identification method&amp;quot;). To compute both, apply &amp;quot;Gradient of Unstructured Dataset&amp;quot; to the velocity field in ParaView, and name the result &amp;lt;code&amp;gt;g&amp;lt;/code&amp;gt;. Then enter one of the following expressions into a Calculator, and finally apply a Contour at the appropriate value:&lt;br /&gt;
; Q-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;-g_1*g_3-g_2*g_6-g_5*g_7+g_4*g_8+g_0*(g_4+g_8)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at whatever value shows the features you want; try 1e7 as a starting point, but Q has a huge range of magnitudes&lt;br /&gt;
; Omega-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;(g_1^2 + g_2^2 - 2*g_1*g_3 + g_3^2 + g_5^2 - 2*g_2*g_6 + g_6^2 - 2*g_5*g_7 + g_7^2) / (2 * (g_0^2 + g_1^2 + g_2^2 + g_3^2 + g_4^2 + g_5^2 + g_6^2 + g_7^2 + g_8^2 + 1e-14))&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at 0.52 as recommended in the Liu (2016) paper to start; Omega is always between 0 and 1&lt;br /&gt;
&lt;br /&gt;
A third useful metric for visualizing vortices is lambda_2 criterion. This process is outlined below.&lt;br /&gt;
&lt;br /&gt;
; Lambda_2-criterion&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Paraview]]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1260</id>
		<title>ParaView/Tricks</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1260"/>
				<updated>2021-02-04T23:37:36Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* Visualizing Vortices */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of tips and tricks for ParaView, which may be useful for others.&lt;br /&gt;
&lt;br /&gt;
==Difference Between Two Timesteps==&lt;br /&gt;
To look at the &amp;quot;delta&amp;quot; between two timesteps, follow these steps.&lt;br /&gt;
# Load your data file twice, so your pipeline browser has two separate instances of &amp;quot;flow.pht&amp;quot; or whatever file you open.&lt;br /&gt;
# Apply one Force Time filter to each input file, and specify the physical time (not time index) for each. This will force the time for each and make them independent of the global ParaView time control in the upper toolbar.&lt;br /&gt;
# Select both Force Time filters simultaneously, and apply a Programmable Filter. Your pipeline browser will now show arrows representing multiple inputs to the single programmable filter.&lt;br /&gt;
# Populate the programmable filter with the following code:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;tmp = inputs[0].PointData['myAvailableFieldName'] - inputs[1].PointData['myAvailableFieldName']&amp;lt;br&amp;gt;output.PointData.append(tmp, 'delta of myAvailableFieldName')&amp;lt;/code&amp;gt;&lt;br /&gt;
# You can now view the field, &amp;quot;delta of myAvailableFieldName,&amp;quot; and change the time steps it uses to compute the time-delta by modifying the Force Time filter properties.&lt;br /&gt;
&lt;br /&gt;
Example script: relative change in eddy viscosity&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
s = 'EV'&lt;br /&gt;
a = inputs[0].PointData[s]&lt;br /&gt;
b = inputs[1].PointData[s]&lt;br /&gt;
tmp = (a - b) / b&lt;br /&gt;
output.PointData.append(tmp, 'delta')&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stepping Forward in Time==&lt;br /&gt;
Let's say you load your ParaView file (for PHASTA, *.pht or *.phts) as &amp;lt;code&amp;gt;phtFile&amp;lt;/code&amp;gt;. The times associated with each timestep referenced by the file are given by &amp;lt;code&amp;gt;phtFile.TimestepValues&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To step forward in time, set the time of the current view. For example, &amp;lt;code&amp;gt;GetActiveView().ViewTime = myTime&amp;lt;/code&amp;gt;. When you save an image, all visible sources will be rendered using data from that time (&amp;lt;code&amp;gt;myTime&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==Saving Data at a Given Time==&lt;br /&gt;
It turns out the data fields you access through Python are not updated simply by setting the active view's &amp;lt;code&amp;gt;ViewTime&amp;lt;/code&amp;gt; property. For example, if you're trying to extract data from a probe location or along a line, simply saving that pipeline object does not reflect the updated timestep. Instead, you need to call the &amp;lt;code&amp;gt;UpdatePipeline(time=myTime)&amp;lt;/code&amp;gt; method of your &amp;lt;code&amp;gt;ProbeLocation&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Slice&amp;lt;/code&amp;gt;, or other pipeline object. This method is inherited from &amp;lt;code&amp;gt;SourceProxy&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Visualizing Vortices==&lt;br /&gt;
Two methods for visualizing vortices are taking iso-surfaces of either Q-criterion or the Omega-criterion (Liu 2016, &amp;quot;New omega vortex identification method&amp;quot;). To compute both, apply &amp;quot;Gradient of Unstructured Dataset&amp;quot; to the velocity field in ParaView, and name the result &amp;lt;code&amp;gt;g&amp;lt;/code&amp;gt;. Then enter one of the following expressions into a Calculator, and finally apply a Contour at the appropriate value:&lt;br /&gt;
; Q-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;-g_1*g_3-g_2*g_6-g_5*g_7+g_4*g_8+g_0*(g_4+g_8)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at whatever value shows the features you want; try 1e7 as a starting point, but Q has a huge range of magnitudes&lt;br /&gt;
; Omega-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;(g_1^2 + g_2^2 - 2*g_1*g_3 + g_3^2 + g_5^2 - 2*g_2*g_6 + g_6^2 - 2*g_5*g_7 + g_7^2) / (2 * (g_0^2 + g_1^2 + g_2^2 + g_3^2 + g_4^2 + g_5^2 + g_6^2 + g_7^2 + g_8^2 + 1e-14))&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at 0.52 as recommended in the Liu (2016) paper to start; Omega is always between 0 and 1&lt;br /&gt;
&lt;br /&gt;
A third useful metric for visualizing vortices is lambda_2 criterion.&lt;br /&gt;
&lt;br /&gt;
; Lambda_2-criterion&lt;br /&gt;
&lt;br /&gt;
[[Category:Paraview]]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1259</id>
		<title>ParaView/Tricks</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=ParaView/Tricks&amp;diff=1259"/>
				<updated>2021-02-04T23:35:03Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* Visualizing Vortices */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains a list of tips and tricks for ParaView, which may be useful for others.&lt;br /&gt;
&lt;br /&gt;
==Difference Between Two Timesteps==&lt;br /&gt;
To look at the &amp;quot;delta&amp;quot; between two timesteps, follow these steps.&lt;br /&gt;
# Load your data file twice, so your pipeline browser has two separate instances of &amp;quot;flow.pht&amp;quot; or whatever file you open.&lt;br /&gt;
# Apply one Force Time filter to each input file, and specify the physical time (not time index) for each. This will force the time for each and make them independent of the global ParaView time control in the upper toolbar.&lt;br /&gt;
# Select both Force Time filters simultaneously, and apply a Programmable Filter. Your pipeline browser will now show arrows representing multiple inputs to the single programmable filter.&lt;br /&gt;
# Populate the programmable filter with the following code:&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;tmp = inputs[0].PointData['myAvailableFieldName'] - inputs[1].PointData['myAvailableFieldName']&amp;lt;br&amp;gt;output.PointData.append(tmp, 'delta of myAvailableFieldName')&amp;lt;/code&amp;gt;&lt;br /&gt;
# You can now view the field, &amp;quot;delta of myAvailableFieldName,&amp;quot; and change the time steps it uses to compute the time-delta by modifying the Force Time filter properties.&lt;br /&gt;
&lt;br /&gt;
Example script: relative change in eddy viscosity&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
s = 'EV'&lt;br /&gt;
a = inputs[0].PointData[s]&lt;br /&gt;
b = inputs[1].PointData[s]&lt;br /&gt;
tmp = (a - b) / b&lt;br /&gt;
output.PointData.append(tmp, 'delta')&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stepping Forward in Time==&lt;br /&gt;
Let's say you load your ParaView file (for PHASTA, *.pht or *.phts) as &amp;lt;code&amp;gt;phtFile&amp;lt;/code&amp;gt;. The times associated with each timestep referenced by the file are given by &amp;lt;code&amp;gt;phtFile.TimestepValues&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To step forward in time, set the time of the current view. For example, &amp;lt;code&amp;gt;GetActiveView().ViewTime = myTime&amp;lt;/code&amp;gt;. When you save an image, all visible sources will be rendered using data from that time (&amp;lt;code&amp;gt;myTime&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==Saving Data at a Given Time==&lt;br /&gt;
It turns out the data fields you access through Python are not updated simply by setting the active view's &amp;lt;code&amp;gt;ViewTime&amp;lt;/code&amp;gt; property. For example, if you're trying to extract data from a probe location or along a line, simply saving that pipeline object does not reflect the updated timestep. Instead, you need to call the &amp;lt;code&amp;gt;UpdatePipeline(time=myTime)&amp;lt;/code&amp;gt; method of your &amp;lt;code&amp;gt;ProbeLocation&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Slice&amp;lt;/code&amp;gt;, or other pipeline object. This method is inherited from &amp;lt;code&amp;gt;SourceProxy&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Visualizing Vortices==&lt;br /&gt;
Two methods for visualizing vortices are taking iso-surfaces of either Q-criterion or the Omega-criterion (Liu 2016, &amp;quot;New omega vortex identification method&amp;quot;). To compute both, apply &amp;quot;Gradient of Unstructured Dataset&amp;quot; to the velocity field in ParaView, and name the result &amp;lt;code&amp;gt;g&amp;lt;/code&amp;gt;. Then enter one of the following expressions into a Calculator, and finally apply a Contour at the appropriate value:&lt;br /&gt;
; Q-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;-g_1*g_3-g_2*g_6-g_5*g_7+g_4*g_8+g_0*(g_4+g_8)&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at whatever value shows the features you want; try 1e7 as a starting point, but Q has a huge range of magnitudes&lt;br /&gt;
; Omega-criterion&lt;br /&gt;
: &amp;lt;code&amp;gt;(g_1^2 + g_2^2 - 2*g_1*g_3 + g_3^2 + g_5^2 - 2*g_2*g_6 + g_6^2 - 2*g_5*g_7 + g_7^2) / (2 * (g_0^2 + g_1^2 + g_2^2 + g_3^2 + g_4^2 + g_5^2 + g_6^2 + g_7^2 + g_8^2 + 1e-14))&amp;lt;/code&amp;gt;&lt;br /&gt;
: Contour at 0.52 as recommended in the Liu (2016) paper to start; Omega is always between 0 and 1&lt;br /&gt;
&lt;br /&gt;
A third useful metric for&lt;br /&gt;
[[Category:Paraview]]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=Chef/Building&amp;diff=1219</id>
		<title>Chef/Building</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=Chef/Building&amp;diff=1219"/>
				<updated>2020-10-24T19:50:47Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* General Instruction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This goes over how to compile Chef and some system specific instructions for doing so.&lt;br /&gt;
&lt;br /&gt;
== General Instruction ==&lt;br /&gt;
&lt;br /&gt;
For students looking to see what compiled successfully on the viz nodes, please go to &amp;lt;code&amp;gt;/users/mabl7046/Group_Dir&amp;lt;/code&amp;gt;. The workflow is exactly the same as what is outlined below, however, the scripts were of course altered to set the environment properly for the viz nodes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that &amp;lt;code&amp;gt;.smdmodels&amp;lt;/code&amp;gt; made with a new version of &amp;lt;code&amp;gt;simModeler&amp;lt;/code&amp;gt; will likely only work with chef compiled with a recent version of &amp;lt;code&amp;gt;simModSuite&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Common Errors ===&lt;br /&gt;
The following error is very common when Compiling Chef: &amp;lt;code&amp;gt; CMake Error at cmake/FindSimModSuite.cmake:93 (MESSAGE):&lt;br /&gt;
invalid Simmetrix version: 15.0.201010, valid versions are 12.0.190225 to 15.0.200714&amp;lt;/code&amp;gt;. When this is encountered, the SCORE/core source code must be changed. From the build directory vim the file &amp;lt;code&amp;gt;FindSimModSuite.cmake&amp;lt;/code&amp;gt;. This is in the directory &amp;lt;code&amp;gt;/core/cmake&amp;lt;/code&amp;gt;. Scroll down to line 87 and edit &amp;lt;code&amp;gt;set(MAX_VALID_SIM_VERSION 15.0.200714)&amp;lt;/code&amp;gt; to a Simmetrix version within the range of the version you are using to compile.&lt;br /&gt;
&lt;br /&gt;
== System Specific ==&lt;br /&gt;
&lt;br /&gt;
=== Summit (RMACC) ===&lt;br /&gt;
&lt;br /&gt;
====Copy Simmetrix Libraries from Viz Nodes====&lt;br /&gt;
&lt;br /&gt;
Note that in order for Chef to operate, it must be compiled with the proper Simmetrix libraries. That is to say, there needs to be compatibility between Simmetrix and SCOREC-core for compilation of Chef to run smoothly. Please see [[Building_SCOREC_Core|Building SCOREC Core]] for instructions on cloning the source code. An example (what worked for me) is provided throughout the wiki. From the viz nodes (&amp;lt;code&amp;gt;/projects/tools/SimmetrixTest&amp;lt;/code&amp;gt;), I ran&lt;br /&gt;
&lt;br /&gt;
 scp -r 14.0-190626beta/ &amp;lt;username&amp;gt;@login.rc.colorado.edu:&amp;lt;path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to copy over the directory &amp;lt;code&amp;gt;14.0-190626beta/&amp;lt;/code&amp;gt; to Summit.&lt;br /&gt;
&lt;br /&gt;
====Set Proper Environment====&lt;br /&gt;
&lt;br /&gt;
To start with a clean slate, run &lt;br /&gt;
&lt;br /&gt;
 module purge&lt;br /&gt;
&lt;br /&gt;
This unloads all currently loaded modules.&lt;br /&gt;
&lt;br /&gt;
Next, run&lt;br /&gt;
&lt;br /&gt;
 module load gcc/6.1.0&lt;br /&gt;
 module load openmpi/2.0.1&lt;br /&gt;
&lt;br /&gt;
Note that /6.1.0 and /2.0.1 can be swapped with the intended versions of GCC and OpenMPI the user intends on using.&lt;br /&gt;
&lt;br /&gt;
====Generate Partition Wrapper====&lt;br /&gt;
&lt;br /&gt;
After the directory is copied over to Summit and the environment is set, a Partition Wrapper needs to be generated. Go to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;path&amp;gt;/14.0-190626beta/code/PartitionWrapper&lt;br /&gt;
&lt;br /&gt;
and open the file &lt;br /&gt;
&lt;br /&gt;
 Makefile.custom&lt;br /&gt;
&lt;br /&gt;
Obviously, &amp;lt;code&amp;gt;14.0-190626beta/&amp;lt;/code&amp;gt; is a placeholder and any version of Simmetrix (i.e. the version you used to create the mesh) will work. In this example, I used OpenMPI . I also used &amp;lt;code&amp;gt;mpicc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;mpicxx&amp;lt;/code&amp;gt; as MPI-C and MPI-C++ compilers respectively. If this is what is intended, in the &amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt;, set the following variables:&lt;br /&gt;
&lt;br /&gt;
 PQUAL:= -openmpi&lt;br /&gt;
 CC:=/curc/sw/openmpi/2.0.1/gcc/6.1.0/bin/mpicc &lt;br /&gt;
 CXX:= /curc/sw/openmpi/2.0.1/gcc/6.1.0/bin/mpicxx&lt;br /&gt;
&lt;br /&gt;
Notice the compatibility between the loaded modules and the directory structure above. Once this is set, in the terminal run&lt;br /&gt;
&lt;br /&gt;
 make -f Makefile.custom PARALLEL=openmpi&lt;br /&gt;
&lt;br /&gt;
This will generate a file named &amp;lt;code&amp;gt;libSimPartitionWrapper-openmpi.a&amp;lt;/code&amp;gt;. Then, run&lt;br /&gt;
&lt;br /&gt;
 chmod +x libSimPartitionWrapper-openmpi.a.&lt;br /&gt;
&lt;br /&gt;
Once this is completed, copy this newly generated partition wrapper to &amp;lt;code&amp;gt;../../lib/x64_rhel7_gcc48/&amp;lt;/code&amp;gt;. Unfortunately, the instructions from this point forward will be less explicit as the best way to learn the process is to view example scripts and adapt these to fit your needs. From this point forward, it is assumed that a directory named &amp;lt;code&amp;gt;SCOREC-core&amp;lt;/code&amp;gt; was created and the source code from GitHub was properly cloned in this directory. &lt;br /&gt;
&lt;br /&gt;
====Generating the Scripts to Compile Chef====&lt;br /&gt;
&lt;br /&gt;
In order to run Chef, two scripts must be generated. The naming conventions of the scripts are typically &amp;lt;code&amp;gt;doConfigure.sh&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;env_simmtrix_version&amp;lt;/code&amp;gt;. Below, an example &amp;lt;code&amp;gt;doConfigure.sh&amp;lt;/code&amp;gt; script is shown. This script primarily executes the necessary CMake commands for compilation. It also runs the &amp;lt;code&amp;gt;env_simmtrix_version&amp;lt;/code&amp;gt; script. In the example below, it calls &amp;lt;code&amp;gt;env_14.0-190626&amp;lt;/code&amp;gt;. Note that both of these scripts are located in &amp;lt;code&amp;gt;/projects/mabl7046/SCOREC-core/build_14.0-190626&amp;lt;/code&amp;gt;, or the directory where Chef is to be compiled. Note that the line &amp;lt;code&amp;gt;-DMESHES=&amp;quot;/projects/mabl7046/pumi-meshes&amp;quot;&amp;lt;/code&amp;gt; was copied from a script that implemented successfully on another machine. I recommend looking at scripts on the Viz nodes that worked for the version of Chef you are compiling and copying over the directory analogous to pumi-meshes to summit to implement your script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;doConfigure.sh&amp;lt;/code&amp;gt;:&lt;br /&gt;
 #!/bin/bash -l&lt;br /&gt;
 . /projects/mabl7046/SCOREC-core/build_14.0-190626/env_14.0-190626&lt;br /&gt;
 #unload default modules&lt;br /&gt;
 module purge&lt;br /&gt;
 #load what we need&lt;br /&gt;
 module load gcc/6.1.0&lt;br /&gt;
 module load openmpi/2.0.1&lt;br /&gt;
 module load cmake/3.14.1&lt;br /&gt;
 ### For Chef&lt;br /&gt;
 cmake -DCMAKE_C_COMPILER=mpicc \&lt;br /&gt;
 -DCMAKE_CXX_COMPILER=mpicxx \&lt;br /&gt;
 -DSCOREC_CXX_WARNINGS=ON \&lt;br /&gt;
 -DSCOREC_CXX_OPTIMIZE=ON \&lt;br /&gt;
 -DSCOREC_CXX_SYMBOLS=ON \&lt;br /&gt;
 -DPCU_COMPRESS=ON \&lt;br /&gt;
 -DENABLE_ZOLTAN=ON \&lt;br /&gt;
 -DENABLE_SIMMETRIX=ON \&lt;br /&gt;
 -DSIM_MPI=&amp;quot;openmpi&amp;quot; \&lt;br /&gt;
 -DSIM_PARASOLID=ON \&lt;br /&gt;
 -DMDS_SET_MAX=1024 \&lt;br /&gt;
 -DMDS_ID_TYPE=long \&lt;br /&gt;
 -DIS_TESTING=OFF \&lt;br /&gt;
 -DMESHES=&amp;quot;/projects/mabl7046/pumi-meshes&amp;quot; \&lt;br /&gt;
 -DCMAKE_INSTALL_PREFIX=$PWD/install \&lt;br /&gt;
 ../core&lt;br /&gt;
 #-DMDS_ID_TYPE=int or long&lt;br /&gt;
 sleep 3&lt;br /&gt;
 make -j32&lt;br /&gt;
 make -j32&lt;br /&gt;
&lt;br /&gt;
Below, the script &amp;lt;code&amp;gt;env_14.0-190626&amp;lt;/code&amp;gt; is given. As stated in the comments, this is to set the environment for &amp;lt;code&amp;gt;CMake.SCOREC&amp;lt;/code&amp;gt;. In order to make this script work, the &amp;lt;code&amp;gt;SIM_LICENSE_FILE&amp;lt;/code&amp;gt; (denoted UCBoulder below) needed to be obtained. The libraries for &amp;lt;code&amp;gt;Zoltan&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;parmetis&amp;lt;/code&amp;gt; also needed to be collected. The &amp;lt;code&amp;gt;SIM_LICENSE_FILE&amp;lt;/code&amp;gt; was copied over from Cooley although, I am sure that this can be obtained from the Viz nodes as well. To obtain the libraries for &amp;lt;code&amp;gt;Zoltan&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;parmetis&amp;lt;/code&amp;gt; on Summit, run:&lt;br /&gt;
&lt;br /&gt;
 cp -r /projects/ASEN5119/SCOREC-core/deps/zoltan .&lt;br /&gt;
 cp -r /projects/ASEN5119/SCOREC-core/deps/parmetis .&lt;br /&gt;
&lt;br /&gt;
from the directory where you wish these to be. All this does is move these from a directory Ken created for his Boundary Layers course to a directory that is more convenient for personal use. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;env_14.0-190626&amp;lt;/code&amp;gt;:&lt;br /&gt;
 ### For CMake.SCOREC&lt;br /&gt;
 export buildRoot=/projects/mabl7046/SCOREC-core/&lt;br /&gt;
 export simModVer=$buildRoot/deps/Simmetrix/14.0-190626beta/&lt;br /&gt;
 export SIM_LICENSE_FILE=$buildRoot/deps/Simmetrix/UCBoulder&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$simModVer&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$simModVer/lib/x64_rhel7_gcc48&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$simModVer/lib/x64_rhel7_gcc48/psKrnl&lt;br /&gt;
 #MIGHT NEED THIS export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:/projects/tools/Simmetrix.develop/simModSuite/PartitionWrapper/lib&lt;br /&gt;
 ### For Zoltan and parmetis&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$buildRoot/deps/zoltan/3.83-gnu49-ompi210/&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$buildRoot/deps/parmetis/4.0.3-gnu492-ompi210&lt;br /&gt;
 # the following is to give the path to PartitionWrappers that have not been installed in the Simmetrix library&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$simModVer/code/PartitionWrapper/lib&lt;br /&gt;
&lt;br /&gt;
====Final Notes====&lt;br /&gt;
Once the scripts are set up, simply run &amp;lt;code&amp;gt;./doConfigure.sh&amp;lt;/code&amp;gt; to compile the code. Please be patient with the process as it is highly unlikely that it will compile successfully the first time you try. Be sure to pay close attention to your directory structure when setting your scripts up and be cognizant of the dependencies between programs.&lt;br /&gt;
&lt;br /&gt;
[[Category: Chef]]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=Chef/Building&amp;diff=1218</id>
		<title>Chef/Building</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=Chef/Building&amp;diff=1218"/>
				<updated>2020-10-24T19:49:19Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* General Instruction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This goes over how to compile Chef and some system specific instructions for doing so.&lt;br /&gt;
&lt;br /&gt;
== General Instruction ==&lt;br /&gt;
&lt;br /&gt;
For students looking to see what compiled successfully on the viz nodes, please go to &amp;lt;code&amp;gt;/users/mabl7046/Group_Dir&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that &amp;lt;code&amp;gt;.smdmodels&amp;lt;/code&amp;gt; made with a new version of &amp;lt;code&amp;gt;simModeler&amp;lt;/code&amp;gt; will likely only work with chef compiled with a recent version of &amp;lt;code&amp;gt;simModSuite&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Common Errors ===&lt;br /&gt;
The following error is very common when Compiling Chef: &amp;lt;code&amp;gt; CMake Error at cmake/FindSimModSuite.cmake:93 (MESSAGE):&lt;br /&gt;
invalid Simmetrix version: 15.0.201010, valid versions are 12.0.190225 to 15.0.200714&amp;lt;/code&amp;gt;. When this is encountered, the SCORE/core source code must be changed. From the build directory vim the file &amp;lt;code&amp;gt;FindSimModSuite.cmake&amp;lt;/code&amp;gt;. This is in the directory &amp;lt;code&amp;gt;/core/cmake&amp;lt;/code&amp;gt;. Scroll down to line 87 and edit &amp;lt;code&amp;gt;set(MAX_VALID_SIM_VERSION 15.0.200714)&amp;lt;/code&amp;gt; to a Simmetrix version within the range of the version you are using to compile.&lt;br /&gt;
&lt;br /&gt;
== System Specific ==&lt;br /&gt;
&lt;br /&gt;
=== Summit (RMACC) ===&lt;br /&gt;
&lt;br /&gt;
====Copy Simmetrix Libraries from Viz Nodes====&lt;br /&gt;
&lt;br /&gt;
Note that in order for Chef to operate, it must be compiled with the proper Simmetrix libraries. That is to say, there needs to be compatibility between Simmetrix and SCOREC-core for compilation of Chef to run smoothly. Please see [[Building_SCOREC_Core|Building SCOREC Core]] for instructions on cloning the source code. An example (what worked for me) is provided throughout the wiki. From the viz nodes (&amp;lt;code&amp;gt;/projects/tools/SimmetrixTest&amp;lt;/code&amp;gt;), I ran&lt;br /&gt;
&lt;br /&gt;
 scp -r 14.0-190626beta/ &amp;lt;username&amp;gt;@login.rc.colorado.edu:&amp;lt;path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to copy over the directory &amp;lt;code&amp;gt;14.0-190626beta/&amp;lt;/code&amp;gt; to Summit.&lt;br /&gt;
&lt;br /&gt;
====Set Proper Environment====&lt;br /&gt;
&lt;br /&gt;
To start with a clean slate, run &lt;br /&gt;
&lt;br /&gt;
 module purge&lt;br /&gt;
&lt;br /&gt;
This unloads all currently loaded modules.&lt;br /&gt;
&lt;br /&gt;
Next, run&lt;br /&gt;
&lt;br /&gt;
 module load gcc/6.1.0&lt;br /&gt;
 module load openmpi/2.0.1&lt;br /&gt;
&lt;br /&gt;
Note that /6.1.0 and /2.0.1 can be swapped with the intended versions of GCC and OpenMPI the user intends on using.&lt;br /&gt;
&lt;br /&gt;
====Generate Partition Wrapper====&lt;br /&gt;
&lt;br /&gt;
After the directory is copied over to Summit and the environment is set, a Partition Wrapper needs to be generated. Go to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;path&amp;gt;/14.0-190626beta/code/PartitionWrapper&lt;br /&gt;
&lt;br /&gt;
and open the file &lt;br /&gt;
&lt;br /&gt;
 Makefile.custom&lt;br /&gt;
&lt;br /&gt;
Obviously, &amp;lt;code&amp;gt;14.0-190626beta/&amp;lt;/code&amp;gt; is a placeholder and any version of Simmetrix (i.e. the version you used to create the mesh) will work. In this example, I used OpenMPI . I also used &amp;lt;code&amp;gt;mpicc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;mpicxx&amp;lt;/code&amp;gt; as MPI-C and MPI-C++ compilers respectively. If this is what is intended, in the &amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt;, set the following variables:&lt;br /&gt;
&lt;br /&gt;
 PQUAL:= -openmpi&lt;br /&gt;
 CC:=/curc/sw/openmpi/2.0.1/gcc/6.1.0/bin/mpicc &lt;br /&gt;
 CXX:= /curc/sw/openmpi/2.0.1/gcc/6.1.0/bin/mpicxx&lt;br /&gt;
&lt;br /&gt;
Notice the compatibility between the loaded modules and the directory structure above. Once this is set, in the terminal run&lt;br /&gt;
&lt;br /&gt;
 make -f Makefile.custom PARALLEL=openmpi&lt;br /&gt;
&lt;br /&gt;
This will generate a file named &amp;lt;code&amp;gt;libSimPartitionWrapper-openmpi.a&amp;lt;/code&amp;gt;. Then, run&lt;br /&gt;
&lt;br /&gt;
 chmod +x libSimPartitionWrapper-openmpi.a.&lt;br /&gt;
&lt;br /&gt;
Once this is completed, copy this newly generated partition wrapper to &amp;lt;code&amp;gt;../../lib/x64_rhel7_gcc48/&amp;lt;/code&amp;gt;. Unfortunately, the instructions from this point forward will be less explicit as the best way to learn the process is to view example scripts and adapt these to fit your needs. From this point forward, it is assumed that a directory named &amp;lt;code&amp;gt;SCOREC-core&amp;lt;/code&amp;gt; was created and the source code from GitHub was properly cloned in this directory. &lt;br /&gt;
&lt;br /&gt;
====Generating the Scripts to Compile Chef====&lt;br /&gt;
&lt;br /&gt;
In order to run Chef, two scripts must be generated. The naming conventions of the scripts are typically &amp;lt;code&amp;gt;doConfigure.sh&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;env_simmtrix_version&amp;lt;/code&amp;gt;. Below, an example &amp;lt;code&amp;gt;doConfigure.sh&amp;lt;/code&amp;gt; script is shown. This script primarily executes the necessary CMake commands for compilation. It also runs the &amp;lt;code&amp;gt;env_simmtrix_version&amp;lt;/code&amp;gt; script. In the example below, it calls &amp;lt;code&amp;gt;env_14.0-190626&amp;lt;/code&amp;gt;. Note that both of these scripts are located in &amp;lt;code&amp;gt;/projects/mabl7046/SCOREC-core/build_14.0-190626&amp;lt;/code&amp;gt;, or the directory where Chef is to be compiled. Note that the line &amp;lt;code&amp;gt;-DMESHES=&amp;quot;/projects/mabl7046/pumi-meshes&amp;quot;&amp;lt;/code&amp;gt; was copied from a script that implemented successfully on another machine. I recommend looking at scripts on the Viz nodes that worked for the version of Chef you are compiling and copying over the directory analogous to pumi-meshes to summit to implement your script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;doConfigure.sh&amp;lt;/code&amp;gt;:&lt;br /&gt;
 #!/bin/bash -l&lt;br /&gt;
 . /projects/mabl7046/SCOREC-core/build_14.0-190626/env_14.0-190626&lt;br /&gt;
 #unload default modules&lt;br /&gt;
 module purge&lt;br /&gt;
 #load what we need&lt;br /&gt;
 module load gcc/6.1.0&lt;br /&gt;
 module load openmpi/2.0.1&lt;br /&gt;
 module load cmake/3.14.1&lt;br /&gt;
 ### For Chef&lt;br /&gt;
 cmake -DCMAKE_C_COMPILER=mpicc \&lt;br /&gt;
 -DCMAKE_CXX_COMPILER=mpicxx \&lt;br /&gt;
 -DSCOREC_CXX_WARNINGS=ON \&lt;br /&gt;
 -DSCOREC_CXX_OPTIMIZE=ON \&lt;br /&gt;
 -DSCOREC_CXX_SYMBOLS=ON \&lt;br /&gt;
 -DPCU_COMPRESS=ON \&lt;br /&gt;
 -DENABLE_ZOLTAN=ON \&lt;br /&gt;
 -DENABLE_SIMMETRIX=ON \&lt;br /&gt;
 -DSIM_MPI=&amp;quot;openmpi&amp;quot; \&lt;br /&gt;
 -DSIM_PARASOLID=ON \&lt;br /&gt;
 -DMDS_SET_MAX=1024 \&lt;br /&gt;
 -DMDS_ID_TYPE=long \&lt;br /&gt;
 -DIS_TESTING=OFF \&lt;br /&gt;
 -DMESHES=&amp;quot;/projects/mabl7046/pumi-meshes&amp;quot; \&lt;br /&gt;
 -DCMAKE_INSTALL_PREFIX=$PWD/install \&lt;br /&gt;
 ../core&lt;br /&gt;
 #-DMDS_ID_TYPE=int or long&lt;br /&gt;
 sleep 3&lt;br /&gt;
 make -j32&lt;br /&gt;
 make -j32&lt;br /&gt;
&lt;br /&gt;
Below, the script &amp;lt;code&amp;gt;env_14.0-190626&amp;lt;/code&amp;gt; is given. As stated in the comments, this is to set the environment for &amp;lt;code&amp;gt;CMake.SCOREC&amp;lt;/code&amp;gt;. In order to make this script work, the &amp;lt;code&amp;gt;SIM_LICENSE_FILE&amp;lt;/code&amp;gt; (denoted UCBoulder below) needed to be obtained. The libraries for &amp;lt;code&amp;gt;Zoltan&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;parmetis&amp;lt;/code&amp;gt; also needed to be collected. The &amp;lt;code&amp;gt;SIM_LICENSE_FILE&amp;lt;/code&amp;gt; was copied over from Cooley although, I am sure that this can be obtained from the Viz nodes as well. To obtain the libraries for &amp;lt;code&amp;gt;Zoltan&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;parmetis&amp;lt;/code&amp;gt; on Summit, run:&lt;br /&gt;
&lt;br /&gt;
 cp -r /projects/ASEN5119/SCOREC-core/deps/zoltan .&lt;br /&gt;
 cp -r /projects/ASEN5119/SCOREC-core/deps/parmetis .&lt;br /&gt;
&lt;br /&gt;
from the directory where you wish these to be. All this does is move these from a directory Ken created for his Boundary Layers course to a directory that is more convenient for personal use. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;env_14.0-190626&amp;lt;/code&amp;gt;:&lt;br /&gt;
 ### For CMake.SCOREC&lt;br /&gt;
 export buildRoot=/projects/mabl7046/SCOREC-core/&lt;br /&gt;
 export simModVer=$buildRoot/deps/Simmetrix/14.0-190626beta/&lt;br /&gt;
 export SIM_LICENSE_FILE=$buildRoot/deps/Simmetrix/UCBoulder&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$simModVer&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$simModVer/lib/x64_rhel7_gcc48&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$simModVer/lib/x64_rhel7_gcc48/psKrnl&lt;br /&gt;
 #MIGHT NEED THIS export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:/projects/tools/Simmetrix.develop/simModSuite/PartitionWrapper/lib&lt;br /&gt;
 ### For Zoltan and parmetis&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$buildRoot/deps/zoltan/3.83-gnu49-ompi210/&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$buildRoot/deps/parmetis/4.0.3-gnu492-ompi210&lt;br /&gt;
 # the following is to give the path to PartitionWrappers that have not been installed in the Simmetrix library&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$simModVer/code/PartitionWrapper/lib&lt;br /&gt;
&lt;br /&gt;
====Final Notes====&lt;br /&gt;
Once the scripts are set up, simply run &amp;lt;code&amp;gt;./doConfigure.sh&amp;lt;/code&amp;gt; to compile the code. Please be patient with the process as it is highly unlikely that it will compile successfully the first time you try. Be sure to pay close attention to your directory structure when setting your scripts up and be cognizant of the dependencies between programs.&lt;br /&gt;
&lt;br /&gt;
[[Category: Chef]]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=Chef/Building&amp;diff=1217</id>
		<title>Chef/Building</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=Chef/Building&amp;diff=1217"/>
				<updated>2020-10-24T19:48:48Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* General Instruction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This goes over how to compile Chef and some system specific instructions for doing so.&lt;br /&gt;
&lt;br /&gt;
== General Instruction ==&lt;br /&gt;
&lt;br /&gt;
For students looking to see what compiled successfully on the viz nodes, please go to &amp;lt;code&amp;gt;/users/mabl7046/Group_Dir&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;.smdmodels&amp;lt;/code&amp;gt; made with a new version of &amp;lt;code&amp;gt;simModeler&amp;lt;/code&amp;gt; will likely only work with chef compiled with a recent version of &amp;lt;code&amp;gt;simModSuite&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Common Errors ===&lt;br /&gt;
The following error is very common when Compiling Chef: &amp;lt;code&amp;gt; CMake Error at cmake/FindSimModSuite.cmake:93 (MESSAGE):&lt;br /&gt;
invalid Simmetrix version: 15.0.201010, valid versions are 12.0.190225 to 15.0.200714&amp;lt;/code&amp;gt;. When this is encountered, the SCORE/core source code must be changed. From the build directory vim the file &amp;lt;code&amp;gt;FindSimModSuite.cmake&amp;lt;/code&amp;gt;. This is in the directory &amp;lt;code&amp;gt;/core/cmake&amp;lt;/code&amp;gt;. Scroll down to line 87 and edit &amp;lt;code&amp;gt;set(MAX_VALID_SIM_VERSION 15.0.200714)&amp;lt;/code&amp;gt; to a Simmetrix version within the range of the version you are using to compile.&lt;br /&gt;
&lt;br /&gt;
== System Specific ==&lt;br /&gt;
&lt;br /&gt;
=== Summit (RMACC) ===&lt;br /&gt;
&lt;br /&gt;
====Copy Simmetrix Libraries from Viz Nodes====&lt;br /&gt;
&lt;br /&gt;
Note that in order for Chef to operate, it must be compiled with the proper Simmetrix libraries. That is to say, there needs to be compatibility between Simmetrix and SCOREC-core for compilation of Chef to run smoothly. Please see [[Building_SCOREC_Core|Building SCOREC Core]] for instructions on cloning the source code. An example (what worked for me) is provided throughout the wiki. From the viz nodes (&amp;lt;code&amp;gt;/projects/tools/SimmetrixTest&amp;lt;/code&amp;gt;), I ran&lt;br /&gt;
&lt;br /&gt;
 scp -r 14.0-190626beta/ &amp;lt;username&amp;gt;@login.rc.colorado.edu:&amp;lt;path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to copy over the directory &amp;lt;code&amp;gt;14.0-190626beta/&amp;lt;/code&amp;gt; to Summit.&lt;br /&gt;
&lt;br /&gt;
====Set Proper Environment====&lt;br /&gt;
&lt;br /&gt;
To start with a clean slate, run &lt;br /&gt;
&lt;br /&gt;
 module purge&lt;br /&gt;
&lt;br /&gt;
This unloads all currently loaded modules.&lt;br /&gt;
&lt;br /&gt;
Next, run&lt;br /&gt;
&lt;br /&gt;
 module load gcc/6.1.0&lt;br /&gt;
 module load openmpi/2.0.1&lt;br /&gt;
&lt;br /&gt;
Note that /6.1.0 and /2.0.1 can be swapped with the intended versions of GCC and OpenMPI the user intends on using.&lt;br /&gt;
&lt;br /&gt;
====Generate Partition Wrapper====&lt;br /&gt;
&lt;br /&gt;
After the directory is copied over to Summit and the environment is set, a Partition Wrapper needs to be generated. Go to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;path&amp;gt;/14.0-190626beta/code/PartitionWrapper&lt;br /&gt;
&lt;br /&gt;
and open the file &lt;br /&gt;
&lt;br /&gt;
 Makefile.custom&lt;br /&gt;
&lt;br /&gt;
Obviously, &amp;lt;code&amp;gt;14.0-190626beta/&amp;lt;/code&amp;gt; is a placeholder and any version of Simmetrix (i.e. the version you used to create the mesh) will work. In this example, I used OpenMPI . I also used &amp;lt;code&amp;gt;mpicc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;mpicxx&amp;lt;/code&amp;gt; as MPI-C and MPI-C++ compilers respectively. If this is what is intended, in the &amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt;, set the following variables:&lt;br /&gt;
&lt;br /&gt;
 PQUAL:= -openmpi&lt;br /&gt;
 CC:=/curc/sw/openmpi/2.0.1/gcc/6.1.0/bin/mpicc &lt;br /&gt;
 CXX:= /curc/sw/openmpi/2.0.1/gcc/6.1.0/bin/mpicxx&lt;br /&gt;
&lt;br /&gt;
Notice the compatibility between the loaded modules and the directory structure above. Once this is set, in the terminal run&lt;br /&gt;
&lt;br /&gt;
 make -f Makefile.custom PARALLEL=openmpi&lt;br /&gt;
&lt;br /&gt;
This will generate a file named &amp;lt;code&amp;gt;libSimPartitionWrapper-openmpi.a&amp;lt;/code&amp;gt;. Then, run&lt;br /&gt;
&lt;br /&gt;
 chmod +x libSimPartitionWrapper-openmpi.a.&lt;br /&gt;
&lt;br /&gt;
Once this is completed, copy this newly generated partition wrapper to &amp;lt;code&amp;gt;../../lib/x64_rhel7_gcc48/&amp;lt;/code&amp;gt;. Unfortunately, the instructions from this point forward will be less explicit as the best way to learn the process is to view example scripts and adapt these to fit your needs. From this point forward, it is assumed that a directory named &amp;lt;code&amp;gt;SCOREC-core&amp;lt;/code&amp;gt; was created and the source code from GitHub was properly cloned in this directory. &lt;br /&gt;
&lt;br /&gt;
====Generating the Scripts to Compile Chef====&lt;br /&gt;
&lt;br /&gt;
In order to run Chef, two scripts must be generated. The naming conventions of the scripts are typically &amp;lt;code&amp;gt;doConfigure.sh&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;env_simmtrix_version&amp;lt;/code&amp;gt;. Below, an example &amp;lt;code&amp;gt;doConfigure.sh&amp;lt;/code&amp;gt; script is shown. This script primarily executes the necessary CMake commands for compilation. It also runs the &amp;lt;code&amp;gt;env_simmtrix_version&amp;lt;/code&amp;gt; script. In the example below, it calls &amp;lt;code&amp;gt;env_14.0-190626&amp;lt;/code&amp;gt;. Note that both of these scripts are located in &amp;lt;code&amp;gt;/projects/mabl7046/SCOREC-core/build_14.0-190626&amp;lt;/code&amp;gt;, or the directory where Chef is to be compiled. Note that the line &amp;lt;code&amp;gt;-DMESHES=&amp;quot;/projects/mabl7046/pumi-meshes&amp;quot;&amp;lt;/code&amp;gt; was copied from a script that implemented successfully on another machine. I recommend looking at scripts on the Viz nodes that worked for the version of Chef you are compiling and copying over the directory analogous to pumi-meshes to summit to implement your script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;doConfigure.sh&amp;lt;/code&amp;gt;:&lt;br /&gt;
 #!/bin/bash -l&lt;br /&gt;
 . /projects/mabl7046/SCOREC-core/build_14.0-190626/env_14.0-190626&lt;br /&gt;
 #unload default modules&lt;br /&gt;
 module purge&lt;br /&gt;
 #load what we need&lt;br /&gt;
 module load gcc/6.1.0&lt;br /&gt;
 module load openmpi/2.0.1&lt;br /&gt;
 module load cmake/3.14.1&lt;br /&gt;
 ### For Chef&lt;br /&gt;
 cmake -DCMAKE_C_COMPILER=mpicc \&lt;br /&gt;
 -DCMAKE_CXX_COMPILER=mpicxx \&lt;br /&gt;
 -DSCOREC_CXX_WARNINGS=ON \&lt;br /&gt;
 -DSCOREC_CXX_OPTIMIZE=ON \&lt;br /&gt;
 -DSCOREC_CXX_SYMBOLS=ON \&lt;br /&gt;
 -DPCU_COMPRESS=ON \&lt;br /&gt;
 -DENABLE_ZOLTAN=ON \&lt;br /&gt;
 -DENABLE_SIMMETRIX=ON \&lt;br /&gt;
 -DSIM_MPI=&amp;quot;openmpi&amp;quot; \&lt;br /&gt;
 -DSIM_PARASOLID=ON \&lt;br /&gt;
 -DMDS_SET_MAX=1024 \&lt;br /&gt;
 -DMDS_ID_TYPE=long \&lt;br /&gt;
 -DIS_TESTING=OFF \&lt;br /&gt;
 -DMESHES=&amp;quot;/projects/mabl7046/pumi-meshes&amp;quot; \&lt;br /&gt;
 -DCMAKE_INSTALL_PREFIX=$PWD/install \&lt;br /&gt;
 ../core&lt;br /&gt;
 #-DMDS_ID_TYPE=int or long&lt;br /&gt;
 sleep 3&lt;br /&gt;
 make -j32&lt;br /&gt;
 make -j32&lt;br /&gt;
&lt;br /&gt;
Below, the script &amp;lt;code&amp;gt;env_14.0-190626&amp;lt;/code&amp;gt; is given. As stated in the comments, this is to set the environment for &amp;lt;code&amp;gt;CMake.SCOREC&amp;lt;/code&amp;gt;. In order to make this script work, the &amp;lt;code&amp;gt;SIM_LICENSE_FILE&amp;lt;/code&amp;gt; (denoted UCBoulder below) needed to be obtained. The libraries for &amp;lt;code&amp;gt;Zoltan&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;parmetis&amp;lt;/code&amp;gt; also needed to be collected. The &amp;lt;code&amp;gt;SIM_LICENSE_FILE&amp;lt;/code&amp;gt; was copied over from Cooley although, I am sure that this can be obtained from the Viz nodes as well. To obtain the libraries for &amp;lt;code&amp;gt;Zoltan&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;parmetis&amp;lt;/code&amp;gt; on Summit, run:&lt;br /&gt;
&lt;br /&gt;
 cp -r /projects/ASEN5119/SCOREC-core/deps/zoltan .&lt;br /&gt;
 cp -r /projects/ASEN5119/SCOREC-core/deps/parmetis .&lt;br /&gt;
&lt;br /&gt;
from the directory where you wish these to be. All this does is move these from a directory Ken created for his Boundary Layers course to a directory that is more convenient for personal use. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;env_14.0-190626&amp;lt;/code&amp;gt;:&lt;br /&gt;
 ### For CMake.SCOREC&lt;br /&gt;
 export buildRoot=/projects/mabl7046/SCOREC-core/&lt;br /&gt;
 export simModVer=$buildRoot/deps/Simmetrix/14.0-190626beta/&lt;br /&gt;
 export SIM_LICENSE_FILE=$buildRoot/deps/Simmetrix/UCBoulder&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$simModVer&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$simModVer/lib/x64_rhel7_gcc48&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$simModVer/lib/x64_rhel7_gcc48/psKrnl&lt;br /&gt;
 #MIGHT NEED THIS export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:/projects/tools/Simmetrix.develop/simModSuite/PartitionWrapper/lib&lt;br /&gt;
 ### For Zoltan and parmetis&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$buildRoot/deps/zoltan/3.83-gnu49-ompi210/&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$buildRoot/deps/parmetis/4.0.3-gnu492-ompi210&lt;br /&gt;
 # the following is to give the path to PartitionWrappers that have not been installed in the Simmetrix library&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$simModVer/code/PartitionWrapper/lib&lt;br /&gt;
&lt;br /&gt;
====Final Notes====&lt;br /&gt;
Once the scripts are set up, simply run &amp;lt;code&amp;gt;./doConfigure.sh&amp;lt;/code&amp;gt; to compile the code. Please be patient with the process as it is highly unlikely that it will compile successfully the first time you try. Be sure to pay close attention to your directory structure when setting your scripts up and be cognizant of the dependencies between programs.&lt;br /&gt;
&lt;br /&gt;
[[Category: Chef]]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=Chef/Building&amp;diff=1216</id>
		<title>Chef/Building</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=Chef/Building&amp;diff=1216"/>
				<updated>2020-10-24T19:44:09Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* General Instruction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This goes over how to compile Chef and some system specific instructions for doing so.&lt;br /&gt;
&lt;br /&gt;
== General Instruction ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;.smdmodels&amp;lt;/code&amp;gt; made with a new version of &amp;lt;code&amp;gt;simModeler&amp;lt;/code&amp;gt; will likely only work with chef compiled with a recent version of &amp;lt;code&amp;gt;simModSuite&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Common Errors ===&lt;br /&gt;
The following error is very common when Compiling Chef: &amp;lt;code&amp;gt; CMake Error at cmake/FindSimModSuite.cmake:93 (MESSAGE):&lt;br /&gt;
invalid Simmetrix version: 15.0.201010, valid versions are 12.0.190225 to 15.0.200714&amp;lt;/code&amp;gt;. When this is encountered, the SCORE/core source code must be changed. From the build directory vim the file &amp;lt;code&amp;gt;FindSimModSuite.cmake&amp;lt;/code&amp;gt;. This is in the directory &amp;lt;code&amp;gt;/core/cmake&amp;lt;/code&amp;gt;. Scroll down to line 87 and edit &amp;lt;code&amp;gt;set(MAX_VALID_SIM_VERSION 15.0.200714)&amp;lt;/code&amp;gt; to a Simmetrix version within the range of the version you are using to compile.&lt;br /&gt;
&lt;br /&gt;
== System Specific ==&lt;br /&gt;
&lt;br /&gt;
=== Summit (RMACC) ===&lt;br /&gt;
&lt;br /&gt;
====Copy Simmetrix Libraries from Viz Nodes====&lt;br /&gt;
&lt;br /&gt;
Note that in order for Chef to operate, it must be compiled with the proper Simmetrix libraries. That is to say, there needs to be compatibility between Simmetrix and SCOREC-core for compilation of Chef to run smoothly. Please see [[Building_SCOREC_Core|Building SCOREC Core]] for instructions on cloning the source code. An example (what worked for me) is provided throughout the wiki. From the viz nodes (&amp;lt;code&amp;gt;/projects/tools/SimmetrixTest&amp;lt;/code&amp;gt;), I ran&lt;br /&gt;
&lt;br /&gt;
 scp -r 14.0-190626beta/ &amp;lt;username&amp;gt;@login.rc.colorado.edu:&amp;lt;path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to copy over the directory &amp;lt;code&amp;gt;14.0-190626beta/&amp;lt;/code&amp;gt; to Summit.&lt;br /&gt;
&lt;br /&gt;
====Set Proper Environment====&lt;br /&gt;
&lt;br /&gt;
To start with a clean slate, run &lt;br /&gt;
&lt;br /&gt;
 module purge&lt;br /&gt;
&lt;br /&gt;
This unloads all currently loaded modules.&lt;br /&gt;
&lt;br /&gt;
Next, run&lt;br /&gt;
&lt;br /&gt;
 module load gcc/6.1.0&lt;br /&gt;
 module load openmpi/2.0.1&lt;br /&gt;
&lt;br /&gt;
Note that /6.1.0 and /2.0.1 can be swapped with the intended versions of GCC and OpenMPI the user intends on using.&lt;br /&gt;
&lt;br /&gt;
====Generate Partition Wrapper====&lt;br /&gt;
&lt;br /&gt;
After the directory is copied over to Summit and the environment is set, a Partition Wrapper needs to be generated. Go to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;path&amp;gt;/14.0-190626beta/code/PartitionWrapper&lt;br /&gt;
&lt;br /&gt;
and open the file &lt;br /&gt;
&lt;br /&gt;
 Makefile.custom&lt;br /&gt;
&lt;br /&gt;
Obviously, &amp;lt;code&amp;gt;14.0-190626beta/&amp;lt;/code&amp;gt; is a placeholder and any version of Simmetrix (i.e. the version you used to create the mesh) will work. In this example, I used OpenMPI . I also used &amp;lt;code&amp;gt;mpicc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;mpicxx&amp;lt;/code&amp;gt; as MPI-C and MPI-C++ compilers respectively. If this is what is intended, in the &amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt;, set the following variables:&lt;br /&gt;
&lt;br /&gt;
 PQUAL:= -openmpi&lt;br /&gt;
 CC:=/curc/sw/openmpi/2.0.1/gcc/6.1.0/bin/mpicc &lt;br /&gt;
 CXX:= /curc/sw/openmpi/2.0.1/gcc/6.1.0/bin/mpicxx&lt;br /&gt;
&lt;br /&gt;
Notice the compatibility between the loaded modules and the directory structure above. Once this is set, in the terminal run&lt;br /&gt;
&lt;br /&gt;
 make -f Makefile.custom PARALLEL=openmpi&lt;br /&gt;
&lt;br /&gt;
This will generate a file named &amp;lt;code&amp;gt;libSimPartitionWrapper-openmpi.a&amp;lt;/code&amp;gt;. Then, run&lt;br /&gt;
&lt;br /&gt;
 chmod +x libSimPartitionWrapper-openmpi.a.&lt;br /&gt;
&lt;br /&gt;
Once this is completed, copy this newly generated partition wrapper to &amp;lt;code&amp;gt;../../lib/x64_rhel7_gcc48/&amp;lt;/code&amp;gt;. Unfortunately, the instructions from this point forward will be less explicit as the best way to learn the process is to view example scripts and adapt these to fit your needs. From this point forward, it is assumed that a directory named &amp;lt;code&amp;gt;SCOREC-core&amp;lt;/code&amp;gt; was created and the source code from GitHub was properly cloned in this directory. &lt;br /&gt;
&lt;br /&gt;
====Generating the Scripts to Compile Chef====&lt;br /&gt;
&lt;br /&gt;
In order to run Chef, two scripts must be generated. The naming conventions of the scripts are typically &amp;lt;code&amp;gt;doConfigure.sh&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;env_simmtrix_version&amp;lt;/code&amp;gt;. Below, an example &amp;lt;code&amp;gt;doConfigure.sh&amp;lt;/code&amp;gt; script is shown. This script primarily executes the necessary CMake commands for compilation. It also runs the &amp;lt;code&amp;gt;env_simmtrix_version&amp;lt;/code&amp;gt; script. In the example below, it calls &amp;lt;code&amp;gt;env_14.0-190626&amp;lt;/code&amp;gt;. Note that both of these scripts are located in &amp;lt;code&amp;gt;/projects/mabl7046/SCOREC-core/build_14.0-190626&amp;lt;/code&amp;gt;, or the directory where Chef is to be compiled. Note that the line &amp;lt;code&amp;gt;-DMESHES=&amp;quot;/projects/mabl7046/pumi-meshes&amp;quot;&amp;lt;/code&amp;gt; was copied from a script that implemented successfully on another machine. I recommend looking at scripts on the Viz nodes that worked for the version of Chef you are compiling and copying over the directory analogous to pumi-meshes to summit to implement your script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;doConfigure.sh&amp;lt;/code&amp;gt;:&lt;br /&gt;
 #!/bin/bash -l&lt;br /&gt;
 . /projects/mabl7046/SCOREC-core/build_14.0-190626/env_14.0-190626&lt;br /&gt;
 #unload default modules&lt;br /&gt;
 module purge&lt;br /&gt;
 #load what we need&lt;br /&gt;
 module load gcc/6.1.0&lt;br /&gt;
 module load openmpi/2.0.1&lt;br /&gt;
 module load cmake/3.14.1&lt;br /&gt;
 ### For Chef&lt;br /&gt;
 cmake -DCMAKE_C_COMPILER=mpicc \&lt;br /&gt;
 -DCMAKE_CXX_COMPILER=mpicxx \&lt;br /&gt;
 -DSCOREC_CXX_WARNINGS=ON \&lt;br /&gt;
 -DSCOREC_CXX_OPTIMIZE=ON \&lt;br /&gt;
 -DSCOREC_CXX_SYMBOLS=ON \&lt;br /&gt;
 -DPCU_COMPRESS=ON \&lt;br /&gt;
 -DENABLE_ZOLTAN=ON \&lt;br /&gt;
 -DENABLE_SIMMETRIX=ON \&lt;br /&gt;
 -DSIM_MPI=&amp;quot;openmpi&amp;quot; \&lt;br /&gt;
 -DSIM_PARASOLID=ON \&lt;br /&gt;
 -DMDS_SET_MAX=1024 \&lt;br /&gt;
 -DMDS_ID_TYPE=long \&lt;br /&gt;
 -DIS_TESTING=OFF \&lt;br /&gt;
 -DMESHES=&amp;quot;/projects/mabl7046/pumi-meshes&amp;quot; \&lt;br /&gt;
 -DCMAKE_INSTALL_PREFIX=$PWD/install \&lt;br /&gt;
 ../core&lt;br /&gt;
 #-DMDS_ID_TYPE=int or long&lt;br /&gt;
 sleep 3&lt;br /&gt;
 make -j32&lt;br /&gt;
 make -j32&lt;br /&gt;
&lt;br /&gt;
Below, the script &amp;lt;code&amp;gt;env_14.0-190626&amp;lt;/code&amp;gt; is given. As stated in the comments, this is to set the environment for &amp;lt;code&amp;gt;CMake.SCOREC&amp;lt;/code&amp;gt;. In order to make this script work, the &amp;lt;code&amp;gt;SIM_LICENSE_FILE&amp;lt;/code&amp;gt; (denoted UCBoulder below) needed to be obtained. The libraries for &amp;lt;code&amp;gt;Zoltan&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;parmetis&amp;lt;/code&amp;gt; also needed to be collected. The &amp;lt;code&amp;gt;SIM_LICENSE_FILE&amp;lt;/code&amp;gt; was copied over from Cooley although, I am sure that this can be obtained from the Viz nodes as well. To obtain the libraries for &amp;lt;code&amp;gt;Zoltan&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;parmetis&amp;lt;/code&amp;gt; on Summit, run:&lt;br /&gt;
&lt;br /&gt;
 cp -r /projects/ASEN5119/SCOREC-core/deps/zoltan .&lt;br /&gt;
 cp -r /projects/ASEN5119/SCOREC-core/deps/parmetis .&lt;br /&gt;
&lt;br /&gt;
from the directory where you wish these to be. All this does is move these from a directory Ken created for his Boundary Layers course to a directory that is more convenient for personal use. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;env_14.0-190626&amp;lt;/code&amp;gt;:&lt;br /&gt;
 ### For CMake.SCOREC&lt;br /&gt;
 export buildRoot=/projects/mabl7046/SCOREC-core/&lt;br /&gt;
 export simModVer=$buildRoot/deps/Simmetrix/14.0-190626beta/&lt;br /&gt;
 export SIM_LICENSE_FILE=$buildRoot/deps/Simmetrix/UCBoulder&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$simModVer&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$simModVer/lib/x64_rhel7_gcc48&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$simModVer/lib/x64_rhel7_gcc48/psKrnl&lt;br /&gt;
 #MIGHT NEED THIS export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:/projects/tools/Simmetrix.develop/simModSuite/PartitionWrapper/lib&lt;br /&gt;
 ### For Zoltan and parmetis&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$buildRoot/deps/zoltan/3.83-gnu49-ompi210/&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$buildRoot/deps/parmetis/4.0.3-gnu492-ompi210&lt;br /&gt;
 # the following is to give the path to PartitionWrappers that have not been installed in the Simmetrix library&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$simModVer/code/PartitionWrapper/lib&lt;br /&gt;
&lt;br /&gt;
====Final Notes====&lt;br /&gt;
Once the scripts are set up, simply run &amp;lt;code&amp;gt;./doConfigure.sh&amp;lt;/code&amp;gt; to compile the code. Please be patient with the process as it is highly unlikely that it will compile successfully the first time you try. Be sure to pay close attention to your directory structure when setting your scripts up and be cognizant of the dependencies between programs.&lt;br /&gt;
&lt;br /&gt;
[[Category: Chef]]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=Chef/Building&amp;diff=1215</id>
		<title>Chef/Building</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=Chef/Building&amp;diff=1215"/>
				<updated>2020-10-24T19:42:15Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* Common Errors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This goes over how to compile Chef and some system specific instructions for doing so.&lt;br /&gt;
&lt;br /&gt;
== General Instruction ==&lt;br /&gt;
&lt;br /&gt;
Here would go some general instructions. I'm not experienced enough to know what they would be.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Common Errors ===&lt;br /&gt;
The following error is very common when Compiling Chef: &amp;lt;code&amp;gt; CMake Error at cmake/FindSimModSuite.cmake:93 (MESSAGE):&lt;br /&gt;
invalid Simmetrix version: 15.0.201010, valid versions are 12.0.190225 to 15.0.200714&amp;lt;/code&amp;gt;. When this is encountered, the SCORE/core source code must be changed. From the build directory vim the file &amp;lt;code&amp;gt;FindSimModSuite.cmake&amp;lt;/code&amp;gt;. This is in the directory &amp;lt;code&amp;gt;/core/cmake&amp;lt;/code&amp;gt;. Scroll down to line 87 and edit &amp;lt;code&amp;gt;set(MAX_VALID_SIM_VERSION 15.0.200714)&amp;lt;/code&amp;gt; to a Simmetrix version within the range of the version you are using to compile.&lt;br /&gt;
&lt;br /&gt;
== System Specific ==&lt;br /&gt;
&lt;br /&gt;
=== Summit (RMACC) ===&lt;br /&gt;
&lt;br /&gt;
====Copy Simmetrix Libraries from Viz Nodes====&lt;br /&gt;
&lt;br /&gt;
Note that in order for Chef to operate, it must be compiled with the proper Simmetrix libraries. That is to say, there needs to be compatibility between Simmetrix and SCOREC-core for compilation of Chef to run smoothly. Please see [[Building_SCOREC_Core|Building SCOREC Core]] for instructions on cloning the source code. An example (what worked for me) is provided throughout the wiki. From the viz nodes (&amp;lt;code&amp;gt;/projects/tools/SimmetrixTest&amp;lt;/code&amp;gt;), I ran&lt;br /&gt;
&lt;br /&gt;
 scp -r 14.0-190626beta/ &amp;lt;username&amp;gt;@login.rc.colorado.edu:&amp;lt;path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to copy over the directory &amp;lt;code&amp;gt;14.0-190626beta/&amp;lt;/code&amp;gt; to Summit.&lt;br /&gt;
&lt;br /&gt;
====Set Proper Environment====&lt;br /&gt;
&lt;br /&gt;
To start with a clean slate, run &lt;br /&gt;
&lt;br /&gt;
 module purge&lt;br /&gt;
&lt;br /&gt;
This unloads all currently loaded modules.&lt;br /&gt;
&lt;br /&gt;
Next, run&lt;br /&gt;
&lt;br /&gt;
 module load gcc/6.1.0&lt;br /&gt;
 module load openmpi/2.0.1&lt;br /&gt;
&lt;br /&gt;
Note that /6.1.0 and /2.0.1 can be swapped with the intended versions of GCC and OpenMPI the user intends on using.&lt;br /&gt;
&lt;br /&gt;
====Generate Partition Wrapper====&lt;br /&gt;
&lt;br /&gt;
After the directory is copied over to Summit and the environment is set, a Partition Wrapper needs to be generated. Go to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;path&amp;gt;/14.0-190626beta/code/PartitionWrapper&lt;br /&gt;
&lt;br /&gt;
and open the file &lt;br /&gt;
&lt;br /&gt;
 Makefile.custom&lt;br /&gt;
&lt;br /&gt;
Obviously, &amp;lt;code&amp;gt;14.0-190626beta/&amp;lt;/code&amp;gt; is a placeholder and any version of Simmetrix (i.e. the version you used to create the mesh) will work. In this example, I used OpenMPI . I also used &amp;lt;code&amp;gt;mpicc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;mpicxx&amp;lt;/code&amp;gt; as MPI-C and MPI-C++ compilers respectively. If this is what is intended, in the &amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt;, set the following variables:&lt;br /&gt;
&lt;br /&gt;
 PQUAL:= -openmpi&lt;br /&gt;
 CC:=/curc/sw/openmpi/2.0.1/gcc/6.1.0/bin/mpicc &lt;br /&gt;
 CXX:= /curc/sw/openmpi/2.0.1/gcc/6.1.0/bin/mpicxx&lt;br /&gt;
&lt;br /&gt;
Notice the compatibility between the loaded modules and the directory structure above. Once this is set, in the terminal run&lt;br /&gt;
&lt;br /&gt;
 make -f Makefile.custom PARALLEL=openmpi&lt;br /&gt;
&lt;br /&gt;
This will generate a file named &amp;lt;code&amp;gt;libSimPartitionWrapper-openmpi.a&amp;lt;/code&amp;gt;. Then, run&lt;br /&gt;
&lt;br /&gt;
 chmod +x libSimPartitionWrapper-openmpi.a.&lt;br /&gt;
&lt;br /&gt;
Once this is completed, copy this newly generated partition wrapper to &amp;lt;code&amp;gt;../../lib/x64_rhel7_gcc48/&amp;lt;/code&amp;gt;. Unfortunately, the instructions from this point forward will be less explicit as the best way to learn the process is to view example scripts and adapt these to fit your needs. From this point forward, it is assumed that a directory named &amp;lt;code&amp;gt;SCOREC-core&amp;lt;/code&amp;gt; was created and the source code from GitHub was properly cloned in this directory. &lt;br /&gt;
&lt;br /&gt;
====Generating the Scripts to Compile Chef====&lt;br /&gt;
&lt;br /&gt;
In order to run Chef, two scripts must be generated. The naming conventions of the scripts are typically &amp;lt;code&amp;gt;doConfigure.sh&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;env_simmtrix_version&amp;lt;/code&amp;gt;. Below, an example &amp;lt;code&amp;gt;doConfigure.sh&amp;lt;/code&amp;gt; script is shown. This script primarily executes the necessary CMake commands for compilation. It also runs the &amp;lt;code&amp;gt;env_simmtrix_version&amp;lt;/code&amp;gt; script. In the example below, it calls &amp;lt;code&amp;gt;env_14.0-190626&amp;lt;/code&amp;gt;. Note that both of these scripts are located in &amp;lt;code&amp;gt;/projects/mabl7046/SCOREC-core/build_14.0-190626&amp;lt;/code&amp;gt;, or the directory where Chef is to be compiled. Note that the line &amp;lt;code&amp;gt;-DMESHES=&amp;quot;/projects/mabl7046/pumi-meshes&amp;quot;&amp;lt;/code&amp;gt; was copied from a script that implemented successfully on another machine. I recommend looking at scripts on the Viz nodes that worked for the version of Chef you are compiling and copying over the directory analogous to pumi-meshes to summit to implement your script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;doConfigure.sh&amp;lt;/code&amp;gt;:&lt;br /&gt;
 #!/bin/bash -l&lt;br /&gt;
 . /projects/mabl7046/SCOREC-core/build_14.0-190626/env_14.0-190626&lt;br /&gt;
 #unload default modules&lt;br /&gt;
 module purge&lt;br /&gt;
 #load what we need&lt;br /&gt;
 module load gcc/6.1.0&lt;br /&gt;
 module load openmpi/2.0.1&lt;br /&gt;
 module load cmake/3.14.1&lt;br /&gt;
 ### For Chef&lt;br /&gt;
 cmake -DCMAKE_C_COMPILER=mpicc \&lt;br /&gt;
 -DCMAKE_CXX_COMPILER=mpicxx \&lt;br /&gt;
 -DSCOREC_CXX_WARNINGS=ON \&lt;br /&gt;
 -DSCOREC_CXX_OPTIMIZE=ON \&lt;br /&gt;
 -DSCOREC_CXX_SYMBOLS=ON \&lt;br /&gt;
 -DPCU_COMPRESS=ON \&lt;br /&gt;
 -DENABLE_ZOLTAN=ON \&lt;br /&gt;
 -DENABLE_SIMMETRIX=ON \&lt;br /&gt;
 -DSIM_MPI=&amp;quot;openmpi&amp;quot; \&lt;br /&gt;
 -DSIM_PARASOLID=ON \&lt;br /&gt;
 -DMDS_SET_MAX=1024 \&lt;br /&gt;
 -DMDS_ID_TYPE=long \&lt;br /&gt;
 -DIS_TESTING=OFF \&lt;br /&gt;
 -DMESHES=&amp;quot;/projects/mabl7046/pumi-meshes&amp;quot; \&lt;br /&gt;
 -DCMAKE_INSTALL_PREFIX=$PWD/install \&lt;br /&gt;
 ../core&lt;br /&gt;
 #-DMDS_ID_TYPE=int or long&lt;br /&gt;
 sleep 3&lt;br /&gt;
 make -j32&lt;br /&gt;
 make -j32&lt;br /&gt;
&lt;br /&gt;
Below, the script &amp;lt;code&amp;gt;env_14.0-190626&amp;lt;/code&amp;gt; is given. As stated in the comments, this is to set the environment for &amp;lt;code&amp;gt;CMake.SCOREC&amp;lt;/code&amp;gt;. In order to make this script work, the &amp;lt;code&amp;gt;SIM_LICENSE_FILE&amp;lt;/code&amp;gt; (denoted UCBoulder below) needed to be obtained. The libraries for &amp;lt;code&amp;gt;Zoltan&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;parmetis&amp;lt;/code&amp;gt; also needed to be collected. The &amp;lt;code&amp;gt;SIM_LICENSE_FILE&amp;lt;/code&amp;gt; was copied over from Cooley although, I am sure that this can be obtained from the Viz nodes as well. To obtain the libraries for &amp;lt;code&amp;gt;Zoltan&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;parmetis&amp;lt;/code&amp;gt; on Summit, run:&lt;br /&gt;
&lt;br /&gt;
 cp -r /projects/ASEN5119/SCOREC-core/deps/zoltan .&lt;br /&gt;
 cp -r /projects/ASEN5119/SCOREC-core/deps/parmetis .&lt;br /&gt;
&lt;br /&gt;
from the directory where you wish these to be. All this does is move these from a directory Ken created for his Boundary Layers course to a directory that is more convenient for personal use. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;env_14.0-190626&amp;lt;/code&amp;gt;:&lt;br /&gt;
 ### For CMake.SCOREC&lt;br /&gt;
 export buildRoot=/projects/mabl7046/SCOREC-core/&lt;br /&gt;
 export simModVer=$buildRoot/deps/Simmetrix/14.0-190626beta/&lt;br /&gt;
 export SIM_LICENSE_FILE=$buildRoot/deps/Simmetrix/UCBoulder&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$simModVer&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$simModVer/lib/x64_rhel7_gcc48&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$simModVer/lib/x64_rhel7_gcc48/psKrnl&lt;br /&gt;
 #MIGHT NEED THIS export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:/projects/tools/Simmetrix.develop/simModSuite/PartitionWrapper/lib&lt;br /&gt;
 ### For Zoltan and parmetis&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$buildRoot/deps/zoltan/3.83-gnu49-ompi210/&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$buildRoot/deps/parmetis/4.0.3-gnu492-ompi210&lt;br /&gt;
 # the following is to give the path to PartitionWrappers that have not been installed in the Simmetrix library&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$simModVer/code/PartitionWrapper/lib&lt;br /&gt;
&lt;br /&gt;
====Final Notes====&lt;br /&gt;
Once the scripts are set up, simply run &amp;lt;code&amp;gt;./doConfigure.sh&amp;lt;/code&amp;gt; to compile the code. Please be patient with the process as it is highly unlikely that it will compile successfully the first time you try. Be sure to pay close attention to your directory structure when setting your scripts up and be cognizant of the dependencies between programs.&lt;br /&gt;
&lt;br /&gt;
[[Category: Chef]]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=Chef/Building&amp;diff=1214</id>
		<title>Chef/Building</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=Chef/Building&amp;diff=1214"/>
				<updated>2020-10-24T19:41:55Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* General Instruction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This goes over how to compile Chef and some system specific instructions for doing so.&lt;br /&gt;
&lt;br /&gt;
== General Instruction ==&lt;br /&gt;
&lt;br /&gt;
Here would go some general instructions. I'm not experienced enough to know what they would be.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Common Errors ===&lt;br /&gt;
The following error is very common when Compiling Chef: &amp;lt;code&amp;gt; CMake Error at cmake/FindSimModSuite.cmake:93 (MESSAGE):&lt;br /&gt;
invalid Simmetrix version: 15.0.201010, valid versions are 12.0.190225 to 15.0.200714&amp;lt;/code&amp;gt;. When the is encountered, the SCORE/core source code must be changed. From the build directory vim the file &amp;lt;code&amp;gt;FindSimModSuite.cmake&amp;lt;/code&amp;gt;. This is in the directory &amp;lt;code&amp;gt;/core/cmake&amp;lt;/code&amp;gt;. Scroll down to line 87 and edit &amp;lt;code&amp;gt;set(MAX_VALID_SIM_VERSION 15.0.200714)&amp;lt;/code&amp;gt; to a Simmetrix version within the range of the version you are using to compile.&lt;br /&gt;
&lt;br /&gt;
== System Specific ==&lt;br /&gt;
&lt;br /&gt;
=== Summit (RMACC) ===&lt;br /&gt;
&lt;br /&gt;
====Copy Simmetrix Libraries from Viz Nodes====&lt;br /&gt;
&lt;br /&gt;
Note that in order for Chef to operate, it must be compiled with the proper Simmetrix libraries. That is to say, there needs to be compatibility between Simmetrix and SCOREC-core for compilation of Chef to run smoothly. Please see [[Building_SCOREC_Core|Building SCOREC Core]] for instructions on cloning the source code. An example (what worked for me) is provided throughout the wiki. From the viz nodes (&amp;lt;code&amp;gt;/projects/tools/SimmetrixTest&amp;lt;/code&amp;gt;), I ran&lt;br /&gt;
&lt;br /&gt;
 scp -r 14.0-190626beta/ &amp;lt;username&amp;gt;@login.rc.colorado.edu:&amp;lt;path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to copy over the directory &amp;lt;code&amp;gt;14.0-190626beta/&amp;lt;/code&amp;gt; to Summit.&lt;br /&gt;
&lt;br /&gt;
====Set Proper Environment====&lt;br /&gt;
&lt;br /&gt;
To start with a clean slate, run &lt;br /&gt;
&lt;br /&gt;
 module purge&lt;br /&gt;
&lt;br /&gt;
This unloads all currently loaded modules.&lt;br /&gt;
&lt;br /&gt;
Next, run&lt;br /&gt;
&lt;br /&gt;
 module load gcc/6.1.0&lt;br /&gt;
 module load openmpi/2.0.1&lt;br /&gt;
&lt;br /&gt;
Note that /6.1.0 and /2.0.1 can be swapped with the intended versions of GCC and OpenMPI the user intends on using.&lt;br /&gt;
&lt;br /&gt;
====Generate Partition Wrapper====&lt;br /&gt;
&lt;br /&gt;
After the directory is copied over to Summit and the environment is set, a Partition Wrapper needs to be generated. Go to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;path&amp;gt;/14.0-190626beta/code/PartitionWrapper&lt;br /&gt;
&lt;br /&gt;
and open the file &lt;br /&gt;
&lt;br /&gt;
 Makefile.custom&lt;br /&gt;
&lt;br /&gt;
Obviously, &amp;lt;code&amp;gt;14.0-190626beta/&amp;lt;/code&amp;gt; is a placeholder and any version of Simmetrix (i.e. the version you used to create the mesh) will work. In this example, I used OpenMPI . I also used &amp;lt;code&amp;gt;mpicc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;mpicxx&amp;lt;/code&amp;gt; as MPI-C and MPI-C++ compilers respectively. If this is what is intended, in the &amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt;, set the following variables:&lt;br /&gt;
&lt;br /&gt;
 PQUAL:= -openmpi&lt;br /&gt;
 CC:=/curc/sw/openmpi/2.0.1/gcc/6.1.0/bin/mpicc &lt;br /&gt;
 CXX:= /curc/sw/openmpi/2.0.1/gcc/6.1.0/bin/mpicxx&lt;br /&gt;
&lt;br /&gt;
Notice the compatibility between the loaded modules and the directory structure above. Once this is set, in the terminal run&lt;br /&gt;
&lt;br /&gt;
 make -f Makefile.custom PARALLEL=openmpi&lt;br /&gt;
&lt;br /&gt;
This will generate a file named &amp;lt;code&amp;gt;libSimPartitionWrapper-openmpi.a&amp;lt;/code&amp;gt;. Then, run&lt;br /&gt;
&lt;br /&gt;
 chmod +x libSimPartitionWrapper-openmpi.a.&lt;br /&gt;
&lt;br /&gt;
Once this is completed, copy this newly generated partition wrapper to &amp;lt;code&amp;gt;../../lib/x64_rhel7_gcc48/&amp;lt;/code&amp;gt;. Unfortunately, the instructions from this point forward will be less explicit as the best way to learn the process is to view example scripts and adapt these to fit your needs. From this point forward, it is assumed that a directory named &amp;lt;code&amp;gt;SCOREC-core&amp;lt;/code&amp;gt; was created and the source code from GitHub was properly cloned in this directory. &lt;br /&gt;
&lt;br /&gt;
====Generating the Scripts to Compile Chef====&lt;br /&gt;
&lt;br /&gt;
In order to run Chef, two scripts must be generated. The naming conventions of the scripts are typically &amp;lt;code&amp;gt;doConfigure.sh&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;env_simmtrix_version&amp;lt;/code&amp;gt;. Below, an example &amp;lt;code&amp;gt;doConfigure.sh&amp;lt;/code&amp;gt; script is shown. This script primarily executes the necessary CMake commands for compilation. It also runs the &amp;lt;code&amp;gt;env_simmtrix_version&amp;lt;/code&amp;gt; script. In the example below, it calls &amp;lt;code&amp;gt;env_14.0-190626&amp;lt;/code&amp;gt;. Note that both of these scripts are located in &amp;lt;code&amp;gt;/projects/mabl7046/SCOREC-core/build_14.0-190626&amp;lt;/code&amp;gt;, or the directory where Chef is to be compiled. Note that the line &amp;lt;code&amp;gt;-DMESHES=&amp;quot;/projects/mabl7046/pumi-meshes&amp;quot;&amp;lt;/code&amp;gt; was copied from a script that implemented successfully on another machine. I recommend looking at scripts on the Viz nodes that worked for the version of Chef you are compiling and copying over the directory analogous to pumi-meshes to summit to implement your script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;doConfigure.sh&amp;lt;/code&amp;gt;:&lt;br /&gt;
 #!/bin/bash -l&lt;br /&gt;
 . /projects/mabl7046/SCOREC-core/build_14.0-190626/env_14.0-190626&lt;br /&gt;
 #unload default modules&lt;br /&gt;
 module purge&lt;br /&gt;
 #load what we need&lt;br /&gt;
 module load gcc/6.1.0&lt;br /&gt;
 module load openmpi/2.0.1&lt;br /&gt;
 module load cmake/3.14.1&lt;br /&gt;
 ### For Chef&lt;br /&gt;
 cmake -DCMAKE_C_COMPILER=mpicc \&lt;br /&gt;
 -DCMAKE_CXX_COMPILER=mpicxx \&lt;br /&gt;
 -DSCOREC_CXX_WARNINGS=ON \&lt;br /&gt;
 -DSCOREC_CXX_OPTIMIZE=ON \&lt;br /&gt;
 -DSCOREC_CXX_SYMBOLS=ON \&lt;br /&gt;
 -DPCU_COMPRESS=ON \&lt;br /&gt;
 -DENABLE_ZOLTAN=ON \&lt;br /&gt;
 -DENABLE_SIMMETRIX=ON \&lt;br /&gt;
 -DSIM_MPI=&amp;quot;openmpi&amp;quot; \&lt;br /&gt;
 -DSIM_PARASOLID=ON \&lt;br /&gt;
 -DMDS_SET_MAX=1024 \&lt;br /&gt;
 -DMDS_ID_TYPE=long \&lt;br /&gt;
 -DIS_TESTING=OFF \&lt;br /&gt;
 -DMESHES=&amp;quot;/projects/mabl7046/pumi-meshes&amp;quot; \&lt;br /&gt;
 -DCMAKE_INSTALL_PREFIX=$PWD/install \&lt;br /&gt;
 ../core&lt;br /&gt;
 #-DMDS_ID_TYPE=int or long&lt;br /&gt;
 sleep 3&lt;br /&gt;
 make -j32&lt;br /&gt;
 make -j32&lt;br /&gt;
&lt;br /&gt;
Below, the script &amp;lt;code&amp;gt;env_14.0-190626&amp;lt;/code&amp;gt; is given. As stated in the comments, this is to set the environment for &amp;lt;code&amp;gt;CMake.SCOREC&amp;lt;/code&amp;gt;. In order to make this script work, the &amp;lt;code&amp;gt;SIM_LICENSE_FILE&amp;lt;/code&amp;gt; (denoted UCBoulder below) needed to be obtained. The libraries for &amp;lt;code&amp;gt;Zoltan&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;parmetis&amp;lt;/code&amp;gt; also needed to be collected. The &amp;lt;code&amp;gt;SIM_LICENSE_FILE&amp;lt;/code&amp;gt; was copied over from Cooley although, I am sure that this can be obtained from the Viz nodes as well. To obtain the libraries for &amp;lt;code&amp;gt;Zoltan&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;parmetis&amp;lt;/code&amp;gt; on Summit, run:&lt;br /&gt;
&lt;br /&gt;
 cp -r /projects/ASEN5119/SCOREC-core/deps/zoltan .&lt;br /&gt;
 cp -r /projects/ASEN5119/SCOREC-core/deps/parmetis .&lt;br /&gt;
&lt;br /&gt;
from the directory where you wish these to be. All this does is move these from a directory Ken created for his Boundary Layers course to a directory that is more convenient for personal use. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;env_14.0-190626&amp;lt;/code&amp;gt;:&lt;br /&gt;
 ### For CMake.SCOREC&lt;br /&gt;
 export buildRoot=/projects/mabl7046/SCOREC-core/&lt;br /&gt;
 export simModVer=$buildRoot/deps/Simmetrix/14.0-190626beta/&lt;br /&gt;
 export SIM_LICENSE_FILE=$buildRoot/deps/Simmetrix/UCBoulder&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$simModVer&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$simModVer/lib/x64_rhel7_gcc48&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$simModVer/lib/x64_rhel7_gcc48/psKrnl&lt;br /&gt;
 #MIGHT NEED THIS export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:/projects/tools/Simmetrix.develop/simModSuite/PartitionWrapper/lib&lt;br /&gt;
 ### For Zoltan and parmetis&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$buildRoot/deps/zoltan/3.83-gnu49-ompi210/&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$buildRoot/deps/parmetis/4.0.3-gnu492-ompi210&lt;br /&gt;
 # the following is to give the path to PartitionWrappers that have not been installed in the Simmetrix library&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$simModVer/code/PartitionWrapper/lib&lt;br /&gt;
&lt;br /&gt;
====Final Notes====&lt;br /&gt;
Once the scripts are set up, simply run &amp;lt;code&amp;gt;./doConfigure.sh&amp;lt;/code&amp;gt; to compile the code. Please be patient with the process as it is highly unlikely that it will compile successfully the first time you try. Be sure to pay close attention to your directory structure when setting your scripts up and be cognizant of the dependencies between programs.&lt;br /&gt;
&lt;br /&gt;
[[Category: Chef]]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=Chef/Building&amp;diff=1213</id>
		<title>Chef/Building</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=Chef/Building&amp;diff=1213"/>
				<updated>2020-10-24T19:40:19Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* Common Errors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This goes over how to compile Chef and some system specific instructions for doing so.&lt;br /&gt;
&lt;br /&gt;
== General Instruction ==&lt;br /&gt;
&lt;br /&gt;
Here would go some general instructions. I'm not experienced enough to know what they would be.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Common Errors ===&lt;br /&gt;
The following error is very common when Compiling Chef: &amp;lt;code&amp;gt; CMake Error at cmake/FindSimModSuite.cmake:93 (MESSAGE):&lt;br /&gt;
invalid Simmetrix version: 15.0.201010, valid versions are 12.0.190225 to 15.0.200714&amp;lt;/code&amp;gt;. When the is encountered, the SCORE/core source code must be changed. From the build directory vim the file &amp;lt;code&amp;gt;FindSimModSuite.cmake&amp;lt;/code&amp;gt;. This is in the directory &amp;lt;code&amp;gt;/core/cmake&amp;lt;/code&amp;gt;. Scroll down to line 87 and edit &amp;lt;code&amp;gt;set(MAX_VALID_SIM_VERSION 17.0.200714)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== System Specific ==&lt;br /&gt;
&lt;br /&gt;
=== Summit (RMACC) ===&lt;br /&gt;
&lt;br /&gt;
====Copy Simmetrix Libraries from Viz Nodes====&lt;br /&gt;
&lt;br /&gt;
Note that in order for Chef to operate, it must be compiled with the proper Simmetrix libraries. That is to say, there needs to be compatibility between Simmetrix and SCOREC-core for compilation of Chef to run smoothly. Please see [[Building_SCOREC_Core|Building SCOREC Core]] for instructions on cloning the source code. An example (what worked for me) is provided throughout the wiki. From the viz nodes (&amp;lt;code&amp;gt;/projects/tools/SimmetrixTest&amp;lt;/code&amp;gt;), I ran&lt;br /&gt;
&lt;br /&gt;
 scp -r 14.0-190626beta/ &amp;lt;username&amp;gt;@login.rc.colorado.edu:&amp;lt;path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to copy over the directory &amp;lt;code&amp;gt;14.0-190626beta/&amp;lt;/code&amp;gt; to Summit.&lt;br /&gt;
&lt;br /&gt;
====Set Proper Environment====&lt;br /&gt;
&lt;br /&gt;
To start with a clean slate, run &lt;br /&gt;
&lt;br /&gt;
 module purge&lt;br /&gt;
&lt;br /&gt;
This unloads all currently loaded modules.&lt;br /&gt;
&lt;br /&gt;
Next, run&lt;br /&gt;
&lt;br /&gt;
 module load gcc/6.1.0&lt;br /&gt;
 module load openmpi/2.0.1&lt;br /&gt;
&lt;br /&gt;
Note that /6.1.0 and /2.0.1 can be swapped with the intended versions of GCC and OpenMPI the user intends on using.&lt;br /&gt;
&lt;br /&gt;
====Generate Partition Wrapper====&lt;br /&gt;
&lt;br /&gt;
After the directory is copied over to Summit and the environment is set, a Partition Wrapper needs to be generated. Go to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;path&amp;gt;/14.0-190626beta/code/PartitionWrapper&lt;br /&gt;
&lt;br /&gt;
and open the file &lt;br /&gt;
&lt;br /&gt;
 Makefile.custom&lt;br /&gt;
&lt;br /&gt;
Obviously, &amp;lt;code&amp;gt;14.0-190626beta/&amp;lt;/code&amp;gt; is a placeholder and any version of Simmetrix (i.e. the version you used to create the mesh) will work. In this example, I used OpenMPI . I also used &amp;lt;code&amp;gt;mpicc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;mpicxx&amp;lt;/code&amp;gt; as MPI-C and MPI-C++ compilers respectively. If this is what is intended, in the &amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt;, set the following variables:&lt;br /&gt;
&lt;br /&gt;
 PQUAL:= -openmpi&lt;br /&gt;
 CC:=/curc/sw/openmpi/2.0.1/gcc/6.1.0/bin/mpicc &lt;br /&gt;
 CXX:= /curc/sw/openmpi/2.0.1/gcc/6.1.0/bin/mpicxx&lt;br /&gt;
&lt;br /&gt;
Notice the compatibility between the loaded modules and the directory structure above. Once this is set, in the terminal run&lt;br /&gt;
&lt;br /&gt;
 make -f Makefile.custom PARALLEL=openmpi&lt;br /&gt;
&lt;br /&gt;
This will generate a file named &amp;lt;code&amp;gt;libSimPartitionWrapper-openmpi.a&amp;lt;/code&amp;gt;. Then, run&lt;br /&gt;
&lt;br /&gt;
 chmod +x libSimPartitionWrapper-openmpi.a.&lt;br /&gt;
&lt;br /&gt;
Once this is completed, copy this newly generated partition wrapper to &amp;lt;code&amp;gt;../../lib/x64_rhel7_gcc48/&amp;lt;/code&amp;gt;. Unfortunately, the instructions from this point forward will be less explicit as the best way to learn the process is to view example scripts and adapt these to fit your needs. From this point forward, it is assumed that a directory named &amp;lt;code&amp;gt;SCOREC-core&amp;lt;/code&amp;gt; was created and the source code from GitHub was properly cloned in this directory. &lt;br /&gt;
&lt;br /&gt;
====Generating the Scripts to Compile Chef====&lt;br /&gt;
&lt;br /&gt;
In order to run Chef, two scripts must be generated. The naming conventions of the scripts are typically &amp;lt;code&amp;gt;doConfigure.sh&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;env_simmtrix_version&amp;lt;/code&amp;gt;. Below, an example &amp;lt;code&amp;gt;doConfigure.sh&amp;lt;/code&amp;gt; script is shown. This script primarily executes the necessary CMake commands for compilation. It also runs the &amp;lt;code&amp;gt;env_simmtrix_version&amp;lt;/code&amp;gt; script. In the example below, it calls &amp;lt;code&amp;gt;env_14.0-190626&amp;lt;/code&amp;gt;. Note that both of these scripts are located in &amp;lt;code&amp;gt;/projects/mabl7046/SCOREC-core/build_14.0-190626&amp;lt;/code&amp;gt;, or the directory where Chef is to be compiled. Note that the line &amp;lt;code&amp;gt;-DMESHES=&amp;quot;/projects/mabl7046/pumi-meshes&amp;quot;&amp;lt;/code&amp;gt; was copied from a script that implemented successfully on another machine. I recommend looking at scripts on the Viz nodes that worked for the version of Chef you are compiling and copying over the directory analogous to pumi-meshes to summit to implement your script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;doConfigure.sh&amp;lt;/code&amp;gt;:&lt;br /&gt;
 #!/bin/bash -l&lt;br /&gt;
 . /projects/mabl7046/SCOREC-core/build_14.0-190626/env_14.0-190626&lt;br /&gt;
 #unload default modules&lt;br /&gt;
 module purge&lt;br /&gt;
 #load what we need&lt;br /&gt;
 module load gcc/6.1.0&lt;br /&gt;
 module load openmpi/2.0.1&lt;br /&gt;
 module load cmake/3.14.1&lt;br /&gt;
 ### For Chef&lt;br /&gt;
 cmake -DCMAKE_C_COMPILER=mpicc \&lt;br /&gt;
 -DCMAKE_CXX_COMPILER=mpicxx \&lt;br /&gt;
 -DSCOREC_CXX_WARNINGS=ON \&lt;br /&gt;
 -DSCOREC_CXX_OPTIMIZE=ON \&lt;br /&gt;
 -DSCOREC_CXX_SYMBOLS=ON \&lt;br /&gt;
 -DPCU_COMPRESS=ON \&lt;br /&gt;
 -DENABLE_ZOLTAN=ON \&lt;br /&gt;
 -DENABLE_SIMMETRIX=ON \&lt;br /&gt;
 -DSIM_MPI=&amp;quot;openmpi&amp;quot; \&lt;br /&gt;
 -DSIM_PARASOLID=ON \&lt;br /&gt;
 -DMDS_SET_MAX=1024 \&lt;br /&gt;
 -DMDS_ID_TYPE=long \&lt;br /&gt;
 -DIS_TESTING=OFF \&lt;br /&gt;
 -DMESHES=&amp;quot;/projects/mabl7046/pumi-meshes&amp;quot; \&lt;br /&gt;
 -DCMAKE_INSTALL_PREFIX=$PWD/install \&lt;br /&gt;
 ../core&lt;br /&gt;
 #-DMDS_ID_TYPE=int or long&lt;br /&gt;
 sleep 3&lt;br /&gt;
 make -j32&lt;br /&gt;
 make -j32&lt;br /&gt;
&lt;br /&gt;
Below, the script &amp;lt;code&amp;gt;env_14.0-190626&amp;lt;/code&amp;gt; is given. As stated in the comments, this is to set the environment for &amp;lt;code&amp;gt;CMake.SCOREC&amp;lt;/code&amp;gt;. In order to make this script work, the &amp;lt;code&amp;gt;SIM_LICENSE_FILE&amp;lt;/code&amp;gt; (denoted UCBoulder below) needed to be obtained. The libraries for &amp;lt;code&amp;gt;Zoltan&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;parmetis&amp;lt;/code&amp;gt; also needed to be collected. The &amp;lt;code&amp;gt;SIM_LICENSE_FILE&amp;lt;/code&amp;gt; was copied over from Cooley although, I am sure that this can be obtained from the Viz nodes as well. To obtain the libraries for &amp;lt;code&amp;gt;Zoltan&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;parmetis&amp;lt;/code&amp;gt; on Summit, run:&lt;br /&gt;
&lt;br /&gt;
 cp -r /projects/ASEN5119/SCOREC-core/deps/zoltan .&lt;br /&gt;
 cp -r /projects/ASEN5119/SCOREC-core/deps/parmetis .&lt;br /&gt;
&lt;br /&gt;
from the directory where you wish these to be. All this does is move these from a directory Ken created for his Boundary Layers course to a directory that is more convenient for personal use. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;env_14.0-190626&amp;lt;/code&amp;gt;:&lt;br /&gt;
 ### For CMake.SCOREC&lt;br /&gt;
 export buildRoot=/projects/mabl7046/SCOREC-core/&lt;br /&gt;
 export simModVer=$buildRoot/deps/Simmetrix/14.0-190626beta/&lt;br /&gt;
 export SIM_LICENSE_FILE=$buildRoot/deps/Simmetrix/UCBoulder&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$simModVer&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$simModVer/lib/x64_rhel7_gcc48&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$simModVer/lib/x64_rhel7_gcc48/psKrnl&lt;br /&gt;
 #MIGHT NEED THIS export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:/projects/tools/Simmetrix.develop/simModSuite/PartitionWrapper/lib&lt;br /&gt;
 ### For Zoltan and parmetis&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$buildRoot/deps/zoltan/3.83-gnu49-ompi210/&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$buildRoot/deps/parmetis/4.0.3-gnu492-ompi210&lt;br /&gt;
 # the following is to give the path to PartitionWrappers that have not been installed in the Simmetrix library&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$simModVer/code/PartitionWrapper/lib&lt;br /&gt;
&lt;br /&gt;
====Final Notes====&lt;br /&gt;
Once the scripts are set up, simply run &amp;lt;code&amp;gt;./doConfigure.sh&amp;lt;/code&amp;gt; to compile the code. Please be patient with the process as it is highly unlikely that it will compile successfully the first time you try. Be sure to pay close attention to your directory structure when setting your scripts up and be cognizant of the dependencies between programs.&lt;br /&gt;
&lt;br /&gt;
[[Category: Chef]]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=Chef/Building&amp;diff=1212</id>
		<title>Chef/Building</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=Chef/Building&amp;diff=1212"/>
				<updated>2020-10-24T19:39:20Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* General Instruction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This goes over how to compile Chef and some system specific instructions for doing so.&lt;br /&gt;
&lt;br /&gt;
== General Instruction ==&lt;br /&gt;
&lt;br /&gt;
Here would go some general instructions. I'm not experienced enough to know what they would be.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Common Errors ===&lt;br /&gt;
The following error is very common when Compiling Chef: &amp;lt;code&amp;gt; CMake Error at cmake/FindSimModSuite.cmake:93 (MESSAGE):&lt;br /&gt;
invalid Simmetrix version: 15.0.201010, valid versions are 12.0.190225 to 15.0.200714&amp;lt;/code&amp;gt;. When the is encountered, the SCORE/core source code must be changed. From the build directory vim the file &amp;lt;code&amp;gt;FindSimModSuite.cmake&amp;lt;/code&amp;gt;. This is in the directory &amp;lt;code&amp;gt;/core/cmake&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== System Specific ==&lt;br /&gt;
&lt;br /&gt;
=== Summit (RMACC) ===&lt;br /&gt;
&lt;br /&gt;
====Copy Simmetrix Libraries from Viz Nodes====&lt;br /&gt;
&lt;br /&gt;
Note that in order for Chef to operate, it must be compiled with the proper Simmetrix libraries. That is to say, there needs to be compatibility between Simmetrix and SCOREC-core for compilation of Chef to run smoothly. Please see [[Building_SCOREC_Core|Building SCOREC Core]] for instructions on cloning the source code. An example (what worked for me) is provided throughout the wiki. From the viz nodes (&amp;lt;code&amp;gt;/projects/tools/SimmetrixTest&amp;lt;/code&amp;gt;), I ran&lt;br /&gt;
&lt;br /&gt;
 scp -r 14.0-190626beta/ &amp;lt;username&amp;gt;@login.rc.colorado.edu:&amp;lt;path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to copy over the directory &amp;lt;code&amp;gt;14.0-190626beta/&amp;lt;/code&amp;gt; to Summit.&lt;br /&gt;
&lt;br /&gt;
====Set Proper Environment====&lt;br /&gt;
&lt;br /&gt;
To start with a clean slate, run &lt;br /&gt;
&lt;br /&gt;
 module purge&lt;br /&gt;
&lt;br /&gt;
This unloads all currently loaded modules.&lt;br /&gt;
&lt;br /&gt;
Next, run&lt;br /&gt;
&lt;br /&gt;
 module load gcc/6.1.0&lt;br /&gt;
 module load openmpi/2.0.1&lt;br /&gt;
&lt;br /&gt;
Note that /6.1.0 and /2.0.1 can be swapped with the intended versions of GCC and OpenMPI the user intends on using.&lt;br /&gt;
&lt;br /&gt;
====Generate Partition Wrapper====&lt;br /&gt;
&lt;br /&gt;
After the directory is copied over to Summit and the environment is set, a Partition Wrapper needs to be generated. Go to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;path&amp;gt;/14.0-190626beta/code/PartitionWrapper&lt;br /&gt;
&lt;br /&gt;
and open the file &lt;br /&gt;
&lt;br /&gt;
 Makefile.custom&lt;br /&gt;
&lt;br /&gt;
Obviously, &amp;lt;code&amp;gt;14.0-190626beta/&amp;lt;/code&amp;gt; is a placeholder and any version of Simmetrix (i.e. the version you used to create the mesh) will work. In this example, I used OpenMPI . I also used &amp;lt;code&amp;gt;mpicc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;mpicxx&amp;lt;/code&amp;gt; as MPI-C and MPI-C++ compilers respectively. If this is what is intended, in the &amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt;, set the following variables:&lt;br /&gt;
&lt;br /&gt;
 PQUAL:= -openmpi&lt;br /&gt;
 CC:=/curc/sw/openmpi/2.0.1/gcc/6.1.0/bin/mpicc &lt;br /&gt;
 CXX:= /curc/sw/openmpi/2.0.1/gcc/6.1.0/bin/mpicxx&lt;br /&gt;
&lt;br /&gt;
Notice the compatibility between the loaded modules and the directory structure above. Once this is set, in the terminal run&lt;br /&gt;
&lt;br /&gt;
 make -f Makefile.custom PARALLEL=openmpi&lt;br /&gt;
&lt;br /&gt;
This will generate a file named &amp;lt;code&amp;gt;libSimPartitionWrapper-openmpi.a&amp;lt;/code&amp;gt;. Then, run&lt;br /&gt;
&lt;br /&gt;
 chmod +x libSimPartitionWrapper-openmpi.a.&lt;br /&gt;
&lt;br /&gt;
Once this is completed, copy this newly generated partition wrapper to &amp;lt;code&amp;gt;../../lib/x64_rhel7_gcc48/&amp;lt;/code&amp;gt;. Unfortunately, the instructions from this point forward will be less explicit as the best way to learn the process is to view example scripts and adapt these to fit your needs. From this point forward, it is assumed that a directory named &amp;lt;code&amp;gt;SCOREC-core&amp;lt;/code&amp;gt; was created and the source code from GitHub was properly cloned in this directory. &lt;br /&gt;
&lt;br /&gt;
====Generating the Scripts to Compile Chef====&lt;br /&gt;
&lt;br /&gt;
In order to run Chef, two scripts must be generated. The naming conventions of the scripts are typically &amp;lt;code&amp;gt;doConfigure.sh&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;env_simmtrix_version&amp;lt;/code&amp;gt;. Below, an example &amp;lt;code&amp;gt;doConfigure.sh&amp;lt;/code&amp;gt; script is shown. This script primarily executes the necessary CMake commands for compilation. It also runs the &amp;lt;code&amp;gt;env_simmtrix_version&amp;lt;/code&amp;gt; script. In the example below, it calls &amp;lt;code&amp;gt;env_14.0-190626&amp;lt;/code&amp;gt;. Note that both of these scripts are located in &amp;lt;code&amp;gt;/projects/mabl7046/SCOREC-core/build_14.0-190626&amp;lt;/code&amp;gt;, or the directory where Chef is to be compiled. Note that the line &amp;lt;code&amp;gt;-DMESHES=&amp;quot;/projects/mabl7046/pumi-meshes&amp;quot;&amp;lt;/code&amp;gt; was copied from a script that implemented successfully on another machine. I recommend looking at scripts on the Viz nodes that worked for the version of Chef you are compiling and copying over the directory analogous to pumi-meshes to summit to implement your script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;doConfigure.sh&amp;lt;/code&amp;gt;:&lt;br /&gt;
 #!/bin/bash -l&lt;br /&gt;
 . /projects/mabl7046/SCOREC-core/build_14.0-190626/env_14.0-190626&lt;br /&gt;
 #unload default modules&lt;br /&gt;
 module purge&lt;br /&gt;
 #load what we need&lt;br /&gt;
 module load gcc/6.1.0&lt;br /&gt;
 module load openmpi/2.0.1&lt;br /&gt;
 module load cmake/3.14.1&lt;br /&gt;
 ### For Chef&lt;br /&gt;
 cmake -DCMAKE_C_COMPILER=mpicc \&lt;br /&gt;
 -DCMAKE_CXX_COMPILER=mpicxx \&lt;br /&gt;
 -DSCOREC_CXX_WARNINGS=ON \&lt;br /&gt;
 -DSCOREC_CXX_OPTIMIZE=ON \&lt;br /&gt;
 -DSCOREC_CXX_SYMBOLS=ON \&lt;br /&gt;
 -DPCU_COMPRESS=ON \&lt;br /&gt;
 -DENABLE_ZOLTAN=ON \&lt;br /&gt;
 -DENABLE_SIMMETRIX=ON \&lt;br /&gt;
 -DSIM_MPI=&amp;quot;openmpi&amp;quot; \&lt;br /&gt;
 -DSIM_PARASOLID=ON \&lt;br /&gt;
 -DMDS_SET_MAX=1024 \&lt;br /&gt;
 -DMDS_ID_TYPE=long \&lt;br /&gt;
 -DIS_TESTING=OFF \&lt;br /&gt;
 -DMESHES=&amp;quot;/projects/mabl7046/pumi-meshes&amp;quot; \&lt;br /&gt;
 -DCMAKE_INSTALL_PREFIX=$PWD/install \&lt;br /&gt;
 ../core&lt;br /&gt;
 #-DMDS_ID_TYPE=int or long&lt;br /&gt;
 sleep 3&lt;br /&gt;
 make -j32&lt;br /&gt;
 make -j32&lt;br /&gt;
&lt;br /&gt;
Below, the script &amp;lt;code&amp;gt;env_14.0-190626&amp;lt;/code&amp;gt; is given. As stated in the comments, this is to set the environment for &amp;lt;code&amp;gt;CMake.SCOREC&amp;lt;/code&amp;gt;. In order to make this script work, the &amp;lt;code&amp;gt;SIM_LICENSE_FILE&amp;lt;/code&amp;gt; (denoted UCBoulder below) needed to be obtained. The libraries for &amp;lt;code&amp;gt;Zoltan&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;parmetis&amp;lt;/code&amp;gt; also needed to be collected. The &amp;lt;code&amp;gt;SIM_LICENSE_FILE&amp;lt;/code&amp;gt; was copied over from Cooley although, I am sure that this can be obtained from the Viz nodes as well. To obtain the libraries for &amp;lt;code&amp;gt;Zoltan&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;parmetis&amp;lt;/code&amp;gt; on Summit, run:&lt;br /&gt;
&lt;br /&gt;
 cp -r /projects/ASEN5119/SCOREC-core/deps/zoltan .&lt;br /&gt;
 cp -r /projects/ASEN5119/SCOREC-core/deps/parmetis .&lt;br /&gt;
&lt;br /&gt;
from the directory where you wish these to be. All this does is move these from a directory Ken created for his Boundary Layers course to a directory that is more convenient for personal use. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;env_14.0-190626&amp;lt;/code&amp;gt;:&lt;br /&gt;
 ### For CMake.SCOREC&lt;br /&gt;
 export buildRoot=/projects/mabl7046/SCOREC-core/&lt;br /&gt;
 export simModVer=$buildRoot/deps/Simmetrix/14.0-190626beta/&lt;br /&gt;
 export SIM_LICENSE_FILE=$buildRoot/deps/Simmetrix/UCBoulder&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$simModVer&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$simModVer/lib/x64_rhel7_gcc48&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$simModVer/lib/x64_rhel7_gcc48/psKrnl&lt;br /&gt;
 #MIGHT NEED THIS export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:/projects/tools/Simmetrix.develop/simModSuite/PartitionWrapper/lib&lt;br /&gt;
 ### For Zoltan and parmetis&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$buildRoot/deps/zoltan/3.83-gnu49-ompi210/&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$buildRoot/deps/parmetis/4.0.3-gnu492-ompi210&lt;br /&gt;
 # the following is to give the path to PartitionWrappers that have not been installed in the Simmetrix library&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$simModVer/code/PartitionWrapper/lib&lt;br /&gt;
&lt;br /&gt;
====Final Notes====&lt;br /&gt;
Once the scripts are set up, simply run &amp;lt;code&amp;gt;./doConfigure.sh&amp;lt;/code&amp;gt; to compile the code. Please be patient with the process as it is highly unlikely that it will compile successfully the first time you try. Be sure to pay close attention to your directory structure when setting your scripts up and be cognizant of the dependencies between programs.&lt;br /&gt;
&lt;br /&gt;
[[Category: Chef]]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=Chef/Building&amp;diff=1211</id>
		<title>Chef/Building</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=Chef/Building&amp;diff=1211"/>
				<updated>2020-10-24T19:36:31Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* Common Errors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This goes over how to compile Chef and some system specific instructions for doing so.&lt;br /&gt;
&lt;br /&gt;
== General Instruction ==&lt;br /&gt;
&lt;br /&gt;
Here would go some general instructions. I'm not experienced enough to know what they would be.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Common Errors ===&lt;br /&gt;
The following error is very common when Compiling Chef: &amp;lt;code&amp;gt; CMake Error at cmake/FindSimModSuite.cmake:93 (MESSAGE):&lt;br /&gt;
invalid Simmetrix version: 15.0.201010, valid versions are 12.0.190225 to 15.0.200714 &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== System Specific ==&lt;br /&gt;
&lt;br /&gt;
=== Summit (RMACC) ===&lt;br /&gt;
&lt;br /&gt;
====Copy Simmetrix Libraries from Viz Nodes====&lt;br /&gt;
&lt;br /&gt;
Note that in order for Chef to operate, it must be compiled with the proper Simmetrix libraries. That is to say, there needs to be compatibility between Simmetrix and SCOREC-core for compilation of Chef to run smoothly. Please see [[Building_SCOREC_Core|Building SCOREC Core]] for instructions on cloning the source code. An example (what worked for me) is provided throughout the wiki. From the viz nodes (&amp;lt;code&amp;gt;/projects/tools/SimmetrixTest&amp;lt;/code&amp;gt;), I ran&lt;br /&gt;
&lt;br /&gt;
 scp -r 14.0-190626beta/ &amp;lt;username&amp;gt;@login.rc.colorado.edu:&amp;lt;path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to copy over the directory &amp;lt;code&amp;gt;14.0-190626beta/&amp;lt;/code&amp;gt; to Summit.&lt;br /&gt;
&lt;br /&gt;
====Set Proper Environment====&lt;br /&gt;
&lt;br /&gt;
To start with a clean slate, run &lt;br /&gt;
&lt;br /&gt;
 module purge&lt;br /&gt;
&lt;br /&gt;
This unloads all currently loaded modules.&lt;br /&gt;
&lt;br /&gt;
Next, run&lt;br /&gt;
&lt;br /&gt;
 module load gcc/6.1.0&lt;br /&gt;
 module load openmpi/2.0.1&lt;br /&gt;
&lt;br /&gt;
Note that /6.1.0 and /2.0.1 can be swapped with the intended versions of GCC and OpenMPI the user intends on using.&lt;br /&gt;
&lt;br /&gt;
====Generate Partition Wrapper====&lt;br /&gt;
&lt;br /&gt;
After the directory is copied over to Summit and the environment is set, a Partition Wrapper needs to be generated. Go to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;path&amp;gt;/14.0-190626beta/code/PartitionWrapper&lt;br /&gt;
&lt;br /&gt;
and open the file &lt;br /&gt;
&lt;br /&gt;
 Makefile.custom&lt;br /&gt;
&lt;br /&gt;
Obviously, &amp;lt;code&amp;gt;14.0-190626beta/&amp;lt;/code&amp;gt; is a placeholder and any version of Simmetrix (i.e. the version you used to create the mesh) will work. In this example, I used OpenMPI . I also used &amp;lt;code&amp;gt;mpicc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;mpicxx&amp;lt;/code&amp;gt; as MPI-C and MPI-C++ compilers respectively. If this is what is intended, in the &amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt;, set the following variables:&lt;br /&gt;
&lt;br /&gt;
 PQUAL:= -openmpi&lt;br /&gt;
 CC:=/curc/sw/openmpi/2.0.1/gcc/6.1.0/bin/mpicc &lt;br /&gt;
 CXX:= /curc/sw/openmpi/2.0.1/gcc/6.1.0/bin/mpicxx&lt;br /&gt;
&lt;br /&gt;
Notice the compatibility between the loaded modules and the directory structure above. Once this is set, in the terminal run&lt;br /&gt;
&lt;br /&gt;
 make -f Makefile.custom PARALLEL=openmpi&lt;br /&gt;
&lt;br /&gt;
This will generate a file named &amp;lt;code&amp;gt;libSimPartitionWrapper-openmpi.a&amp;lt;/code&amp;gt;. Then, run&lt;br /&gt;
&lt;br /&gt;
 chmod +x libSimPartitionWrapper-openmpi.a.&lt;br /&gt;
&lt;br /&gt;
Once this is completed, copy this newly generated partition wrapper to &amp;lt;code&amp;gt;../../lib/x64_rhel7_gcc48/&amp;lt;/code&amp;gt;. Unfortunately, the instructions from this point forward will be less explicit as the best way to learn the process is to view example scripts and adapt these to fit your needs. From this point forward, it is assumed that a directory named &amp;lt;code&amp;gt;SCOREC-core&amp;lt;/code&amp;gt; was created and the source code from GitHub was properly cloned in this directory. &lt;br /&gt;
&lt;br /&gt;
====Generating the Scripts to Compile Chef====&lt;br /&gt;
&lt;br /&gt;
In order to run Chef, two scripts must be generated. The naming conventions of the scripts are typically &amp;lt;code&amp;gt;doConfigure.sh&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;env_simmtrix_version&amp;lt;/code&amp;gt;. Below, an example &amp;lt;code&amp;gt;doConfigure.sh&amp;lt;/code&amp;gt; script is shown. This script primarily executes the necessary CMake commands for compilation. It also runs the &amp;lt;code&amp;gt;env_simmtrix_version&amp;lt;/code&amp;gt; script. In the example below, it calls &amp;lt;code&amp;gt;env_14.0-190626&amp;lt;/code&amp;gt;. Note that both of these scripts are located in &amp;lt;code&amp;gt;/projects/mabl7046/SCOREC-core/build_14.0-190626&amp;lt;/code&amp;gt;, or the directory where Chef is to be compiled. Note that the line &amp;lt;code&amp;gt;-DMESHES=&amp;quot;/projects/mabl7046/pumi-meshes&amp;quot;&amp;lt;/code&amp;gt; was copied from a script that implemented successfully on another machine. I recommend looking at scripts on the Viz nodes that worked for the version of Chef you are compiling and copying over the directory analogous to pumi-meshes to summit to implement your script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;doConfigure.sh&amp;lt;/code&amp;gt;:&lt;br /&gt;
 #!/bin/bash -l&lt;br /&gt;
 . /projects/mabl7046/SCOREC-core/build_14.0-190626/env_14.0-190626&lt;br /&gt;
 #unload default modules&lt;br /&gt;
 module purge&lt;br /&gt;
 #load what we need&lt;br /&gt;
 module load gcc/6.1.0&lt;br /&gt;
 module load openmpi/2.0.1&lt;br /&gt;
 module load cmake/3.14.1&lt;br /&gt;
 ### For Chef&lt;br /&gt;
 cmake -DCMAKE_C_COMPILER=mpicc \&lt;br /&gt;
 -DCMAKE_CXX_COMPILER=mpicxx \&lt;br /&gt;
 -DSCOREC_CXX_WARNINGS=ON \&lt;br /&gt;
 -DSCOREC_CXX_OPTIMIZE=ON \&lt;br /&gt;
 -DSCOREC_CXX_SYMBOLS=ON \&lt;br /&gt;
 -DPCU_COMPRESS=ON \&lt;br /&gt;
 -DENABLE_ZOLTAN=ON \&lt;br /&gt;
 -DENABLE_SIMMETRIX=ON \&lt;br /&gt;
 -DSIM_MPI=&amp;quot;openmpi&amp;quot; \&lt;br /&gt;
 -DSIM_PARASOLID=ON \&lt;br /&gt;
 -DMDS_SET_MAX=1024 \&lt;br /&gt;
 -DMDS_ID_TYPE=long \&lt;br /&gt;
 -DIS_TESTING=OFF \&lt;br /&gt;
 -DMESHES=&amp;quot;/projects/mabl7046/pumi-meshes&amp;quot; \&lt;br /&gt;
 -DCMAKE_INSTALL_PREFIX=$PWD/install \&lt;br /&gt;
 ../core&lt;br /&gt;
 #-DMDS_ID_TYPE=int or long&lt;br /&gt;
 sleep 3&lt;br /&gt;
 make -j32&lt;br /&gt;
 make -j32&lt;br /&gt;
&lt;br /&gt;
Below, the script &amp;lt;code&amp;gt;env_14.0-190626&amp;lt;/code&amp;gt; is given. As stated in the comments, this is to set the environment for &amp;lt;code&amp;gt;CMake.SCOREC&amp;lt;/code&amp;gt;. In order to make this script work, the &amp;lt;code&amp;gt;SIM_LICENSE_FILE&amp;lt;/code&amp;gt; (denoted UCBoulder below) needed to be obtained. The libraries for &amp;lt;code&amp;gt;Zoltan&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;parmetis&amp;lt;/code&amp;gt; also needed to be collected. The &amp;lt;code&amp;gt;SIM_LICENSE_FILE&amp;lt;/code&amp;gt; was copied over from Cooley although, I am sure that this can be obtained from the Viz nodes as well. To obtain the libraries for &amp;lt;code&amp;gt;Zoltan&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;parmetis&amp;lt;/code&amp;gt; on Summit, run:&lt;br /&gt;
&lt;br /&gt;
 cp -r /projects/ASEN5119/SCOREC-core/deps/zoltan .&lt;br /&gt;
 cp -r /projects/ASEN5119/SCOREC-core/deps/parmetis .&lt;br /&gt;
&lt;br /&gt;
from the directory where you wish these to be. All this does is move these from a directory Ken created for his Boundary Layers course to a directory that is more convenient for personal use. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;env_14.0-190626&amp;lt;/code&amp;gt;:&lt;br /&gt;
 ### For CMake.SCOREC&lt;br /&gt;
 export buildRoot=/projects/mabl7046/SCOREC-core/&lt;br /&gt;
 export simModVer=$buildRoot/deps/Simmetrix/14.0-190626beta/&lt;br /&gt;
 export SIM_LICENSE_FILE=$buildRoot/deps/Simmetrix/UCBoulder&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$simModVer&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$simModVer/lib/x64_rhel7_gcc48&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$simModVer/lib/x64_rhel7_gcc48/psKrnl&lt;br /&gt;
 #MIGHT NEED THIS export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:/projects/tools/Simmetrix.develop/simModSuite/PartitionWrapper/lib&lt;br /&gt;
 ### For Zoltan and parmetis&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$buildRoot/deps/zoltan/3.83-gnu49-ompi210/&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$buildRoot/deps/parmetis/4.0.3-gnu492-ompi210&lt;br /&gt;
 # the following is to give the path to PartitionWrappers that have not been installed in the Simmetrix library&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$simModVer/code/PartitionWrapper/lib&lt;br /&gt;
&lt;br /&gt;
====Final Notes====&lt;br /&gt;
Once the scripts are set up, simply run &amp;lt;code&amp;gt;./doConfigure.sh&amp;lt;/code&amp;gt; to compile the code. Please be patient with the process as it is highly unlikely that it will compile successfully the first time you try. Be sure to pay close attention to your directory structure when setting your scripts up and be cognizant of the dependencies between programs.&lt;br /&gt;
&lt;br /&gt;
[[Category: Chef]]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=Chef/Building&amp;diff=1210</id>
		<title>Chef/Building</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=Chef/Building&amp;diff=1210"/>
				<updated>2020-10-24T19:36:01Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* Common Errors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This goes over how to compile Chef and some system specific instructions for doing so.&lt;br /&gt;
&lt;br /&gt;
== General Instruction ==&lt;br /&gt;
&lt;br /&gt;
Here would go some general instructions. I'm not experienced enough to know what they would be.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Common Errors ===&lt;br /&gt;
The following error is very common when Compiling Chef: &amp;lt;code&amp;gt; CMake Error at cmake/FindSimModSuite.cmake:93 (MESSAGE):&lt;br /&gt;
invalid Simmetrix version: 15.0.201010, valid versions are 12.0.190225 to 15.0.200714 &amp;lt;\code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== System Specific ==&lt;br /&gt;
&lt;br /&gt;
=== Summit (RMACC) ===&lt;br /&gt;
&lt;br /&gt;
====Copy Simmetrix Libraries from Viz Nodes====&lt;br /&gt;
&lt;br /&gt;
Note that in order for Chef to operate, it must be compiled with the proper Simmetrix libraries. That is to say, there needs to be compatibility between Simmetrix and SCOREC-core for compilation of Chef to run smoothly. Please see [[Building_SCOREC_Core|Building SCOREC Core]] for instructions on cloning the source code. An example (what worked for me) is provided throughout the wiki. From the viz nodes (&amp;lt;code&amp;gt;/projects/tools/SimmetrixTest&amp;lt;/code&amp;gt;), I ran&lt;br /&gt;
&lt;br /&gt;
 scp -r 14.0-190626beta/ &amp;lt;username&amp;gt;@login.rc.colorado.edu:&amp;lt;path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to copy over the directory &amp;lt;code&amp;gt;14.0-190626beta/&amp;lt;/code&amp;gt; to Summit.&lt;br /&gt;
&lt;br /&gt;
====Set Proper Environment====&lt;br /&gt;
&lt;br /&gt;
To start with a clean slate, run &lt;br /&gt;
&lt;br /&gt;
 module purge&lt;br /&gt;
&lt;br /&gt;
This unloads all currently loaded modules.&lt;br /&gt;
&lt;br /&gt;
Next, run&lt;br /&gt;
&lt;br /&gt;
 module load gcc/6.1.0&lt;br /&gt;
 module load openmpi/2.0.1&lt;br /&gt;
&lt;br /&gt;
Note that /6.1.0 and /2.0.1 can be swapped with the intended versions of GCC and OpenMPI the user intends on using.&lt;br /&gt;
&lt;br /&gt;
====Generate Partition Wrapper====&lt;br /&gt;
&lt;br /&gt;
After the directory is copied over to Summit and the environment is set, a Partition Wrapper needs to be generated. Go to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;path&amp;gt;/14.0-190626beta/code/PartitionWrapper&lt;br /&gt;
&lt;br /&gt;
and open the file &lt;br /&gt;
&lt;br /&gt;
 Makefile.custom&lt;br /&gt;
&lt;br /&gt;
Obviously, &amp;lt;code&amp;gt;14.0-190626beta/&amp;lt;/code&amp;gt; is a placeholder and any version of Simmetrix (i.e. the version you used to create the mesh) will work. In this example, I used OpenMPI . I also used &amp;lt;code&amp;gt;mpicc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;mpicxx&amp;lt;/code&amp;gt; as MPI-C and MPI-C++ compilers respectively. If this is what is intended, in the &amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt;, set the following variables:&lt;br /&gt;
&lt;br /&gt;
 PQUAL:= -openmpi&lt;br /&gt;
 CC:=/curc/sw/openmpi/2.0.1/gcc/6.1.0/bin/mpicc &lt;br /&gt;
 CXX:= /curc/sw/openmpi/2.0.1/gcc/6.1.0/bin/mpicxx&lt;br /&gt;
&lt;br /&gt;
Notice the compatibility between the loaded modules and the directory structure above. Once this is set, in the terminal run&lt;br /&gt;
&lt;br /&gt;
 make -f Makefile.custom PARALLEL=openmpi&lt;br /&gt;
&lt;br /&gt;
This will generate a file named &amp;lt;code&amp;gt;libSimPartitionWrapper-openmpi.a&amp;lt;/code&amp;gt;. Then, run&lt;br /&gt;
&lt;br /&gt;
 chmod +x libSimPartitionWrapper-openmpi.a.&lt;br /&gt;
&lt;br /&gt;
Once this is completed, copy this newly generated partition wrapper to &amp;lt;code&amp;gt;../../lib/x64_rhel7_gcc48/&amp;lt;/code&amp;gt;. Unfortunately, the instructions from this point forward will be less explicit as the best way to learn the process is to view example scripts and adapt these to fit your needs. From this point forward, it is assumed that a directory named &amp;lt;code&amp;gt;SCOREC-core&amp;lt;/code&amp;gt; was created and the source code from GitHub was properly cloned in this directory. &lt;br /&gt;
&lt;br /&gt;
====Generating the Scripts to Compile Chef====&lt;br /&gt;
&lt;br /&gt;
In order to run Chef, two scripts must be generated. The naming conventions of the scripts are typically &amp;lt;code&amp;gt;doConfigure.sh&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;env_simmtrix_version&amp;lt;/code&amp;gt;. Below, an example &amp;lt;code&amp;gt;doConfigure.sh&amp;lt;/code&amp;gt; script is shown. This script primarily executes the necessary CMake commands for compilation. It also runs the &amp;lt;code&amp;gt;env_simmtrix_version&amp;lt;/code&amp;gt; script. In the example below, it calls &amp;lt;code&amp;gt;env_14.0-190626&amp;lt;/code&amp;gt;. Note that both of these scripts are located in &amp;lt;code&amp;gt;/projects/mabl7046/SCOREC-core/build_14.0-190626&amp;lt;/code&amp;gt;, or the directory where Chef is to be compiled. Note that the line &amp;lt;code&amp;gt;-DMESHES=&amp;quot;/projects/mabl7046/pumi-meshes&amp;quot;&amp;lt;/code&amp;gt; was copied from a script that implemented successfully on another machine. I recommend looking at scripts on the Viz nodes that worked for the version of Chef you are compiling and copying over the directory analogous to pumi-meshes to summit to implement your script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;doConfigure.sh&amp;lt;/code&amp;gt;:&lt;br /&gt;
 #!/bin/bash -l&lt;br /&gt;
 . /projects/mabl7046/SCOREC-core/build_14.0-190626/env_14.0-190626&lt;br /&gt;
 #unload default modules&lt;br /&gt;
 module purge&lt;br /&gt;
 #load what we need&lt;br /&gt;
 module load gcc/6.1.0&lt;br /&gt;
 module load openmpi/2.0.1&lt;br /&gt;
 module load cmake/3.14.1&lt;br /&gt;
 ### For Chef&lt;br /&gt;
 cmake -DCMAKE_C_COMPILER=mpicc \&lt;br /&gt;
 -DCMAKE_CXX_COMPILER=mpicxx \&lt;br /&gt;
 -DSCOREC_CXX_WARNINGS=ON \&lt;br /&gt;
 -DSCOREC_CXX_OPTIMIZE=ON \&lt;br /&gt;
 -DSCOREC_CXX_SYMBOLS=ON \&lt;br /&gt;
 -DPCU_COMPRESS=ON \&lt;br /&gt;
 -DENABLE_ZOLTAN=ON \&lt;br /&gt;
 -DENABLE_SIMMETRIX=ON \&lt;br /&gt;
 -DSIM_MPI=&amp;quot;openmpi&amp;quot; \&lt;br /&gt;
 -DSIM_PARASOLID=ON \&lt;br /&gt;
 -DMDS_SET_MAX=1024 \&lt;br /&gt;
 -DMDS_ID_TYPE=long \&lt;br /&gt;
 -DIS_TESTING=OFF \&lt;br /&gt;
 -DMESHES=&amp;quot;/projects/mabl7046/pumi-meshes&amp;quot; \&lt;br /&gt;
 -DCMAKE_INSTALL_PREFIX=$PWD/install \&lt;br /&gt;
 ../core&lt;br /&gt;
 #-DMDS_ID_TYPE=int or long&lt;br /&gt;
 sleep 3&lt;br /&gt;
 make -j32&lt;br /&gt;
 make -j32&lt;br /&gt;
&lt;br /&gt;
Below, the script &amp;lt;code&amp;gt;env_14.0-190626&amp;lt;/code&amp;gt; is given. As stated in the comments, this is to set the environment for &amp;lt;code&amp;gt;CMake.SCOREC&amp;lt;/code&amp;gt;. In order to make this script work, the &amp;lt;code&amp;gt;SIM_LICENSE_FILE&amp;lt;/code&amp;gt; (denoted UCBoulder below) needed to be obtained. The libraries for &amp;lt;code&amp;gt;Zoltan&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;parmetis&amp;lt;/code&amp;gt; also needed to be collected. The &amp;lt;code&amp;gt;SIM_LICENSE_FILE&amp;lt;/code&amp;gt; was copied over from Cooley although, I am sure that this can be obtained from the Viz nodes as well. To obtain the libraries for &amp;lt;code&amp;gt;Zoltan&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;parmetis&amp;lt;/code&amp;gt; on Summit, run:&lt;br /&gt;
&lt;br /&gt;
 cp -r /projects/ASEN5119/SCOREC-core/deps/zoltan .&lt;br /&gt;
 cp -r /projects/ASEN5119/SCOREC-core/deps/parmetis .&lt;br /&gt;
&lt;br /&gt;
from the directory where you wish these to be. All this does is move these from a directory Ken created for his Boundary Layers course to a directory that is more convenient for personal use. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;env_14.0-190626&amp;lt;/code&amp;gt;:&lt;br /&gt;
 ### For CMake.SCOREC&lt;br /&gt;
 export buildRoot=/projects/mabl7046/SCOREC-core/&lt;br /&gt;
 export simModVer=$buildRoot/deps/Simmetrix/14.0-190626beta/&lt;br /&gt;
 export SIM_LICENSE_FILE=$buildRoot/deps/Simmetrix/UCBoulder&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$simModVer&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$simModVer/lib/x64_rhel7_gcc48&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$simModVer/lib/x64_rhel7_gcc48/psKrnl&lt;br /&gt;
 #MIGHT NEED THIS export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:/projects/tools/Simmetrix.develop/simModSuite/PartitionWrapper/lib&lt;br /&gt;
 ### For Zoltan and parmetis&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$buildRoot/deps/zoltan/3.83-gnu49-ompi210/&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$buildRoot/deps/parmetis/4.0.3-gnu492-ompi210&lt;br /&gt;
 # the following is to give the path to PartitionWrappers that have not been installed in the Simmetrix library&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$simModVer/code/PartitionWrapper/lib&lt;br /&gt;
&lt;br /&gt;
====Final Notes====&lt;br /&gt;
Once the scripts are set up, simply run &amp;lt;code&amp;gt;./doConfigure.sh&amp;lt;/code&amp;gt; to compile the code. Please be patient with the process as it is highly unlikely that it will compile successfully the first time you try. Be sure to pay close attention to your directory structure when setting your scripts up and be cognizant of the dependencies between programs.&lt;br /&gt;
&lt;br /&gt;
[[Category: Chef]]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=Chef/Building&amp;diff=1209</id>
		<title>Chef/Building</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=Chef/Building&amp;diff=1209"/>
				<updated>2020-10-24T19:35:14Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* Common Errors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This goes over how to compile Chef and some system specific instructions for doing so.&lt;br /&gt;
&lt;br /&gt;
== General Instruction ==&lt;br /&gt;
&lt;br /&gt;
Here would go some general instructions. I'm not experienced enough to know what they would be.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Common Errors ===&lt;br /&gt;
The following error is very common when Compiling Chef: &amp;lt;code&amp;gt; CMake Error at cmake/FindSimModSuite.cmake:93 (MESSAGE):&lt;br /&gt;
invalid Simmetrix version: 15.0.201010, valid versions are 12.0.190225 to 15.0.200714 &amp;lt;\code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== System Specific ==&lt;br /&gt;
&lt;br /&gt;
=== Summit (RMACC) ===&lt;br /&gt;
&lt;br /&gt;
====Copy Simmetrix Libraries from Viz Nodes====&lt;br /&gt;
&lt;br /&gt;
Note that in order for Chef to operate, it must be compiled with the proper Simmetrix libraries. That is to say, there needs to be compatibility between Simmetrix and SCOREC-core for compilation of Chef to run smoothly. Please see [[Building_SCOREC_Core|Building SCOREC Core]] for instructions on cloning the source code. An example (what worked for me) is provided throughout the wiki. From the viz nodes (&amp;lt;code&amp;gt;/projects/tools/SimmetrixTest&amp;lt;/code&amp;gt;), I ran&lt;br /&gt;
&lt;br /&gt;
 scp -r 14.0-190626beta/ &amp;lt;username&amp;gt;@login.rc.colorado.edu:&amp;lt;path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to copy over the directory &amp;lt;code&amp;gt;14.0-190626beta/&amp;lt;/code&amp;gt; to Summit.&lt;br /&gt;
&lt;br /&gt;
====Set Proper Environment====&lt;br /&gt;
&lt;br /&gt;
To start with a clean slate, run &lt;br /&gt;
&lt;br /&gt;
 module purge&lt;br /&gt;
&lt;br /&gt;
This unloads all currently loaded modules.&lt;br /&gt;
&lt;br /&gt;
Next, run&lt;br /&gt;
&lt;br /&gt;
 module load gcc/6.1.0&lt;br /&gt;
 module load openmpi/2.0.1&lt;br /&gt;
&lt;br /&gt;
Note that /6.1.0 and /2.0.1 can be swapped with the intended versions of GCC and OpenMPI the user intends on using.&lt;br /&gt;
&lt;br /&gt;
====Generate Partition Wrapper====&lt;br /&gt;
&lt;br /&gt;
After the directory is copied over to Summit and the environment is set, a Partition Wrapper needs to be generated. Go to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;path&amp;gt;/14.0-190626beta/code/PartitionWrapper&lt;br /&gt;
&lt;br /&gt;
and open the file &lt;br /&gt;
&lt;br /&gt;
 Makefile.custom&lt;br /&gt;
&lt;br /&gt;
Obviously, &amp;lt;code&amp;gt;14.0-190626beta/&amp;lt;/code&amp;gt; is a placeholder and any version of Simmetrix (i.e. the version you used to create the mesh) will work. In this example, I used OpenMPI . I also used &amp;lt;code&amp;gt;mpicc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;mpicxx&amp;lt;/code&amp;gt; as MPI-C and MPI-C++ compilers respectively. If this is what is intended, in the &amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt;, set the following variables:&lt;br /&gt;
&lt;br /&gt;
 PQUAL:= -openmpi&lt;br /&gt;
 CC:=/curc/sw/openmpi/2.0.1/gcc/6.1.0/bin/mpicc &lt;br /&gt;
 CXX:= /curc/sw/openmpi/2.0.1/gcc/6.1.0/bin/mpicxx&lt;br /&gt;
&lt;br /&gt;
Notice the compatibility between the loaded modules and the directory structure above. Once this is set, in the terminal run&lt;br /&gt;
&lt;br /&gt;
 make -f Makefile.custom PARALLEL=openmpi&lt;br /&gt;
&lt;br /&gt;
This will generate a file named &amp;lt;code&amp;gt;libSimPartitionWrapper-openmpi.a&amp;lt;/code&amp;gt;. Then, run&lt;br /&gt;
&lt;br /&gt;
 chmod +x libSimPartitionWrapper-openmpi.a.&lt;br /&gt;
&lt;br /&gt;
Once this is completed, copy this newly generated partition wrapper to &amp;lt;code&amp;gt;../../lib/x64_rhel7_gcc48/&amp;lt;/code&amp;gt;. Unfortunately, the instructions from this point forward will be less explicit as the best way to learn the process is to view example scripts and adapt these to fit your needs. From this point forward, it is assumed that a directory named &amp;lt;code&amp;gt;SCOREC-core&amp;lt;/code&amp;gt; was created and the source code from GitHub was properly cloned in this directory. &lt;br /&gt;
&lt;br /&gt;
====Generating the Scripts to Compile Chef====&lt;br /&gt;
&lt;br /&gt;
In order to run Chef, two scripts must be generated. The naming conventions of the scripts are typically &amp;lt;code&amp;gt;doConfigure.sh&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;env_simmtrix_version&amp;lt;/code&amp;gt;. Below, an example &amp;lt;code&amp;gt;doConfigure.sh&amp;lt;/code&amp;gt; script is shown. This script primarily executes the necessary CMake commands for compilation. It also runs the &amp;lt;code&amp;gt;env_simmtrix_version&amp;lt;/code&amp;gt; script. In the example below, it calls &amp;lt;code&amp;gt;env_14.0-190626&amp;lt;/code&amp;gt;. Note that both of these scripts are located in &amp;lt;code&amp;gt;/projects/mabl7046/SCOREC-core/build_14.0-190626&amp;lt;/code&amp;gt;, or the directory where Chef is to be compiled. Note that the line &amp;lt;code&amp;gt;-DMESHES=&amp;quot;/projects/mabl7046/pumi-meshes&amp;quot;&amp;lt;/code&amp;gt; was copied from a script that implemented successfully on another machine. I recommend looking at scripts on the Viz nodes that worked for the version of Chef you are compiling and copying over the directory analogous to pumi-meshes to summit to implement your script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;doConfigure.sh&amp;lt;/code&amp;gt;:&lt;br /&gt;
 #!/bin/bash -l&lt;br /&gt;
 . /projects/mabl7046/SCOREC-core/build_14.0-190626/env_14.0-190626&lt;br /&gt;
 #unload default modules&lt;br /&gt;
 module purge&lt;br /&gt;
 #load what we need&lt;br /&gt;
 module load gcc/6.1.0&lt;br /&gt;
 module load openmpi/2.0.1&lt;br /&gt;
 module load cmake/3.14.1&lt;br /&gt;
 ### For Chef&lt;br /&gt;
 cmake -DCMAKE_C_COMPILER=mpicc \&lt;br /&gt;
 -DCMAKE_CXX_COMPILER=mpicxx \&lt;br /&gt;
 -DSCOREC_CXX_WARNINGS=ON \&lt;br /&gt;
 -DSCOREC_CXX_OPTIMIZE=ON \&lt;br /&gt;
 -DSCOREC_CXX_SYMBOLS=ON \&lt;br /&gt;
 -DPCU_COMPRESS=ON \&lt;br /&gt;
 -DENABLE_ZOLTAN=ON \&lt;br /&gt;
 -DENABLE_SIMMETRIX=ON \&lt;br /&gt;
 -DSIM_MPI=&amp;quot;openmpi&amp;quot; \&lt;br /&gt;
 -DSIM_PARASOLID=ON \&lt;br /&gt;
 -DMDS_SET_MAX=1024 \&lt;br /&gt;
 -DMDS_ID_TYPE=long \&lt;br /&gt;
 -DIS_TESTING=OFF \&lt;br /&gt;
 -DMESHES=&amp;quot;/projects/mabl7046/pumi-meshes&amp;quot; \&lt;br /&gt;
 -DCMAKE_INSTALL_PREFIX=$PWD/install \&lt;br /&gt;
 ../core&lt;br /&gt;
 #-DMDS_ID_TYPE=int or long&lt;br /&gt;
 sleep 3&lt;br /&gt;
 make -j32&lt;br /&gt;
 make -j32&lt;br /&gt;
&lt;br /&gt;
Below, the script &amp;lt;code&amp;gt;env_14.0-190626&amp;lt;/code&amp;gt; is given. As stated in the comments, this is to set the environment for &amp;lt;code&amp;gt;CMake.SCOREC&amp;lt;/code&amp;gt;. In order to make this script work, the &amp;lt;code&amp;gt;SIM_LICENSE_FILE&amp;lt;/code&amp;gt; (denoted UCBoulder below) needed to be obtained. The libraries for &amp;lt;code&amp;gt;Zoltan&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;parmetis&amp;lt;/code&amp;gt; also needed to be collected. The &amp;lt;code&amp;gt;SIM_LICENSE_FILE&amp;lt;/code&amp;gt; was copied over from Cooley although, I am sure that this can be obtained from the Viz nodes as well. To obtain the libraries for &amp;lt;code&amp;gt;Zoltan&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;parmetis&amp;lt;/code&amp;gt; on Summit, run:&lt;br /&gt;
&lt;br /&gt;
 cp -r /projects/ASEN5119/SCOREC-core/deps/zoltan .&lt;br /&gt;
 cp -r /projects/ASEN5119/SCOREC-core/deps/parmetis .&lt;br /&gt;
&lt;br /&gt;
from the directory where you wish these to be. All this does is move these from a directory Ken created for his Boundary Layers course to a directory that is more convenient for personal use. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;env_14.0-190626&amp;lt;/code&amp;gt;:&lt;br /&gt;
 ### For CMake.SCOREC&lt;br /&gt;
 export buildRoot=/projects/mabl7046/SCOREC-core/&lt;br /&gt;
 export simModVer=$buildRoot/deps/Simmetrix/14.0-190626beta/&lt;br /&gt;
 export SIM_LICENSE_FILE=$buildRoot/deps/Simmetrix/UCBoulder&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$simModVer&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$simModVer/lib/x64_rhel7_gcc48&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$simModVer/lib/x64_rhel7_gcc48/psKrnl&lt;br /&gt;
 #MIGHT NEED THIS export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:/projects/tools/Simmetrix.develop/simModSuite/PartitionWrapper/lib&lt;br /&gt;
 ### For Zoltan and parmetis&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$buildRoot/deps/zoltan/3.83-gnu49-ompi210/&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$buildRoot/deps/parmetis/4.0.3-gnu492-ompi210&lt;br /&gt;
 # the following is to give the path to PartitionWrappers that have not been installed in the Simmetrix library&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$simModVer/code/PartitionWrapper/lib&lt;br /&gt;
&lt;br /&gt;
====Final Notes====&lt;br /&gt;
Once the scripts are set up, simply run &amp;lt;code&amp;gt;./doConfigure.sh&amp;lt;/code&amp;gt; to compile the code. Please be patient with the process as it is highly unlikely that it will compile successfully the first time you try. Be sure to pay close attention to your directory structure when setting your scripts up and be cognizant of the dependencies between programs.&lt;br /&gt;
&lt;br /&gt;
[[Category: Chef]]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=Chef/Building&amp;diff=1208</id>
		<title>Chef/Building</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=Chef/Building&amp;diff=1208"/>
				<updated>2020-10-24T19:24:47Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* General Instruction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This goes over how to compile Chef and some system specific instructions for doing so.&lt;br /&gt;
&lt;br /&gt;
== General Instruction ==&lt;br /&gt;
&lt;br /&gt;
Here would go some general instructions. I'm not experienced enough to know what they would be.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Common Errors ===&lt;br /&gt;
&lt;br /&gt;
== System Specific ==&lt;br /&gt;
&lt;br /&gt;
=== Summit (RMACC) ===&lt;br /&gt;
&lt;br /&gt;
====Copy Simmetrix Libraries from Viz Nodes====&lt;br /&gt;
&lt;br /&gt;
Note that in order for Chef to operate, it must be compiled with the proper Simmetrix libraries. That is to say, there needs to be compatibility between Simmetrix and SCOREC-core for compilation of Chef to run smoothly. Please see [[Building_SCOREC_Core|Building SCOREC Core]] for instructions on cloning the source code. An example (what worked for me) is provided throughout the wiki. From the viz nodes (&amp;lt;code&amp;gt;/projects/tools/SimmetrixTest&amp;lt;/code&amp;gt;), I ran&lt;br /&gt;
&lt;br /&gt;
 scp -r 14.0-190626beta/ &amp;lt;username&amp;gt;@login.rc.colorado.edu:&amp;lt;path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to copy over the directory &amp;lt;code&amp;gt;14.0-190626beta/&amp;lt;/code&amp;gt; to Summit.&lt;br /&gt;
&lt;br /&gt;
====Set Proper Environment====&lt;br /&gt;
&lt;br /&gt;
To start with a clean slate, run &lt;br /&gt;
&lt;br /&gt;
 module purge&lt;br /&gt;
&lt;br /&gt;
This unloads all currently loaded modules.&lt;br /&gt;
&lt;br /&gt;
Next, run&lt;br /&gt;
&lt;br /&gt;
 module load gcc/6.1.0&lt;br /&gt;
 module load openmpi/2.0.1&lt;br /&gt;
&lt;br /&gt;
Note that /6.1.0 and /2.0.1 can be swapped with the intended versions of GCC and OpenMPI the user intends on using.&lt;br /&gt;
&lt;br /&gt;
====Generate Partition Wrapper====&lt;br /&gt;
&lt;br /&gt;
After the directory is copied over to Summit and the environment is set, a Partition Wrapper needs to be generated. Go to:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;path&amp;gt;/14.0-190626beta/code/PartitionWrapper&lt;br /&gt;
&lt;br /&gt;
and open the file &lt;br /&gt;
&lt;br /&gt;
 Makefile.custom&lt;br /&gt;
&lt;br /&gt;
Obviously, &amp;lt;code&amp;gt;14.0-190626beta/&amp;lt;/code&amp;gt; is a placeholder and any version of Simmetrix (i.e. the version you used to create the mesh) will work. In this example, I used OpenMPI . I also used &amp;lt;code&amp;gt;mpicc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;mpicxx&amp;lt;/code&amp;gt; as MPI-C and MPI-C++ compilers respectively. If this is what is intended, in the &amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt;, set the following variables:&lt;br /&gt;
&lt;br /&gt;
 PQUAL:= -openmpi&lt;br /&gt;
 CC:=/curc/sw/openmpi/2.0.1/gcc/6.1.0/bin/mpicc &lt;br /&gt;
 CXX:= /curc/sw/openmpi/2.0.1/gcc/6.1.0/bin/mpicxx&lt;br /&gt;
&lt;br /&gt;
Notice the compatibility between the loaded modules and the directory structure above. Once this is set, in the terminal run&lt;br /&gt;
&lt;br /&gt;
 make -f Makefile.custom PARALLEL=openmpi&lt;br /&gt;
&lt;br /&gt;
This will generate a file named &amp;lt;code&amp;gt;libSimPartitionWrapper-openmpi.a&amp;lt;/code&amp;gt;. Then, run&lt;br /&gt;
&lt;br /&gt;
 chmod +x libSimPartitionWrapper-openmpi.a.&lt;br /&gt;
&lt;br /&gt;
Once this is completed, copy this newly generated partition wrapper to &amp;lt;code&amp;gt;../../lib/x64_rhel7_gcc48/&amp;lt;/code&amp;gt;. Unfortunately, the instructions from this point forward will be less explicit as the best way to learn the process is to view example scripts and adapt these to fit your needs. From this point forward, it is assumed that a directory named &amp;lt;code&amp;gt;SCOREC-core&amp;lt;/code&amp;gt; was created and the source code from GitHub was properly cloned in this directory. &lt;br /&gt;
&lt;br /&gt;
====Generating the Scripts to Compile Chef====&lt;br /&gt;
&lt;br /&gt;
In order to run Chef, two scripts must be generated. The naming conventions of the scripts are typically &amp;lt;code&amp;gt;doConfigure.sh&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;env_simmtrix_version&amp;lt;/code&amp;gt;. Below, an example &amp;lt;code&amp;gt;doConfigure.sh&amp;lt;/code&amp;gt; script is shown. This script primarily executes the necessary CMake commands for compilation. It also runs the &amp;lt;code&amp;gt;env_simmtrix_version&amp;lt;/code&amp;gt; script. In the example below, it calls &amp;lt;code&amp;gt;env_14.0-190626&amp;lt;/code&amp;gt;. Note that both of these scripts are located in &amp;lt;code&amp;gt;/projects/mabl7046/SCOREC-core/build_14.0-190626&amp;lt;/code&amp;gt;, or the directory where Chef is to be compiled. Note that the line &amp;lt;code&amp;gt;-DMESHES=&amp;quot;/projects/mabl7046/pumi-meshes&amp;quot;&amp;lt;/code&amp;gt; was copied from a script that implemented successfully on another machine. I recommend looking at scripts on the Viz nodes that worked for the version of Chef you are compiling and copying over the directory analogous to pumi-meshes to summit to implement your script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;doConfigure.sh&amp;lt;/code&amp;gt;:&lt;br /&gt;
 #!/bin/bash -l&lt;br /&gt;
 . /projects/mabl7046/SCOREC-core/build_14.0-190626/env_14.0-190626&lt;br /&gt;
 #unload default modules&lt;br /&gt;
 module purge&lt;br /&gt;
 #load what we need&lt;br /&gt;
 module load gcc/6.1.0&lt;br /&gt;
 module load openmpi/2.0.1&lt;br /&gt;
 module load cmake/3.14.1&lt;br /&gt;
 ### For Chef&lt;br /&gt;
 cmake -DCMAKE_C_COMPILER=mpicc \&lt;br /&gt;
 -DCMAKE_CXX_COMPILER=mpicxx \&lt;br /&gt;
 -DSCOREC_CXX_WARNINGS=ON \&lt;br /&gt;
 -DSCOREC_CXX_OPTIMIZE=ON \&lt;br /&gt;
 -DSCOREC_CXX_SYMBOLS=ON \&lt;br /&gt;
 -DPCU_COMPRESS=ON \&lt;br /&gt;
 -DENABLE_ZOLTAN=ON \&lt;br /&gt;
 -DENABLE_SIMMETRIX=ON \&lt;br /&gt;
 -DSIM_MPI=&amp;quot;openmpi&amp;quot; \&lt;br /&gt;
 -DSIM_PARASOLID=ON \&lt;br /&gt;
 -DMDS_SET_MAX=1024 \&lt;br /&gt;
 -DMDS_ID_TYPE=long \&lt;br /&gt;
 -DIS_TESTING=OFF \&lt;br /&gt;
 -DMESHES=&amp;quot;/projects/mabl7046/pumi-meshes&amp;quot; \&lt;br /&gt;
 -DCMAKE_INSTALL_PREFIX=$PWD/install \&lt;br /&gt;
 ../core&lt;br /&gt;
 #-DMDS_ID_TYPE=int or long&lt;br /&gt;
 sleep 3&lt;br /&gt;
 make -j32&lt;br /&gt;
 make -j32&lt;br /&gt;
&lt;br /&gt;
Below, the script &amp;lt;code&amp;gt;env_14.0-190626&amp;lt;/code&amp;gt; is given. As stated in the comments, this is to set the environment for &amp;lt;code&amp;gt;CMake.SCOREC&amp;lt;/code&amp;gt;. In order to make this script work, the &amp;lt;code&amp;gt;SIM_LICENSE_FILE&amp;lt;/code&amp;gt; (denoted UCBoulder below) needed to be obtained. The libraries for &amp;lt;code&amp;gt;Zoltan&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;parmetis&amp;lt;/code&amp;gt; also needed to be collected. The &amp;lt;code&amp;gt;SIM_LICENSE_FILE&amp;lt;/code&amp;gt; was copied over from Cooley although, I am sure that this can be obtained from the Viz nodes as well. To obtain the libraries for &amp;lt;code&amp;gt;Zoltan&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;parmetis&amp;lt;/code&amp;gt; on Summit, run:&lt;br /&gt;
&lt;br /&gt;
 cp -r /projects/ASEN5119/SCOREC-core/deps/zoltan .&lt;br /&gt;
 cp -r /projects/ASEN5119/SCOREC-core/deps/parmetis .&lt;br /&gt;
&lt;br /&gt;
from the directory where you wish these to be. All this does is move these from a directory Ken created for his Boundary Layers course to a directory that is more convenient for personal use. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;env_14.0-190626&amp;lt;/code&amp;gt;:&lt;br /&gt;
 ### For CMake.SCOREC&lt;br /&gt;
 export buildRoot=/projects/mabl7046/SCOREC-core/&lt;br /&gt;
 export simModVer=$buildRoot/deps/Simmetrix/14.0-190626beta/&lt;br /&gt;
 export SIM_LICENSE_FILE=$buildRoot/deps/Simmetrix/UCBoulder&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$simModVer&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$simModVer/lib/x64_rhel7_gcc48&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$simModVer/lib/x64_rhel7_gcc48/psKrnl&lt;br /&gt;
 #MIGHT NEED THIS export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:/projects/tools/Simmetrix.develop/simModSuite/PartitionWrapper/lib&lt;br /&gt;
 ### For Zoltan and parmetis&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$buildRoot/deps/zoltan/3.83-gnu49-ompi210/&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$buildRoot/deps/parmetis/4.0.3-gnu492-ompi210&lt;br /&gt;
 # the following is to give the path to PartitionWrappers that have not been installed in the Simmetrix library&lt;br /&gt;
 export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$simModVer/code/PartitionWrapper/lib&lt;br /&gt;
&lt;br /&gt;
====Final Notes====&lt;br /&gt;
Once the scripts are set up, simply run &amp;lt;code&amp;gt;./doConfigure.sh&amp;lt;/code&amp;gt; to compile the code. Please be patient with the process as it is highly unlikely that it will compile successfully the first time you try. Be sure to pay close attention to your directory structure when setting your scripts up and be cognizant of the dependencies between programs.&lt;br /&gt;
&lt;br /&gt;
[[Category: Chef]]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=Exporting_Parasolid_from_SolidWorks&amp;diff=1185</id>
		<title>Exporting Parasolid from SolidWorks</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=Exporting_Parasolid_from_SolidWorks&amp;diff=1185"/>
				<updated>2020-09-21T18:54:50Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Save out your Model as a parasolid from [[SolidWorks]]. Note that you will want the geometry as close to ready for meshing as possible, as performing model &amp;quot;surgery&amp;quot; in simmodeler is not always straight forward. The outputted file will have the format &amp;lt;code&amp;gt;&amp;lt;file_name&amp;gt;.x_t&amp;lt;/code&amp;gt;.  Next, you'll want to change the extension from &amp;lt;code&amp;gt;.x_t&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;.xmt_txt&amp;lt;/code&amp;gt;. To do this, run &amp;lt;code&amp;gt;mv &amp;lt;file_name&amp;gt;.x_t &amp;lt;file_name&amp;gt;.xmt_txt&amp;lt;/code&amp;gt; from your terminal. From here, you are ready for the ''convert'' step, which is documented [https://fluid.colorado.edu/tutorials/Convert2Sim_Tutorial.mp4 here]. Once this is complete, you are ready to use [[Getting Started with Simmodeler| simmodeler]]. Note, if you do not have a parasolid model of your own, please go to the directory &amp;lt;code&amp;gt; /projects/tutorials/On_Ramp_parasolid&amp;lt;/code&amp;gt; and use &amp;lt;code&amp;gt; On_ramp_example.x_t&amp;lt;/code&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=Exporting_Parasolid_from_SolidWorks&amp;diff=1184</id>
		<title>Exporting Parasolid from SolidWorks</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=Exporting_Parasolid_from_SolidWorks&amp;diff=1184"/>
				<updated>2020-09-21T18:53:38Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Save out your Model as a parasolid from [[SolidWorks]]. Note that you will want the geometry as close to ready for meshing as possible, as performing model &amp;quot;surgery&amp;quot; in simmodeler is not always straight forward. The outputted file will have the format &amp;lt;code&amp;gt;&amp;lt;file_name&amp;gt;.x_t&amp;lt;/code&amp;gt;.  Next, you'll want to change the extension from &amp;lt;code&amp;gt;.x_t&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;.xmt_txt&amp;lt;/code&amp;gt;. To do this, run &amp;lt;code&amp;gt;mv &amp;lt;file_name&amp;gt;.x_t &amp;lt;file_name&amp;gt;.xmt_txt&amp;lt;/code&amp;gt; from your terminal. From here, you are ready for the ''convert'' step, which is documented [https://fluid.colorado.edu/tutorials/Convert2Sim_Tutorial.mp4 here]. Once this is complete, you are ready to use [[Getting Started with Simmodeler| simmodeler]]. Note, if you do not have a parasolid model of your own, please go to the directory &amp;lt;code&amp;gt; /projects/tutorials/On_Ramp_parasolid&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=Exporting_Parasolid_from_SolidWorks&amp;diff=1183</id>
		<title>Exporting Parasolid from SolidWorks</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=Exporting_Parasolid_from_SolidWorks&amp;diff=1183"/>
				<updated>2020-09-21T18:53:21Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Save out your Model as a parasolid from [[SolidWorks]]. Note that you will want the geometry as close to ready for meshing as possible, as performing model &amp;quot;surgery&amp;quot; in simmodeler is not always straight forward. The outputted file will have the format &amp;lt;code&amp;gt;&amp;lt;file_name&amp;gt;.x_t&amp;lt;/code&amp;gt;.  Next, you'll want to change the extension from &amp;lt;code&amp;gt;.x_t&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;.xmt_txt&amp;lt;/code&amp;gt;. To do this, run &amp;lt;code&amp;gt;mv &amp;lt;file_name&amp;gt;.x_t &amp;lt;file_name&amp;gt;.xmt_txt&amp;lt;/code&amp;gt; from your terminal. From here, you are ready for the ''convert'' step, which is documented [https://fluid.colorado.edu/tutorials/Convert2Sim_Tutorial.mp4 here]. Once this is complete, you are ready to use [[Getting Started with Simmodeler| simmodeler]]. Note, if you do not have a parasolid model of your own, please go to the directory &amp;lt;code&amp;gt; /projects/tutorials/On_Ramp_parasolid &amp;lt;\code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=Post-Process&amp;diff=1099</id>
		<title>Post-Process</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=Post-Process&amp;diff=1099"/>
				<updated>2020-09-14T19:36:31Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* Visualization File */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Visualization File ==&lt;br /&gt;
In the directory where the case was run, you will need a meta-data file with a &amp;lt;code&amp;gt; .phts&amp;lt;/code&amp;gt; file extension. An example of this file with a detailed explanation of what is inside of the file, is outlined [https://fluid.colorado.edu/tutorials/ParaviewWithMark_meta_data_description.mp4 here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Visualizing Fields and Computing Quantities==&lt;br /&gt;
&lt;br /&gt;
A tutorial on how to navigate the GUI to visualize solution fields as well as compute other solution fields is given [https://fluid.colorado.edu/tutorials/ParaviewWithMark_viz_fields.mp4 here].&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=Post-Process&amp;diff=1098</id>
		<title>Post-Process</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=Post-Process&amp;diff=1098"/>
				<updated>2020-09-14T19:09:54Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Visualization File ==&lt;br /&gt;
In the directory where the case was run, you will need a meta-data file with a &amp;lt;code&amp;gt; .phts&amp;lt;/code&amp;gt; file extension. An example of this file with a detailed explanation of what is inside of the file, is outlined [https://fluid.colorado.edu/tutorials/ParaviewWithMark_meta_data_description.mp4 here].&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=Post-Process&amp;diff=1095</id>
		<title>Post-Process</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=Post-Process&amp;diff=1095"/>
				<updated>2020-09-14T18:49:23Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Visualization File ==&lt;br /&gt;
In the directory where the case was run, you will need a meta-data file with a &amp;lt;code&amp;gt; .phts&amp;lt;/code&amp;gt; file extension. An example of this file with a detailed explanation of what is inside of the file, is outlined here.&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=Post-Process&amp;diff=1094</id>
		<title>Post-Process</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=Post-Process&amp;diff=1094"/>
				<updated>2020-09-14T18:49:01Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Visualization File ==&lt;br /&gt;
In the directory where the case was run, you will need a meta-data file with a &amp;lt;code&amp;gt; .phts&amp;lt;/code&amp;gt; file extension. An example of this file with a detailed explanation of what is inside of the file is outlined here.&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=Post-Process&amp;diff=1093</id>
		<title>Post-Process</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=Post-Process&amp;diff=1093"/>
				<updated>2020-09-14T18:48:35Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In the directory where the case was run, you will need a meta-data file with a &amp;lt;code&amp;gt; .phts&amp;lt;/code&amp;gt; file extension. An example of this file with a detailed explanation of what is inside of the file is outlined here.&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=Post-Process&amp;diff=1092</id>
		<title>Post-Process</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=Post-Process&amp;diff=1092"/>
				<updated>2020-09-14T18:48:18Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In the directory where the case was run, you will need a meta-data file with a &amp;lt;code&amp;gt; .phts &amp;lt;/code&amp;gt; file extension. An example of this file with a detailed explanation of what is inside of the file is outlined here.&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=Post-Process&amp;diff=1091</id>
		<title>Post-Process</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=Post-Process&amp;diff=1091"/>
				<updated>2020-09-14T18:47:24Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In the directory where the case was run, you will need a meta-data file with a &amp;lt;code&amp;gt; .phts &amp;lt;code&amp;gt; file extension. An example of this file with a detailed explanation of what is inside of the file is outlined here.&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=Post-Process&amp;diff=1090</id>
		<title>Post-Process</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=Post-Process&amp;diff=1090"/>
				<updated>2020-09-14T18:47:06Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In the directory where the case was run, you will need a meta-data file with a &amp;lt;code&amp;gt; .phts &amp;lt;\code&amp;gt; file extension. An example of this file with a detailed explanation of what is inside of the file is outlined here.&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=Getting_Started_with_Simmodeler&amp;diff=1070</id>
		<title>Getting Started with Simmodeler</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=Getting_Started_with_Simmodeler&amp;diff=1070"/>
				<updated>2020-09-10T19:29:40Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* Mesh Refinement Zones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Launching the Software ==&lt;br /&gt;
Once your environment is properly set, as shown in the [https://fluid.colorado.edu/tutorials/Convert2Sim_Tutorial.mp4 convert step video], run: &amp;lt;code&amp;gt; vglrun /projects/tools/SimmetrixTest/SimModeler7.0-190626/simmodeler&amp;lt;/code&amp;gt; in your terminal to launch simmodeler. Note that 7.0-190626 specifies the version of simmodeler you are launching.&lt;br /&gt;
&lt;br /&gt;
==Accessing the User Manual==&lt;br /&gt;
When launching simmodeler, there is a blue question mark at the top right of the GUI. Click it and then click &amp;quot;launch manual&amp;quot; to open the user manual associated with the version of simmodeler you are using. This gives detailed descriptions of the various attributes and how they are defined to generate the desired mesh.&lt;br /&gt;
&lt;br /&gt;
==Surface Meshing==&lt;br /&gt;
&lt;br /&gt;
===2D and 1D Boundary Layers===&lt;br /&gt;
&lt;br /&gt;
To generate a proper surface mesh, it is important that both 2D and 1D boundary layers are implemented. Note that a 2D Boundary layer is defined on a surface and a 1D Boundary layer is defined on a line. The linked [https://fluid.colorado.edu/tutorials/MeshingWingInRoom_1D_2D_BLs.mp4 video] shows both 2D and 1D boundary layers being applied to an airfoil and the mesh that results from these applied attributes.&lt;br /&gt;
&lt;br /&gt;
===Mesh Size and Face Extrusions===&lt;br /&gt;
&lt;br /&gt;
Two more useful attributes when generating proper surface meshes are defining Mesh Sizes and Face Extrusions on your desired surfaces. Face Extrusions are useful when adding refinement over curved surfaces. This process is well covered in this [https://fluid.colorado.edu/tutorials/MeshingWingInRoom_MeshSize_FaceExt.mp4 video].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Volume Meshing==&lt;br /&gt;
&lt;br /&gt;
===3D Boundary Layers===&lt;br /&gt;
One of the most important aspects of volume mesh development is generating proper 3D boundary layers. This process is well outlined [https://fluid.colorado.edu/tutorials/RajDemo.mp4 here] from around 8:30 to 16:00. Note that all mesh attributes are set up under the &amp;quot;Meshing&amp;quot; tab.&lt;br /&gt;
&lt;br /&gt;
===Mesh Refinement Zones===&lt;br /&gt;
Mesh refinement zones are useful for increasing the grid density within certain volumes of your simulation domain. The linked [https://fluid.colorado.edu/tutorials/Mesh_refinement_zone_tutorial.mp4 mesh refinement tutorial] will briefly walk you through how these are implemented.&lt;br /&gt;
&lt;br /&gt;
==Saving Out the Mesh==&lt;br /&gt;
Once you are satisfied with your mesh refinement, you are ready to generate and save out the mesh. In the meshing tab, you will want to click ''Generate Mesh''. The default settings will suffice for proper mesh generation. If your grid is large, this step can take some time. Once the grid is finished generating, you will want to save out this file as you will need it later.&lt;br /&gt;
&lt;br /&gt;
==Applying Boundary and Initial Conditions==&lt;br /&gt;
A nice description of each of the common BCs used in both the Compressible and Incompressible builds of PHASTA is provided [https://fluid.colorado.edu/wiki/index.php/SimModeler here]. The [https://fluid.colorado.edu/tutorials/BC_tutorial.mp4 video] linked in this section shows how the BCs are applied for an incompressible case. Note that the case needs to be called ''geom'' as is done in the tutorial video. Once the BCs are successfully implemented, you have saved out a model file with these BCs(.smd), and have generated your grid (.sms file), your are ready to prepare the grid for Chef. To get started on this step, click [https://fluid.colorado.edu/wiki/index.php/Prepping_the_Grid_for_Chef here]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=Getting_Started_with_Simmodeler&amp;diff=1069</id>
		<title>Getting Started with Simmodeler</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=Getting_Started_with_Simmodeler&amp;diff=1069"/>
				<updated>2020-09-10T18:39:08Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Launching the Software ==&lt;br /&gt;
Once your environment is properly set, as shown in the [https://fluid.colorado.edu/tutorials/Convert2Sim_Tutorial.mp4 convert step video], run: &amp;lt;code&amp;gt; vglrun /projects/tools/SimmetrixTest/SimModeler7.0-190626/simmodeler&amp;lt;/code&amp;gt; in your terminal to launch simmodeler. Note that 7.0-190626 specifies the version of simmodeler you are launching.&lt;br /&gt;
&lt;br /&gt;
==Accessing the User Manual==&lt;br /&gt;
When launching simmodeler, there is a blue question mark at the top right of the GUI. Click it and then click &amp;quot;launch manual&amp;quot; to open the user manual associated with the version of simmodeler you are using. This gives detailed descriptions of the various attributes and how they are defined to generate the desired mesh.&lt;br /&gt;
&lt;br /&gt;
==Surface Meshing==&lt;br /&gt;
&lt;br /&gt;
===2D and 1D Boundary Layers===&lt;br /&gt;
&lt;br /&gt;
To generate a proper surface mesh, it is important that both 2D and 1D boundary layers are implemented. Note that a 2D Boundary layer is defined on a surface and a 1D Boundary layer is defined on a line. The linked [https://fluid.colorado.edu/tutorials/MeshingWingInRoom_1D_2D_BLs.mp4 video] shows both 2D and 1D boundary layers being applied to an airfoil and the mesh that results from these applied attributes.&lt;br /&gt;
&lt;br /&gt;
===Mesh Size and Face Extrusions===&lt;br /&gt;
&lt;br /&gt;
Two more useful attributes when generating proper surface meshes are defining Mesh Sizes and Face Extrusions on your desired surfaces. Face Extrusions are useful when adding refinement over curved surfaces. This process is well covered in this [https://fluid.colorado.edu/tutorials/MeshingWingInRoom_MeshSize_FaceExt.mp4 video].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Volume Meshing==&lt;br /&gt;
&lt;br /&gt;
===3D Boundary Layers===&lt;br /&gt;
One of the most important aspects of volume mesh development is generating proper 3D boundary layers. This process is well outlined [https://fluid.colorado.edu/tutorials/RajDemo.mp4 here] from around 8:30 to 16:00. Note that all mesh attributes are set up under the &amp;quot;Meshing&amp;quot; tab.&lt;br /&gt;
&lt;br /&gt;
===Mesh Refinement Zones===&lt;br /&gt;
Mesh refinement zones are useful for increasing the grid density within certain volumes of your simulation domain. The linked ''Mesh Refinement Tutorial'' will briefly walk you through how these are implemented.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Saving Out the Mesh==&lt;br /&gt;
Once you are satisfied with your mesh refinement, you are ready to generate and save out the mesh. In the meshing tab, you will want to click ''Generate Mesh''. The default settings will suffice for proper mesh generation. If your grid is large, this step can take some time. Once the grid is finished generating, you will want to save out this file as you will need it later.&lt;br /&gt;
&lt;br /&gt;
==Applying Boundary and Initial Conditions==&lt;br /&gt;
A nice description of each of the common BCs used in both the Compressible and Incompressible builds of PHASTA is provided [https://fluid.colorado.edu/wiki/index.php/SimModeler here]. The [https://fluid.colorado.edu/tutorials/BC_tutorial.mp4 video] linked in this section shows how the BCs are applied for an incompressible case. Note that the case needs to be called ''geom'' as is done in the tutorial video. Once the BCs are successfully implemented, you have saved out a model file with these BCs(.smd), and have generated your grid (.sms file), your are ready to prepare the grid for Chef. To get started on this step, click [https://fluid.colorado.edu/wiki/index.php/Prepping_the_Grid_for_Chef here]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=Getting_Started_with_Simmodeler&amp;diff=1068</id>
		<title>Getting Started with Simmodeler</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=Getting_Started_with_Simmodeler&amp;diff=1068"/>
				<updated>2020-09-10T18:38:03Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* Applying Mesh Attributes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Launching the Software ==&lt;br /&gt;
Once your environment is properly set, as shown in the [https://fluid.colorado.edu/tutorials/Convert2Sim_Tutorial.mp4 convert step video], run: &amp;lt;code&amp;gt; vglrun /projects/tools/SimmetrixTest/SimModeler7.0-190626/simmodeler&amp;lt;/code&amp;gt; in your terminal to launch simmodeler. Note that 7.0-190626 specifies the version of simmodeler you are launching.&lt;br /&gt;
&lt;br /&gt;
==Accessing the User Manual==&lt;br /&gt;
When launching simmodeler, there is a blue question mark at the top right of the GUI. Click it and then click &amp;quot;launch manual&amp;quot; to open the user manual associated with the version of simmodeler you are using. This gives detailed descriptions of the various attributes and how they are defined to generate the desired mesh.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Volume Meshing==&lt;br /&gt;
&lt;br /&gt;
===3D Boundary Layers===&lt;br /&gt;
One of the most important aspects of volume mesh development is generating proper 3D boundary layers. This process is well outlined [https://fluid.colorado.edu/tutorials/RajDemo.mp4 here] from around 8:30 to 16:00. Note that all mesh attributes are set up under the &amp;quot;Meshing&amp;quot; tab.&lt;br /&gt;
&lt;br /&gt;
===Mesh Refinement Zones===&lt;br /&gt;
Mesh refinement zones are useful for increasing the grid density within certain volumes of your simulation domain. The linked ''Mesh Refinement Tutorial'' will briefly walk you through how these are implemented.&lt;br /&gt;
&lt;br /&gt;
==Surface Meshing==&lt;br /&gt;
&lt;br /&gt;
===2D and 1D Boundary Layers===&lt;br /&gt;
&lt;br /&gt;
To generate a proper surface mesh, it is important that both 2D and 1D boundary layers are implemented. Note that a 2D Boundary layer is defined on a surface and a 1D Boundary layer is defined on a line. The linked [https://fluid.colorado.edu/tutorials/MeshingWingInRoom_1D_2D_BLs.mp4 video] shows both 2D and 1D boundary layers being applied to an airfoil and the mesh that results from these applied attributes.&lt;br /&gt;
&lt;br /&gt;
===Mesh Size and Face Extrusions===&lt;br /&gt;
&lt;br /&gt;
Two more useful attributes when generating proper surface meshes are defining Mesh Sizes and Face Extrusions on your desired surfaces. Face Extrusions are useful when adding refinement over curved surfaces. This process is well covered in this [https://fluid.colorado.edu/tutorials/MeshingWingInRoom_MeshSize_FaceExt.mp4 video].&lt;br /&gt;
&lt;br /&gt;
==Saving Out the Mesh==&lt;br /&gt;
Once you are satisfied with your mesh refinement, you are ready to generate and save out the mesh. In the meshing tab, you will want to click ''Generate Mesh''. The default settings will suffice for proper mesh generation. If your grid is large, this step can take some time. Once the grid is finished generating, you will want to save out this file as you will need it later.&lt;br /&gt;
&lt;br /&gt;
==Applying Boundary and Initial Conditions==&lt;br /&gt;
A nice description of each of the common BCs used in both the Compressible and Incompressible builds of PHASTA is provided [https://fluid.colorado.edu/wiki/index.php/SimModeler here]. The [https://fluid.colorado.edu/tutorials/BC_tutorial.mp4 video] linked in this section shows how the BCs are applied for an incompressible case. Note that the case needs to be called ''geom'' as is done in the tutorial video. Once the BCs are successfully implemented, you have saved out a model file with these BCs(.smd), and have generated your grid (.sms file), your are ready to prepare the grid for Chef. To get started on this step, click [https://fluid.colorado.edu/wiki/index.php/Prepping_the_Grid_for_Chef here]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	<entry>
		<id>https://fluid.colorado.edu/wiki/index.php?title=Getting_Started_with_Simmodeler&amp;diff=1067</id>
		<title>Getting Started with Simmodeler</title>
		<link rel="alternate" type="text/html" href="https://fluid.colorado.edu/wiki/index.php?title=Getting_Started_with_Simmodeler&amp;diff=1067"/>
				<updated>2020-09-10T18:37:04Z</updated>
		
		<summary type="html">&lt;p&gt;Mabl7046: /* Applying Boundary and Initial Conditions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Launching the Software ==&lt;br /&gt;
Once your environment is properly set, as shown in the [https://fluid.colorado.edu/tutorials/Convert2Sim_Tutorial.mp4 convert step video], run: &amp;lt;code&amp;gt; vglrun /projects/tools/SimmetrixTest/SimModeler7.0-190626/simmodeler&amp;lt;/code&amp;gt; in your terminal to launch simmodeler. Note that 7.0-190626 specifies the version of simmodeler you are launching.&lt;br /&gt;
&lt;br /&gt;
==Accessing the User Manual==&lt;br /&gt;
When launching simmodeler, there is a blue question mark at the top right of the GUI. Click it and then click &amp;quot;launch manual&amp;quot; to open the user manual associated with the version of simmodeler you are using. This gives detailed descriptions of the various attributes and how they are defined to generate the desired mesh.&lt;br /&gt;
&lt;br /&gt;
==Applying Mesh Attributes==&lt;br /&gt;
&lt;br /&gt;
===Volume Meshing===&lt;br /&gt;
&lt;br /&gt;
====3D Boundary Layers====&lt;br /&gt;
One of the most important aspects of volume mesh development is generating proper 3D boundary layers. This process is well outlined [https://fluid.colorado.edu/tutorials/RajDemo.mp4 here] from around 8:30 to 16:00. Note that all mesh attributes are set up under the &amp;quot;Meshing&amp;quot; tab.&lt;br /&gt;
&lt;br /&gt;
====Mesh Refinement Zones====&lt;br /&gt;
Mesh refinement zones are useful for increasing the grid density within certain volumes of your simulation domain. The linked ''Mesh Refinement Tutorial'' will briefly walk you through how these are implemented.&lt;br /&gt;
&lt;br /&gt;
===Surface Meshing===&lt;br /&gt;
&lt;br /&gt;
====2D and 1D Boundary Layers====&lt;br /&gt;
&lt;br /&gt;
To generate a proper surface mesh, it is important that both 2D and 1D boundary layers are implemented. Note that a 2D Boundary layer is defined on a surface and a 1D Boundary layer is defined on a line. The linked [https://fluid.colorado.edu/tutorials/MeshingWingInRoom_1D_2D_BLs.mp4 video] shows both 2D and 1D boundary layers being applied to an airfoil and the mesh that results from these applied attributes.&lt;br /&gt;
&lt;br /&gt;
====Mesh Size and Face Extrusions====&lt;br /&gt;
&lt;br /&gt;
Two more useful attributes when generating proper surface meshes are defining Mesh Sizes and Face Extrusions on your desired surfaces. Face Extrusions are useful when adding refinement over curved surfaces. This process is well covered in this [https://fluid.colorado.edu/tutorials/MeshingWingInRoom_MeshSize_FaceExt.mp4 video].&lt;br /&gt;
&lt;br /&gt;
==Saving Out the Mesh==&lt;br /&gt;
Once you are satisfied with your mesh refinement, you are ready to generate and save out the mesh. In the meshing tab, you will want to click ''Generate Mesh''. The default settings will suffice for proper mesh generation. If your grid is large, this step can take some time. Once the grid is finished generating, you will want to save out this file as you will need it later.&lt;br /&gt;
&lt;br /&gt;
==Applying Boundary and Initial Conditions==&lt;br /&gt;
A nice description of each of the common BCs used in both the Compressible and Incompressible builds of PHASTA is provided [https://fluid.colorado.edu/wiki/index.php/SimModeler here]. The [https://fluid.colorado.edu/tutorials/BC_tutorial.mp4 video] linked in this section shows how the BCs are applied for an incompressible case. Note that the case needs to be called ''geom'' as is done in the tutorial video. Once the BCs are successfully implemented, you have saved out a model file with these BCs(.smd), and have generated your grid (.sms file), your are ready to prepare the grid for Chef. To get started on this step, click [https://fluid.colorado.edu/wiki/index.php/Prepping_the_Grid_for_Chef here]&lt;/div&gt;</summary>
		<author><name>Mabl7046</name></author>	</entry>

	</feed>