Go to the documentation of this file.
11 #ifndef __MITTELMANNBNDRYCNTRLDIRI3D_27_HPP__
12 #define __MITTELMANNBNDRYCNTRLDIRI3D_27_HPP__
19 #include "configall_system.h"
28 # error "don't have header file for math"
38 # error "don't have header file for stdio"
42 using namespace Ipopt;
108 bool& use_x_scaling,
Index n,
110 bool& use_g_scaling,
Index m,
188 return k + (N_+2)*j + (N_+2)*(N_+2)*i;
194 return (k-1) + N_*(j-1) + N_*N_*(i-1);
218 return B_*B_/2. + C_*(t - B_);
221 return B_*B_/2. + C_*(-t - B_);
227 return PenA_*t2 + PenB_*t4 + PenC_*t6;
246 return 2.*PenA_*t + 4.*PenB_*t3 + 6.*PenC_*t5;
264 return 2.*PenA_ + 12.*PenB_*t2 + 30.*PenC_*t4;
292 printf(
"N has to be at least 1.");
303 SetBaseParameters(N, alpha, lb_y, ub_y, lb_u, ub_u, d_const, B, C);
310 return 3. + 5.*(x1*(x1-1.)*x2*(x2-1.));
335 printf(
"N has to be at least 1.");
346 SetBaseParameters(N, alpha, lb_y, ub_y, lb_u, ub_u, d_const, B, C);
353 return 3. + 5.*(x1*(x1-1.)*x2*(x2-1.));
Number x3_grid(Index i) const
Compute the grid coordinate for given index in x3 direction.
Number ub_y_
overall upper bound on y
Number alpha_
Weighting parameter for the control target deviation functional in the objective.
virtual bool get_starting_point(Index n, bool init_x, Number *x, bool init_z, Number *z_L, Number *z_U, Index m, bool init_lambda, Number *lambda)
Method to return the starting point for the algorithm.
virtual bool eval_f(Index n, const Number *x, bool new_x, Number &obj_value)
Method to return the objective value.
MittelmannBndryCntrlDiri3D_27 & operator=(const MittelmannBndryCntrlDiri3D_27 &)
virtual Number y_d_cont(Number x1, Number x2, Number x3) const =0
Target profile function for y.
MittelmannBndryCntrlDiri3D_27()
MittelmannBndryCntrlDiriBase3D_27 & operator=(const MittelmannBndryCntrlDiriBase3D_27 &)
MittelmannBndryCntrlDiri3D_27(const MittelmannBndryCntrlDiri3D_27 &)
Class to organize all the data required by the algorithm.
Number ub_u_
overall upper bound on u
void SetBaseParameters(Index N, Number alpha, Number lb_y, Number ub_y, Number lb_u, Number ub_u, Number d_const, Number B, Number C)
Method for setting the internal parameters that define the problem.
Number lb_y_
overall lower bound on y
virtual bool get_nlp_info(Index &n, Index &m, Index &nnz_jac_g, Index &nnz_h_lag, IndexStyleEnum &index_style)
Method to return some info about the nlp.
Class implemented the NLP discretization of.
virtual void finalize_solution(SolverReturn status, Index n, const Number *x, const Number *z_L, const Number *z_U, Index m, const Number *g, const Number *lambda, Number obj_valu, const IpoptData *ip_data, IpoptCalculatedQuantities *ip_cq)
This method is called after the optimization, and could write an output file with the optimal profile...
virtual Number y_d_cont(Number x1, Number x2, Number x3) const
Target profile function for y.
Class for all IPOPT specific calculated quantities.
virtual bool eval_h(Index n, const Number *x, bool new_x, Number obj_factor, Index m, const Number *lambda, bool new_lambda, Index nele_hess, Index *iRow, Index *jCol, Number *values)
Method to return: 1) The structure of the hessian of the lagrangian (if "values" is NULL) 2) The valu...
double Number
Type of all numbers.
virtual bool eval_g(Index n, const Number *x, bool new_x, Index m, Number *g)
Method to return the constraint residuals.
Number lb_u_
overall lower bound on u
Number d_const_
Constant value of d appearing in elliptical equation.
Number hhh_
h_ to the third power
Number * x
Input: Starting point Output: Optimal solution.
Number * y_d_
Array for the target profile for y.
Index pde_index(Index i, Index j, Index k) const
Translation of interior mesh point indices to the corresponding PDE constraint number.
Number Number Index Number Number Index Index nele_hess
Number of non-zero elements in Hessian of Lagrangian.
Number x2_grid(Index i) const
Compute the grid coordinate for given index in x2 direction.
Class implementating case with nonconvex Beaton-Tukey like penalty function.
Number Number Index Number Number Index nele_jac
Number of non-zero elements in constraint Jacobian.
int Index
Type of all indices of vectors, matrices etc.
virtual ~MittelmannBndryCntrlDiri3D_27()
virtual ~MittelmannBndryCntrlDiri3D_27BT()
virtual Number y_d_cont(Number x1, Number x2, Number x3) const
Target profile function for y.
MittelmannBndryCntrlDiriBase3D_27(const MittelmannBndryCntrlDiriBase3D_27 &)
Number x1_grid(Index i) const
Compute the grid coordinate for given index in x1 direction.
virtual bool eval_jac_g(Index n, const Number *x, bool new_x, Index m, Index nele_jac, Index *iRow, Index *jCol, Number *values)
Method to return: 1) The structure of the jacobian (if "values" is NULL) 2) The values of the jacobia...
Number PenObj(Number t) const
value of penalty function term
virtual bool InitializeProblem(Index N)
Initialize internal parameters, where N is a parameter determining the problme size.
Number PenObj_1(Number t) const
first derivative of penalty function term
virtual bool get_bounds_info(Index n, Number *x_l, Number *x_u, Index m, Number *g_l, Number *g_u)
Method to return the bounds for my problem.
virtual bool InitializeProblem(Index N)
Initialize internal parameters, where N is a parameter determining the problme size.
Index N_
Number of mesh points in one dimension (excluding boundary)
Number Number Number * g_scaling
Class implementating case with convex quadratic penalty function.
Number Number * g
Values of constraint at final point (output only - ignored if set to NULL)
IndexStyleEnum
overload this method to return the number of variables and constraints, and the number of non-zeros i...
virtual ~MittelmannBndryCntrlDiriBase3D_27()
Default destructor.
virtual bool eval_grad_f(Index n, const Number *x, bool new_x, Number *grad_f)
Method to return the gradient of the objective.
Index y_index(Index i, Index j, Index k) const
Translation of mesh point indices to NLP variable indices for y(x_ijk)
MittelmannBndryCntrlDiri3D_27BT & operator=(const MittelmannBndryCntrlDiri3D_27BT &)
SolverReturn
enum for the return from the optimize algorithm (obviously we need to add more)
Number PenObj_2(Number t) const
second derivative of penalty function term
virtual bool get_scaling_parameters(Number &obj_scaling, bool &use_x_scaling, Index n, Number *x_scaling, bool &use_g_scaling, Index m, Number *g_scaling)
Method for returning scaling parameters.
Number Number Index Number Number Index Index Index index_style
indexing style for iRow & jCol, 0 for C style, 1 for Fortran style
Base class for boundary control problems with Dirichlet boundary conditions, as formulated by Hans Mi...
MittelmannBndryCntrlDiriBase3D_27()
Constructor.
Number Number * x_scaling
MittelmannBndryCntrlDiri3D_27BT()
MittelmannBndryCntrlDiri3D_27BT(const MittelmannBndryCntrlDiri3D_27BT &)
Number Number Index m
Number of constraints.