|
EpetraExt
Development
|
00001 /* 00002 //@HEADER 00003 // *********************************************************************** 00004 // 00005 // EpetraExt: Epetra Extended - Linear Algebra Services Package 00006 // Copyright (2011) Sandia Corporation 00007 // 00008 // Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, 00009 // the U.S. Government retains certain rights in this software. 00010 // 00011 // Redistribution and use in source and binary forms, with or without 00012 // modification, are permitted provided that the following conditions are 00013 // met: 00014 // 00015 // 1. Redistributions of source code must retain the above copyright 00016 // notice, this list of conditions and the following disclaimer. 00017 // 00018 // 2. Redistributions in binary form must reproduce the above copyright 00019 // notice, this list of conditions and the following disclaimer in the 00020 // documentation and/or other materials provided with the distribution. 00021 // 00022 // 3. Neither the name of the Corporation nor the names of the 00023 // contributors may be used to endorse or promote products derived from 00024 // this software without specific prior written permission. 00025 // 00026 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY 00027 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00028 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 00029 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE 00030 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 00031 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 00032 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 00033 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 00034 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 00035 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 00036 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00037 // 00038 // Questions? Contact Michael A. Heroux (maherou@sandia.gov) 00039 // 00040 // *********************************************************************** 00041 //@HEADER 00042 */ 00043 00044 #include "GLpApp_AdvDiffReactOptModelCreator.hpp" 00045 00046 namespace GLpApp { 00047 00048 AdvDiffReactOptModelCreator::AdvDiffReactOptModelCreator() 00049 :len_x_(1.0) 00050 ,len_y_(1.0) 00051 ,local_nx_(3) 00052 ,local_ny_(4) 00053 ,geomFileBase_("") 00054 ,np_(1) 00055 ,normalizeBasis_(false) 00056 ,beta_(0.0) 00057 ,reactionRate_(1.0) 00058 ,x0_(0.0) 00059 ,p0_(1.0) 00060 ,supportDerivatives_(true) 00061 {} 00062 00063 void AdvDiffReactOptModelCreator::setupCLP( 00064 Teuchos::CommandLineProcessor *clp 00065 ) 00066 { 00067 clp->setOption( "len-x", &len_x_, "Mesh dimension in the x direction (Overridden by --geom-file-base)." ); 00068 clp->setOption( "len-y", &len_y_, "Mesh dimension in the y direction (Overridden by --geom-file-base)." ); 00069 clp->setOption( "local-nx", &local_nx_, "Number of local discretization segments in the x direction (Overridden by --geom-file-base)." ); 00070 clp->setOption( "local-ny", &local_ny_, "Number of local discretization segments in the y direction (Overridden by --geom-file-base)." ); 00071 clp->setOption( "geom-file-base", &geomFileBase_, "Base name of geometry file to read the mesh from." ); 00072 clp->setOption( "np", &np_, "The number of optimization parameters p (If < 0 then all of boundary is used)" ); 00073 clp->setOption( "normalize-basis", "no-normalize-basis", &normalizeBasis_, "Normalize the basis for the parameters p or not." ); 00074 clp->setOption( "beta", &beta_, "Regularization." ); 00075 clp->setOption( "reaction-rate", &reactionRate_, "The rate of the reaction" ); 00076 clp->setOption( "x0", &x0_, "Initial guess for the state." ); 00077 clp->setOption( "p0", &p0_, "Initial guess or nonminal value for optimization parameters." ); 00078 clp->setOption( "support-derivatives","no-support-derivatives",&supportDerivatives_,"Support derivatives or not." ); 00079 } 00080 00081 Teuchos::RefCountPtr<AdvDiffReactOptModel> 00082 AdvDiffReactOptModelCreator::createModel( 00083 const Teuchos::RefCountPtr<const Epetra_Comm> &comm 00084 ,std::ostream *out 00085 ) const 00086 { 00087 return Teuchos::rcp( 00088 new GLpApp::AdvDiffReactOptModel( 00089 comm,beta_,len_x_,len_y_,local_nx_,local_ny_,geomFileBase_.c_str() 00090 ,np_,x0_,p0_,reactionRate_,normalizeBasis_,supportDerivatives_ 00091 ) 00092 ); 00093 } 00094 00095 } // namespace GLpApp
1.7.6.1