Commit 81c0fff3 authored by Dave Moxey's avatar Dave Moxey
Browse files

Merge remote-tracking branch 'upstream/master' into feature/cad_factory

parents 9921c909 dc770c73
......@@ -49,6 +49,7 @@ v4.4.0
- Improvements to mesh linearisation module (!659)
- Add support for Gmsh high-order output (!679)
- Move CAD classes to factory format (!676)
- Add option to `linearise` module to linearise only prisms (!688)
**FieldConvert:**
- Move all modules to a new library, FieldUtils, to support post-processing
......
......@@ -542,17 +542,32 @@ The module parameters are:
\subsection{Linearisation}
The ability to remove all the high-order information in a mesh can be useful
at times.
The ability to remove all the high-order information in a mesh can be useful at
times when mesh generation is tricky or impossible in the presence of curvature
To do this in NekMesh use the command:
\begin{lstlisting}[style=BashInputStyle]
NekMesh -m linearise high-order-mesh.xml linear-mesh.xml
NekMesh -m linearise:all high-order-mesh.xml linear-mesh.xml
\end{lstlisting}
The output will contain only the linear mesh information, all curved information
is removed.
is removed. Alternatively
\begin{lstlisting}[style=BashInputStyle]
NekMesh -m linearise:invalid high-order-mesh.xml linear-mesh.xml
\end{lstlisting}
attempts to remove curvature from elements only where necessary. This is a
simple algorithm that removes curvature from invalid elements and repeats until
all elements are valid. Either \inlsh{all} or \inlsh{invalid} must be specified.
\begin{itemize}
\item \inlsh{all}: remove curvature from all elements.
\item \inlsh{invalid}: remove curvature from invalid elements.
\item \inlsh{prismonly}: consider only prisms when removing curvature. This is
useful in the presence of a prismatic boundary layer.
\end{itemize}
\subsection{Extracting interface between tetrahedra and prismatic elements}
......
......@@ -53,6 +53,8 @@ ProcessLinear::ProcessLinear(MeshSharedPtr m) : ProcessModule(m)
ConfigOption(true, "0", "remove curve nodes for all elements.");
m_config["invalid"] =
ConfigOption(true, "0", "remove curve nodes if element is invalid.");
m_config["prismonly"] =
ConfigOption(false, "", "only acts on prims");
}
ProcessLinear::~ProcessLinear()
......@@ -139,6 +141,14 @@ void ProcessLinear::Process()
{
for (int i = 0; i < el.size(); ++i)
{
if(m_config["prismonly"].beenSet)
{
if(el[i]->GetConf().m_e != LibUtilities::ePrism)
{
continue;
}
}
// Create elemental geometry.
SpatialDomains::GeometrySharedPtr geom =
el[i]->GetGeom(m_mesh->m_spaceDim);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment