Skip to content

Commit cd0418c

Browse files
module files done, algo tweeked a little, added names to factories
1 parent dc4e9f6 commit cd0418c

File tree

7 files changed

+58
-50
lines changed

7 files changed

+58
-50
lines changed

src/Core/Algorithms/Factory/HardCodedAlgorithmFactory.cc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
#include <Core/Algorithms/Legacy/Fields/TransformMesh/ScaleFieldMeshAndData.h>
5757
#include <Core/Algorithms/Legacy/Fields/TransformMesh/ProjectPointsOntoMesh.h>
5858
#include <Core/Algorithms/Legacy/Fields/FieldData/SwapFieldDataWithMatrixEntriesAlgo.h>
59+
#include <Core/Algorithms/Legacy/Fields/FieldData/ConvertIndicesToFieldDataAlgo.h>
5960
#include <Core/Algorithms/Legacy/Fields/Mapping/BuildMappingMatrixAlgo.h>
6061
#include <Core/Algorithms/Math/AddKnownsToLinearSystem.h>
6162
#include <Core/Algorithms/Math/LinearSystem/SolveLinearSystemAlgo.h>
@@ -165,6 +166,7 @@ void HardCodedAlgorithmFactory::addToMakerMap()
165166
ADD_MODULE_ALGORITHM(FlipSurfaceNormals,FlipSurfaceNormalsAlgo)
166167
ADD_MODULE_ALGORITHM(BuildNoiseColumnMatrix,BuildNoiseColumnMatrixAlgorithm)
167168
ADD_MODULE_ALGORITHM(BuildMappingMatrix, BuildMappingMatrixAlgo)
169+
ADD_MODULE_ALGORITHM(ConvertIndicesToFieldData, ConvertIndicesToFieldDataAlgo)
168170
;
169171
}
170172
}

src/Core/Algorithms/Legacy/Fields/FieldData/ConvertIndicesToFieldDataAlgo.cc

Lines changed: 36 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,6 @@
3636
#include <Core/Datatypes/Legacy/Field/FieldInformation.h>
3737
#include <Core/Datatypes/DenseMatrix.h>
3838

39-
//#include <Core/Algorithms/Legacy/Fields/FieldData/GetFieldData.h>
40-
//#include <Core/Algorithms/Legacy/Fields/FieldData/SetFieldData.h>
41-
4239
#include <Core/Algorithms/Base/AlgorithmVariableNames.h>
4340
#include <Core/Algorithms/Base/AlgorithmPreconditions.h>
4441

@@ -53,7 +50,7 @@ ALGORITHM_PARAMETER_DEF(Fields, OutputFieldDataType);
5350

5451
ConvertIndicesToFieldDataAlgo::ConvertIndicesToFieldDataAlgo()
5552
{
56-
add_option(Parameters::OutputFieldDataType, "double,float,char,unsigned char, short, unsigned short, int, unsigned int");
53+
add_option(Parameters::OutputFieldDataType, "double","double|float|char|unsigned char|short|unsigned short|int|unsigned int");
5754
}
5855

5956
bool
@@ -71,12 +68,6 @@ ConvertIndicesToFieldDataAlgo::runImpl(FieldHandle input_field, MatrixHandle inp
7168
output_field = CreateField(fi);
7269
FieldInformation fo(output_field);
7370

74-
/* if (input_matrix)
75-
{
76-
output_field = get_algo_.run(input_field);
77-
}*/
78-
FieldHandle field_output_handle;
79-
8071
if (fi.is_nonlinear())
8172
{
8273
error("This function has not yet been defined for non-linear elements");
@@ -151,14 +142,11 @@ ConvertIndicesToFieldDataAlgo::runImpl(FieldHandle input_field, MatrixHandle inp
151142
voutput->resize_fdata();
152143

153144
DenseMatrixHandle dmh(boost::make_shared<DenseMatrix>(input_matrix));
154-
//DenseMatrix * dm = input_matrix->
155-
//MatrixHandle dm = dm;
156145

157146
if (algotype == "Scalar")
158147
{
159148
int max_index = input_matrix->nrows() * input_matrix->ncols();
160149
double *dataptr = dmh->data();
161-
//double *dataptr = &dmh[0];
162150
VMesh::size_type sz = vinput->num_values();
163151
for (VMesh::index_type r = 0; r<sz; r++)
164152
{
@@ -177,10 +165,8 @@ ConvertIndicesToFieldDataAlgo::runImpl(FieldHandle input_field, MatrixHandle inp
177165
{
178166
if (input_matrix->ncols() != 3)
179167
{
180-
//MatrixHandle temp = dmh;
181168
auto dmht = dmh->transpose();
182169
DenseMatrixHandle dmh(boost::make_shared<DenseMatrix>(dmht));
183-
//dmh = dmht->dense();
184170
}
185171

186172
double *dataptr = dmh->data();
@@ -204,11 +190,8 @@ ConvertIndicesToFieldDataAlgo::runImpl(FieldHandle input_field, MatrixHandle inp
204190
{
205191
if ((input_matrix->ncols() != 6) && (input_matrix->ncols() != 9))
206192
{
207-
//MatrixHandle temp = dmh;
208-
//dmh = dm->make_transpose();
209193
auto dmht = dmh->transpose();
210194
DenseMatrixHandle dmh(boost::make_shared<DenseMatrix>(dmht));
211-
//dm = dmh->dense();
212195
}
213196

214197
int max_index = dmh->nrows();
@@ -234,19 +217,49 @@ ConvertIndicesToFieldDataAlgo::runImpl(FieldHandle input_field, MatrixHandle inp
234217
voutput->set_value(Tensor(dataptr[3 * idx], dataptr[3 * idx + 1], dataptr[3 * idx + 2], dataptr[3 * idx + 4], dataptr[3 * idx + 5], dataptr[3 * idx + 8]), r);
235218
}
236219
}
220+
AlgorithmOutput output;
221+
output[Variables::OutputField] = output_field;
237222
return (true);
238223
}
239224

240225
// keep the compiler happy:
241226
// it seems reasonable to return false if none of the cases apply (AK)
242227
return (false);
228+
//if (input_matrix)
229+
//{
230+
// if (PreserveScalar)
231+
// {
232+
// set_algo_.set_option(set_algo_.keepTypeCheckBox, fi.get_data_type());
233+
// }
234+
// size_type numVal = 0;
235+
// auto denseInput = matrix_convert::to_dense(input_matrix);
236+
// if (set_algo_.verify_input_data(input_field, denseInput, numVal, fi))
237+
// {
238+
// output_field = set_algo_.run(input_field, denseInput);
239+
// }
240+
// else
241+
// {
242+
// THROW_ALGORITHM_INPUT_ERROR("Matrix dimensions do not match any of the fields dimensions");
243+
// CopyProperties(*input_field, *output_field);
244+
// }
245+
//}
246+
//else
247+
//{
248+
// warning("No input matrix passing the field through");
249+
// output_field = input_field;
250+
//}
251+
252+
//AlgorithmOutput output;
253+
//output[Variables::OutputField] = output_field;
254+
255+
//return true;
243256
}
244257

245-
bool
246-
ConvertIndicesToFieldDataAlgo::runImpl(FieldHandle input, MatrixHandle input_matrix, FieldHandle& output) const
247-
{
248-
return runImpl(input, input_matrix, output);
249-
}
258+
//bool
259+
//ConvertIndicesToFieldDataAlgo::runImpl(FieldHandle input, MatrixHandle input_matrix, FieldHandle& output) const
260+
//{
261+
// return runImpl(input, input_matrix, output);
262+
//}
250263

251264
AlgorithmOutput ConvertIndicesToFieldDataAlgo::run_generic(const AlgorithmInput& input) const
252265
{

src/Core/Algorithms/Legacy/Fields/FieldData/ConvertIndicesToFieldDataAlgo.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,9 @@ namespace SCIRun {
4545
public:
4646
ConvertIndicesToFieldDataAlgo();
4747

48-
bool runImpl(FieldHandle input_field,
49-
Datatypes::MatrixHandle input_matrix,
50-
FieldHandle& output_field)const;
48+
bool runImpl(FieldHandle input_field, Datatypes::MatrixHandle input_matrix, FieldHandle& output_field)const;
5149

52-
bool runImpl(FieldHandle input, Datatypes::MatrixHandle input_matrix, FieldHandle& output) const;
50+
// bool runImpl(FieldHandle input, Datatypes::MatrixHandle input_matrix, FieldHandle& output) const;
5351

5452
virtual AlgorithmOutput run_generic(const AlgorithmInput& input) const override;
5553
};

src/Interface/Modules/Factory/ModuleDialogFactory.cc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@
8080
#include <Interface/Modules/Fields/ConvertFieldBasisDialog.h>
8181
#include <Interface/Modules/Fields/SwapFieldDataWithMatrixEntriesDialog.h>
8282
#include <Interface/Modules/Fields/ConvertFieldBasisDialog.h>
83+
#include <Interface/Modules/Fields/ConvertIndicesToFieldDataDialog.h>
8384
#include <Interface/Modules/Forward/BuildBEMatrixDialog.h>
8485
#include <Interface/Modules/FiniteElements/ApplyFEMCurrentSourceDialog.h>
8586
#include <Interface/Modules/Visualization/MatrixAsVectorFieldDialog.h>
@@ -172,6 +173,7 @@ void ModuleDialogFactory::addDialogsToMakerMap1()
172173
ADD_MODULE_DIALOG(SwapFieldDataWithMatrixEntries, SwapFieldDataWithMatrixEntriesDialog)
173174
ADD_MODULE_DIALOG(BuildMappingMatrix, BuildMappingMatrixDialog)
174175
ADD_MODULE_DIALOG(EditMeshBoundingBox, EditMeshBoundingBoxDialog)
176+
ADD_MODULE_DIALOG(ConvertIndicesToFieldData, ConvertIndicesToFieldDataDialog)
175177
;
176178
}
177179

src/Modules/Factory/ModuleFactoryImpl1.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ DEALINGS IN THE SOFTWARE.
8383
#include <Modules/Legacy/Fields/FlipSurfaceNormals.h>
8484
#include <Modules/Legacy/Fields/SwapFieldDataWithMatrixEntries.h>
8585
#include <Modules/Legacy/Fields/BuildMatrixOfSurfaceNormals.h>
86+
#include <Modules/Legacy/Fields/ConvertIndicesToFieldData.h>
8687
#include <Modules/Legacy/Math/SolveMinNormLeastSqSystem.h>
8788
#include <Modules/Legacy/Math/BuildNoiseColumnMatrix.h>
8889
#include <Modules/Legacy/Matlab/DataIO/ImportDatatypesFromMatlab.h>
@@ -183,7 +184,7 @@ void ModuleDescriptionLookup::addEssentialModules()
183184
addModuleDesc<FlipSurfaceNormals>("FlipSurfaceNormals","ChangeMesh","SCIRun","...","...");
184185
addModuleDesc<BuildNoiseColumnMatrix>("BuildNoiseColumnMatrix", "Math", "SCIRun", "...", "...");
185186
addModuleDesc<EditMeshBoundingBox>("Rewrite", "...");
186-
187+
addModuleDesc<ConvertIndicesToFieldData>("Real ported module", "...");
187188

188189
// insert module desc here
189190
}

src/Modules/Legacy/Fields/ConvertIndicesToFieldData.cc

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -30,30 +30,26 @@
3030
#include <Modules/Legacy/Fields/ConvertIndicesToFieldData.h>
3131
#include <Core/Datatypes/Legacy/Field/Field.h>
3232

33-
//#include <Dataflow/Network/Ports/MatrixPort.h>
34-
//#include <Dataflow/Network/Ports/FieldPort.h>
35-
3633
#include <Dataflow/Network/Module.h>
3734

3835
using namespace SCIRun;
3936
using namespace SCIRun::Core::Datatypes;
4037
using namespace SCIRun::Modules::Fields;
41-
using namespace SCIRun::Dataflow::Networks;
38+
using namespace SCIRun::Dataflow::Networks;
4239
using namespace SCIRun::Core::Algorithms::Fields;
40+
using namespace SCIRun::Core::Algorithms;
4341

4442
/// @class ConvertIndicesToFieldData
4543
/// @brief Convert a field with indices as data values into a field with values
4644
/// assigned to each index using a lookup table.
4745

48-
// SCIRunAlgo::ConvertIndicesToFieldDataAlgo algo_;
49-
5046
const ModuleLookupInfo ConvertIndicesToFieldData::staticInfo_("ConvertIndicesToFieldData", "ChangeFieldData", "SCIRun");
5147

52-
5348
ConvertIndicesToFieldData::ConvertIndicesToFieldData() : Module(staticInfo_)
5449
{
5550
INITIALIZE_PORT(InputField);
5651
INITIALIZE_PORT(InputMatrix);
52+
INITIALIZE_PORT(OutputField);
5753
}
5854

5955
void ConvertIndicesToFieldData::setStateDefaults()
@@ -66,20 +62,16 @@ ConvertIndicesToFieldData::execute()
6662
{
6763
auto input = getRequiredInput(InputField);
6864
auto matrixIn = getRequiredInput(InputMatrix);
69-
//FieldHandle input, output;
70-
//MatrixHandle data;
71-
72-
if (!(get_input_handle("Field",input,true))) return;
73-
if (!(get_input_handle("Data",data,true))) return;
74-
75-
if (inputs_changed_ || guidatatype_.changed() || !oport_cached("Field"))
76-
{
77-
update_state(Executing);
78-
79-
algo_.set_option("datatype",guidatatype_.get());
80-
if (!(algo_.run(input,data,output))) return;
81-
82-
send_output_handle("Field", output);
65+
66+
if (needToExecute())
67+
{
68+
update_state(Executing);
69+
setAlgoOptionFromState(Parameters::OutputFieldDataType);
70+
71+
auto inputs = make_input((InputField, input), (InputMatrix, matrixIn));
72+
auto output = algo().run_generic(inputs);
73+
74+
sendOutputFromAlgorithm(OutputField, output);
8375
}
8476
}
8577

src/Modules/Legacy/Fields/ConvertIndicesToFieldData.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ namespace SCIRun {
5050
INPUT_PORT(1, InputMatrix, Matrix);
5151
OUTPUT_PORT(0, OutputField, LegacyField);
5252

53-
static Dataflow::Networks::ModuleLookupInfo staticInfo_;
53+
static const Dataflow::Networks::ModuleLookupInfo staticInfo_;
5454
};
5555
}
5656
}

0 commit comments

Comments
 (0)