SundanceWatchFlag.cpp
Go to the documentation of this file.
00001 /* @HEADER@ */
00002 // ************************************************************************
00003 // 
00004 //                             Sundance
00005 //                 Copyright 2011 Sandia Corporation
00006 // 
00007 // Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
00008 // the U.S. Government retains certain rights in this software.
00009 //
00010 // Redistribution and use in source and binary forms, with or without
00011 // modification, are permitted provided that the following conditions are
00012 // met:
00013 //
00014 // 1. Redistributions of source code must retain the above copyright
00015 // notice, this list of conditions and the following disclaimer.
00016 //
00017 // 2. Redistributions in binary form must reproduce the above copyright
00018 // notice, this list of conditions and the following disclaimer in the
00019 // documentation and/or other materials provided with the distribution.
00020 //
00021 // 3. Neither the name of the Corporation nor the names of the
00022 // contributors may be used to endorse or promote products derived from
00023 // this software without specific prior written permission.
00024 //
00025 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
00026 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00027 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
00028 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
00029 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
00030 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
00031 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
00032 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
00033 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
00034 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
00035 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00036 //
00037 // Questions? Contact Kevin Long (kevin.long@ttu.edu)
00038 // 
00039 
00040 /* @HEADER@ */
00041 
00042 #include "SundanceWatchFlag.hpp"
00043 #include "SundanceOut.hpp"
00044 
00045 using namespace Sundance;
00046 
00047 
00048 WatchFlag::WatchFlag(const std::string& name,
00049   const ParameterList& params)
00050   : name_(name), params_(rcp(new ParameterList(params)))
00051 {
00052   if (name_.size() > 0) isActiveMap().put(name, true);
00053   else isActiveMap().put(name, false);
00054 }
00055 
00056 void WatchFlag::activate() 
00057 {
00058   isActiveMap()[name()] = true;
00059 }
00060 
00061 void WatchFlag::deactivate() 
00062 {
00063   isActiveMap()[name()] = false;
00064 }
00065 
00066 bool WatchFlag::isActive() const 
00067 {
00068   return isActiveMap().get(name());
00069 }
00070 
00071 XMLObject WatchFlag::toXML() const 
00072 {
00073   XMLObject xml("WatchFlag");
00074   xml.addAttribute("name", name());
00075   return xml;
00076 }
00077 
00078 int WatchFlag::param(const std::string& name) const 
00079 {
00080   return params_->get<int>(name);
00081 }
00082 
00083 
00084 void WatchFlag::setParam(const std::string& name, int val)
00085 {
00086   params_->set<int>(name, val);
00087 }
00088 
00089 
00090 
00091 
00092 RCP<ParameterList> WatchFlag::defaultParams()
00093 {
00094   static RCP<ParameterList> rtn=rcp(new ParameterList());
00095   static bool first=true;
00096   if (first)
00097   {
00098     rtn->set<int>("evaluation", 0);
00099     rtn->set<int>("evaluator setup", 0);
00100     rtn->set<int>("discrete function evaluation", 0);
00101     rtn->set<int>("symbolic preprocessing", 0);
00102     rtn->set<int>("equation set setup", 0);
00103     rtn->set<int>("assembler setup", 0);
00104     rtn->set<int>("assembly loop", 0);
00105     rtn->set<int>("dof map setup", 0);
00106     rtn->set<int>("dof map access", 0);
00107     rtn->set<int>("eval mediator", 0);
00108     rtn->set<int>("integration setup", 0);
00109     rtn->set<int>("integration", 0);
00110     rtn->set<int>("integral transformation", 0);    
00111     rtn->set<int>("fill", 0);
00112     rtn->set<int>("matrix config", 0);
00113     rtn->set<int>("vector config", 0);
00114     rtn->set<int>("solve control", 0);
00115     first = false;
00116   }
00117   return rtn;
00118 }

Site Contact