36 #ifndef UTILITIES_NEKMESH_NODEOPTI
37 #define UTILITIES_NEKMESH_NODEOPTI
57 std::map<LibUtilities::ShapeType, DerivUtilSharedPtr> d,
62 for (
int i = 0; i < e.size(); i++)
64 m_data[e[i]->GetEl()->GetShapeType()].push_back(e[i]);
83 std::map<LibUtilities::ShapeType, std::vector<ElUtilSharedPtr> >
m_data;
90 std::map<LibUtilities::ShapeType, DerivUtilSharedPtr>
m_derivUtils;
121 std::map<LibUtilities::ShapeType, DerivUtilSharedPtr> d,
123 : NodeOpti(n, e, r, d, o)
133 NodeSharedPtr n, std::vector<ElUtilSharedPtr> e, ResidualSharedPtr r,
134 std::map<LibUtilities::ShapeType, DerivUtilSharedPtr> d,
optiType o)
147 std::map<LibUtilities::ShapeType, DerivUtilSharedPtr> d,
149 : NodeOpti(n, e, r, d, o)
159 NodeSharedPtr n, std::vector<ElUtilSharedPtr> e, ResidualSharedPtr r,
160 std::map<LibUtilities::ShapeType, DerivUtilSharedPtr> d,
optiType o)
NodeOptiFactory & GetNodeOptiFactory()
int IsIndefinite()
Returns 1 if Hessian matrix is indefinite and 0 otherwise.
static NekDouble alphaTol()
NodeOptiJob(NodeOpti *no)
void MinEigen(NekDouble &val)
Calculates minimum eigenvalue of Hessian matrix.
LibUtilities::NekFactory< int, NodeOpti, NodeSharedPtr, std::vector< ElUtilSharedPtr >, ResidualSharedPtr, std::map< LibUtilities::ShapeType, DerivUtilSharedPtr >, optiType > NodeOptiFactory
Array< OneD, NekDouble > m_grad
std::map< LibUtilities::ShapeType, std::vector< ElUtilSharedPtr > > m_data
boost::shared_ptr< Residual > ResidualSharedPtr
NodeOpti(NodeSharedPtr n, std::vector< ElUtilSharedPtr > e, ResidualSharedPtr r, std::map< LibUtilities::ShapeType, DerivUtilSharedPtr > d, optiType o)
NodeOpti2D2D(NodeSharedPtr n, std::vector< ElUtilSharedPtr > e, ResidualSharedPtr r, std::map< LibUtilities::ShapeType, DerivUtilSharedPtr > d, optiType o)
boost::shared_ptr< Node > NodeSharedPtr
boost::shared_ptr< NodeOpti > NodeOptiSharedPtr
NekDouble GetFunctional(NekDouble &minJacNew, bool gradient=true)
Evaluate functional for elements connected to a node.
static NodeOptiSharedPtr create(NodeSharedPtr n, std::vector< ElUtilSharedPtr > e, ResidualSharedPtr r, std::map< LibUtilities::ShapeType, DerivUtilSharedPtr > d, optiType o)
virtual void Optimise()=0
Base class for tasks to be sent to the ThreadManager to run.
static NodeOptiSharedPtr create(NodeSharedPtr n, std::vector< ElUtilSharedPtr > e, ResidualSharedPtr r, std::map< LibUtilities::ShapeType, DerivUtilSharedPtr > d, optiType o)
NodeOpti3D3D(NodeSharedPtr n, std::vector< ElUtilSharedPtr > e, ResidualSharedPtr r, std::map< LibUtilities::ShapeType, DerivUtilSharedPtr > d, optiType o)
static boost::mutex mutex
static NekDouble gradTol()
std::map< LibUtilities::ShapeType, DerivUtilSharedPtr > m_derivUtils
Provides a generic Factory class.