[cig-commits] r13549 - cs/cigma/trunk/src
luis at geodynamics.org
luis at geodynamics.org
Tue Dec 9 18:14:02 PST 2008
Author: luis
Date: 2008-12-09 18:14:02 -0800 (Tue, 09 Dec 2008)
New Revision: 13549
Modified:
cs/cigma/trunk/src/core_eval_op.cpp
cs/cigma/trunk/src/core_eval_op.h
Log:
Switched to Function::New factory method.
Also, match dimensions of "one" & "zero" functions
Modified: cs/cigma/trunk/src/core_eval_op.cpp
===================================================================
--- cs/cigma/trunk/src/core_eval_op.cpp 2008-12-10 02:13:59 UTC (rev 13548)
+++ cs/cigma/trunk/src/core_eval_op.cpp 2008-12-10 02:14:02 UTC (rev 13549)
@@ -1,11 +1,11 @@
#include "core_eval_op.h"
#include "core_readers.h"
+#include "fn_zero.h"
+#include "fn_one.h"
#include "tri_logger.hpp"
-#include <boost/shared_ptr.hpp>
-#include "fn_zero.h"
#include <iostream>
#include <sstream>
-
+#include <boost/shared_ptr.hpp>
using namespace std;
using namespace cigma;
using boost::shared_ptr;
@@ -25,15 +25,27 @@
if (!function)
{
- function = Function::New(fn_name.c_str());
+ function = Function::NewFunction(fn_info);
+
+ /*
+ if (fn_name != "")
+ {
+ function = Function::New(fn_name.c_str());
+ }
+ else
+ {
+ //function = ReadField(field_info);
+ shared_ptr<Field> field(new Field);
+ field->setDofsPath(field_info.p_field);
+ field->setMeshPath(field_info.mesh_info.p_mesh);
+ field->setCell(field_info.fe_info.q_info.cell_type_name); // XXX: inherit from mesh?
+ function = field;
+ }
+ */
}
if (!function)
{
- //function = ReadField(field_info);
- }
- if (!function)
- {
- string msg("No function was specified");
+ string msg("Uninitialized function argument");
throw cigma::Exception("EvalOp::configure", msg);
}
@@ -42,25 +54,31 @@
coords = ReadNodeCoordinates(nc_path);
if (!coords)
{
- string msg("No points specified");
- throw cigma::Exception("EvalOp::configure", msg);
+ std::ostringstream stream;
+ stream << "Failed to read points from path '" << nc_path << "'" << std::ends;
+ throw cigma::Exception("EvalOp::configure", stream.str());
}
}
- if (fn_name == "zero")
+ if (fn_info.fn_name == "zero")
{
ZeroFunction *fn = static_cast<ZeroFunction*>(&(*function));
fn->setShape(coords->n_dim(), 1);
}
+ if (fn_info.fn_name == "one")
+ {
+ UnitScalarFn *fn = static_cast<UnitScalarFn*>(&(*function));
+ fn->setDim(coords->n_dim());
+ }
+
if (coords->n_dim() != function->n_dim())
{
- ostringstream stream;
+ std::ostringstream stream;
stream << "Dimension mismatch between"
<< " function domain (dim " << function->n_dim() << ")"
<< " and evaluation points (dim " << coords->n_dim() << ")"
<< std::ends;
- string msg("Dimension mismatch for function domain and coordinates");
throw cigma::Exception("EvalOp::configure", stream.str(), 3);
}
Modified: cs/cigma/trunk/src/core_eval_op.h
===================================================================
--- cs/cigma/trunk/src/core_eval_op.h 2008-12-10 02:13:59 UTC (rev 13548)
+++ cs/cigma/trunk/src/core_eval_op.h 2008-12-10 02:14:02 UTC (rev 13549)
@@ -2,9 +2,10 @@
#define __CIGMA_EVAL_OP_H__
#include "core_base_op.h"
-#include "core_readers.h"
#include "core_array.h"
+#include "core_args.h"
#include "Function.h"
+#include "Field.h"
#include "NodeCoordinates.h"
namespace cigma
@@ -24,8 +25,9 @@
public:
- std::string fn_name;
- FieldInfo field_info;
+ //std::string fn_name;
+ //FieldInfo field_info;
+ FunctionInfo fn_info;
DataPath nc_path;
boost::shared_ptr<Function> function;
More information about the CIG-COMMITS
mailing list