1 //What are the mem_ things?
2 //Norm2 command
3 
4 //JWG
5 
6 //------------------------------------------------------------------------
7 // Copyright (C) 1993:
8 // J.C. Meza
9 // Sandia National Laboratories
10 // meza@california.sandia.gov
11 //------------------------------------------------------------------------
12 
13 #include "NLP2.h"
14 #include "TOLS.h"
15 #include "cblas.h"
16 #include "ioformat.h"
17 #include "Teuchos_SerialDenseMatrix.hpp"
18 #include "Teuchos_SerialDenseVector.hpp"
19 #include "Teuchos_SerialSymDenseMatrix.hpp"
20 
21 using namespace std;
22 
23 namespace OPTPP {
24 
25 //-------------------------------------------------------------------------
26 // Output Routines
27 //-------------------------------------------------------------------------
28 
printState(const char * s)29 void NLP2::printState(const char * s)
30 { // Print out current state: x current, gradient and Function value
31   cout << "\n\n=========  " << s << "  ===========\n\n";
32   cout << "\n    i\t    xc \t\t grad  \t\t fcn_accrcy \n";
33   for (int i=0; i<dim; i++)
34     cout << d(i,6) << e(mem_xc(i),12,4)<< "\t" << e(mem_grad(i),12,4)
35          << "\t" << e(mem_fcn_accrcy(i),12,4) << "\n";
36   cout <<"Function Value     = " << e(fvalue,12,4) << "\n";
37   //double gnorm = Norm2(mem_grad);
38   double gnorm = sqrt(mem_grad.dot(mem_grad));
39   cout <<"Norm of gradient   = " << e(gnorm,12,4) << "\n";
40   cout <<"\n\n==============================================\n\n";
41 }
42 
fPrintState(ostream * nlpout,const char * s)43 void NLP2::fPrintState(ostream *nlpout, const char * s)
44 { // Print out current state: x current, gradient and Function value
45   (*nlpout) << "\n\n=========  " << s << "  ===========\n\n";
46   (*nlpout) << "\n    i\t    xc \t\t grad \t\t fcn_accrcy \n";
47   for (int i=0; i<dim; i++)
48     (*nlpout)<< d(i,6) << e(mem_xc(i),12,4) << "\t" << e(mem_grad(i),12,4)
49              << "\t" << e(mem_fcn_accrcy(i),12,4) << "\n";
50   (*nlpout) <<"Function Value     = " << e(fvalue,12,4) << "\n";
51   // double gnorm = Norm2(mem_grad);
52   double gnorm = sqrt(mem_grad.dot(mem_grad));
53   (*nlpout) <<"Norm of gradient   = " << e(gnorm,12,4) << "\n";
54  // (*nlpout) <<"Function Accuracy  = " << e(mem_fcn_accrcy,12,4) << "\n";
55   (*nlpout) <<"\n\n==============================================\n\n";
56 }
57 
58 } // namespace OPTPP
59