NLPInterfacePack: C++ Interfaces and Implementation for Non-Linear Programs  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
NLPInterfacePack_NLPDirectTester.hpp
1 // @HEADER
2 // ***********************************************************************
3 //
4 // Moocho: Multi-functional Object-Oriented arCHitecture for Optimization
5 // Copyright (2003) Sandia Corporation
6 //
7 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
8 // license for use of this work by or on behalf of the U.S. Government.
9 //
10 // Redistribution and use in source and binary forms, with or without
11 // modification, are permitted provided that the following conditions are
12 // met:
13 //
14 // 1. Redistributions of source code must retain the above copyright
15 // notice, this list of conditions and the following disclaimer.
16 //
17 // 2. Redistributions in binary form must reproduce the above copyright
18 // notice, this list of conditions and the following disclaimer in the
19 // documentation and/or other materials provided with the distribution.
20 //
21 // 3. Neither the name of the Corporation nor the names of the
22 // contributors may be used to endorse or promote products derived from
23 // this software without specific prior written permission.
24 //
25 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 //
37 // Questions? Contact Roscoe A. Bartlett (rabartl@sandia.gov)
38 //
39 // ***********************************************************************
40 // @HEADER
41 
42 #ifndef NLP_FIRST_ORDER_DIRECT_TESTER_H
43 #define NLP_FIRST_ORDER_DIRECT_TESTER_H
44 
45 #include <iosfwd>
46 
47 #include "NLPInterfacePack_Types.hpp"
48 #include "NLPInterfacePack_CalcFiniteDiffProd.hpp"
51 
52 namespace NLPInterfacePack {
53 
168 public:
169 
172  FD_COMPUTE_ALL
173  ,FD_DIRECTIONAL
174  };
175 
183  STANDARD_MEMBER_COMPOSITION_MEMBERS( value_type, Gf_warning_tol );
185  STANDARD_MEMBER_COMPOSITION_MEMBERS( value_type, Gf_error_tol );
187  STANDARD_MEMBER_COMPOSITION_MEMBERS( value_type, Gc_warning_tol );
189  STANDARD_MEMBER_COMPOSITION_MEMBERS( value_type, Gc_error_tol );
191  STANDARD_MEMBER_COMPOSITION_MEMBERS( size_type, num_fd_directions );
193  STANDARD_MEMBER_COMPOSITION_MEMBERS( bool, dump_all );
194 
197  const calc_fd_prod_ptr_t &calc_fd_prod = Teuchos::null
198  ,ETestingMethod Gf_testing_method = FD_DIRECTIONAL
199  ,ETestingMethod Gc_testing_method = FD_DIRECTIONAL
200  ,value_type Gf_warning_tol = 1e-6
201  ,value_type Gf_error_tol = 1e-1
202  ,value_type Gc_warning_tol = 1e-6
203  ,value_type Gc_error_tol = 1e-1
204  ,size_type num_fd_directions = 1
205  ,bool dump_all = false
206  );
207 
258  bool finite_diff_check(
259  NLPDirect *nlp
260  ,const Vector &xo
261  ,const Vector *xl
262  ,const Vector *xu
263  ,const Vector *c
264  ,const Vector *Gf
265  ,const Vector *py
266  ,const Vector *rGf
267  ,const MatrixOp *GcU
268  ,const MatrixOp *D
269  ,const MatrixOp *Uz
270  ,bool print_all_warnings
271  ,std::ostream *out
272  ) const;
273 
274 }; // end class NLPDirectTester
275 
276 } // end namespace NLPInterfacePack
277 
278 #endif // NLP_FIRST_ORDER_DIRECT_TESTER_H
NLPDirectTester(const calc_fd_prod_ptr_t &calc_fd_prod=Teuchos::null, ETestingMethod Gf_testing_method=FD_DIRECTIONAL, ETestingMethod Gc_testing_method=FD_DIRECTIONAL, value_type Gf_warning_tol=1e-6, value_type Gf_error_tol=1e-1, value_type Gc_warning_tol=1e-6, value_type Gc_error_tol=1e-1, size_type num_fd_directions=1, bool dump_all=false)
Constructor.
Interface providing only direct first order sensitivity information.
bool finite_diff_check(NLPDirect *nlp, const Vector &xo, const Vector *xl, const Vector *xu, const Vector *c, const Vector *Gf, const Vector *py, const Vector *rGf, const MatrixOp *GcU, const MatrixOp *D, const MatrixOp *Uz, bool print_all_warnings, std::ostream *out) const
This function takes an NLP object and its computed derivatives and function values and validates the ...
Strategy interface for computing the product of the derivatives of the functions of an NLP along give...
size_t size_type
Concrete class that tests the computed values of the NLPDirect interface using finite differences...
STANDARD_COMPOSITION_MEMBERS(CalcFiniteDiffProd, calc_fd_prod)
STANDARD_MEMBER_COMPOSITION_MEMBERS(ETestingMethod, Gf_testing_method)
Members for option Gf_testing_method()