Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 #include "SundanceParameter.hpp"
00043 #include "SundanceSymbolicFunc.hpp"
00044
00045 using namespace Sundance;
00046 using namespace Sundance;
00047
00048 using namespace Sundance;
00049 using namespace Teuchos;
00050
00051 Parameter::Parameter(const double& value, const std::string& name)
00052 : DiscreteFuncElement(rcp(new ParameterData(value)),
00053 name, "", makeFuncID(0), 0),
00054 SpatiallyConstantExpr()
00055 {;}
00056
00057 void Parameter::setValue(const double& value)
00058 {
00059 data()->setValue(value);
00060 }
00061
00062 const double& Parameter::value() const {return data()->value();}
00063
00064
00065 RCP<Array<Set<MultipleDeriv> > > Parameter
00066 ::internalDetermineR(const EvalContext& context,
00067 const Array<Set<MultipleDeriv> >& RInput) const
00068 {
00069 Tabs tab;
00070 SUNDANCE_VERB_HIGH(tab << "Parameter::internalDetermineR() for "
00071 << toString());
00072 return EvaluatableExpr::internalDetermineR(context, RInput);
00073 }
00074
00075 Set<MultipleDeriv>
00076 Parameter::internalFindW(int order, const EvalContext& context) const
00077 {
00078 Set<MultipleDeriv> rtn;
00079
00080 if (order==0) rtn.put(MultipleDeriv());
00081
00082 return rtn;
00083 }
00084
00085 Set<MultipleDeriv>
00086 Parameter::internalFindV(int order, const EvalContext& context) const
00087 {
00088 Set<MultipleDeriv> rtn;
00089
00090 return rtn;
00091 }
00092
00093
00094 Set<MultipleDeriv>
00095 Parameter::internalFindC(int order, const EvalContext& context) const
00096 {
00097 Tabs tab;
00098 int verb = context.setupVerbosity();
00099 SUNDANCE_MSG3(verb, tab
00100 << "Parameter::internalFindC(order=" << order << ") for "
00101 << toString());
00102 Set<MultipleDeriv> rtn;
00103
00104 if (order==0)
00105 {
00106 rtn.put(MultipleDeriv());
00107 }
00108
00109 rtn = rtn.intersection(findR(order, context));
00110
00111 SUNDANCE_MSG3(verb, tab << "Parameter: C[" << order << "] = " << rtn );
00112 return rtn;
00113 }
00114
00115
00116 Evaluator* Parameter::createEvaluator(const EvaluatableExpr* expr,
00117 const EvalContext& context) const
00118 {
00119 return new ConstantEvaluator(this, context);
00120 }
00121
00122
00123 XMLObject Parameter::toXML() const
00124 {
00125 XMLObject rtn("Parameter");
00126 rtn.addAttribute("name", name());
00127 rtn.addAttribute("value", Teuchos::toString(value()));
00128 return rtn;
00129 }
00130
00131
00132 const ParameterData* Parameter::data() const
00133 {
00134 const ParameterData* pd = dynamic_cast<const ParameterData*>(commonData().get());
00135
00136 TEUCHOS_TEST_FOR_EXCEPTION(pd==0, std::logic_error, "cast failed");
00137
00138 return pd;
00139 }
00140
00141
00142
00143 ParameterData* Parameter::data()
00144 {
00145 ParameterData* pd = dynamic_cast<ParameterData*>(commonData());
00146
00147 TEUCHOS_TEST_FOR_EXCEPTION(pd==0, std::logic_error, "cast failed");
00148
00149 return pd;
00150 }