34 data2dListParse( a_construction, a_node.child( GIDI_function2dsChars ), a_setupInfo, m_function2ds );
35 checkOuterDomainValues2d( m_function2ds, m_Xs );
40 std::string name( child.name( ) );
42 if( name == GIDI_axesChars ) continue;
43 if( name == GIDI_uncertaintyChars ) continue;
45 Function2dForm *_form = data2dParse( a_construction, child, a_setupInfo, nullptr );
46 if( _form == nullptr ) throw Exception(
"XYs3d::XYs3d: data2dParse returned nullptr." );
47 if( m_Xs.size( ) > 0 ) {
48 if( _form->outerDomainValue( ) <= m_Xs[m_Xs.size( )-1] ) throw Exception(
"XYs3d::XYs3d: next outerDomainValue <= current outerDomainValue." );
50 m_Xs.push_back( _form->outerDomainValue( ) );
51 m_function2ds.push_back( _form );
65 m_interpolationQualifier(
"" ) {
74 for( std::vector<Function2dForm *>::iterator iter = m_function2ds.begin( ); iter < m_function2ds.end( ); ++iter )
delete *iter;
85 if( m_Xs.size( ) == 0 )
throw Exception(
"XYs3d::domainMin: XYs3d has no 2d-functions" );
97 if( m_Xs.size( ) == 0 )
throw Exception(
"XYs3d::domainMax: XYs3d has no 2d-functions" );
98 return( m_Xs[m_Xs.size( )-1] );
112 if( m_Xs.size( ) == 0 )
throw Exception(
"XYs3d::evaluate: XYs3d has no 2d functions." );
118 return( m_function2ds.back( )->evaluate( a_x2, a_x1 ) );
120 return( m_function2ds[0]->
evaluate( a_x2, a_x1 ) );
124 return( m_function2ds[
static_cast<std::size_t
>(iX3)]->
evaluate( a_x2, a_x1 ) );
135 if( m_function2ds.size( ) > 0 ) {
136 if( a_function2d->
outerDomainValue( ) <= m_Xs.back( ) )
throw Exception(
"XYs3d::append: outerDomainValue not greater than current maximum outer domain's value." );
140 m_function2ds.push_back( a_function2d );
156 std::string attributes;
172 for( std::vector<Function2dForm *>::const_iterator iter = m_function2ds.begin( ); iter != m_function2ds.end( ); ++iter ) (*iter)->toXMLList_func( a_writeInfo, indent2,
true,
false );
#define GIDI_outerDomainValueChars
#define GIDI_interpolationQualifierChars
#define GNDS_formatVersion_1_10Chars
void toXMLList(GUPI::WriteInfo &a_writeInfo, std::string const &a_indent="") const
double evaluate(double a_x3, double a_x2, double a_x1) const
void append(Function2dForm *a_function2d)
void toXMLList_func(GUPI::WriteInfo &a_writeInfo, std::string const &a_indent, bool a_embedded, bool a_inRegions) const
XYs3d(Axes const &a_axes, ptwXY_interpolation a_interpolation=ptwXY_interpolationLinLin, int a_index=0, double a_outerDomainValue=0.0)
LUPI::FormatVersion m_formatVersion
void setAncestor(Ancestry *a_ancestor)
std::string const & moniker() const
void addNodeEnder(std::string const &a_moniker)
std::string incrementalIndent(std::string const &indent)
void addNodeStarter(std::string const &indent, std::string const &a_moniker, std::string const &a_attributes="")
std::string addAttribute(std::string const &a_name, std::string const &a_value) const
long binarySearchVector(double a_x, std::vector< double > const &a_Xs)
std::string intToString(int a_value)
std::string doubleToShortestString(double a_value, int a_significantDigits=15, int a_favorEFormBy=0)
enum ptwXY_interpolation_e ptwXY_interpolation