Skip to content

Commit

Permalink
Objects for Results of FEM analysis
Browse files Browse the repository at this point in the history
  • Loading branch information
jriegel committed Nov 27, 2013
1 parent 680f4c8 commit feeb053
Show file tree
Hide file tree
Showing 12 changed files with 407 additions and 4 deletions.
2 changes: 2 additions & 0 deletions src/App/PropertyGeo.h
Expand Up @@ -136,6 +136,8 @@ class AppExport PropertyVectorList: public PropertyLists

void setValues (const std::vector<Base::Vector3d>& values);

void setValue (void){};

const std::vector<Base::Vector3d> &getValues(void) const {
return _lValueList;
}
Expand Down
2 changes: 2 additions & 0 deletions src/App/PropertyStandard.h
Expand Up @@ -523,6 +523,8 @@ class AppExport PropertyFloatList: public PropertyLists
/** Sets the property
*/
void setValue(double);

void setValue (void){};

/// index operator
double operator[] (const int idx) const {return _lValueList.operator[] (idx);}
Expand Down
12 changes: 10 additions & 2 deletions src/App/PropertyUnits.cpp
Expand Up @@ -60,6 +60,14 @@ Base::Quantity PropertyQuantity::getQuantityValue(void) const
return Quantity( _dValue,_Unit);
}

void PropertyQuantity::setValue(const Base::Quantity &quant)
{
aboutToSetValue();
_dValue = quant.getValue();
_Unit = quant.getUnit();
hasSetValue();
}

const char* PropertyQuantity::getEditorName(void) const
{

Expand Down Expand Up @@ -90,14 +98,14 @@ void PropertyQuantity::setPyObject(PyObject *value)

Unit unit = quant.getUnit();
if(unit.isEmpty()){
setValue(quant.getValue());
PropertyFloat::setValue(quant.getValue());
return;
}

if (unit != _Unit)
throw Base::Exception("Not matching Unit!");

setValue(quant.getValue());
PropertyFloat::setValue(quant.getValue());
}

//**************************************************************************
Expand Down
2 changes: 2 additions & 0 deletions src/App/PropertyUnits.h
Expand Up @@ -54,6 +54,8 @@ class AppExport PropertyQuantity : public PropertyFloat
PropertyQuantity(void){}
virtual ~PropertyQuantity(){}

void setValue(const Base::Quantity& quant);

Base::Quantity getQuantityValue(void) const;

virtual const char* getEditorName(void) const;
Expand Down
8 changes: 8 additions & 0 deletions src/Mod/Fem/App/AppFem.cpp
Expand Up @@ -50,6 +50,10 @@
#include "FemConstraintGear.h"
#include "FemConstraintPulley.h"

#include "FemResultObject.h"
#include "FemResultValue.h"
#include "FemResultVector.h"

extern struct PyMethodDef Fem_methods[];

PyDoc_STRVAR(module_Fem_doc,
Expand Down Expand Up @@ -133,6 +137,10 @@ void AppFemExport initFem()
Fem::ConstraintForce ::init();
Fem::ConstraintGear ::init();
Fem::ConstraintPulley ::init();

Fem::FemResultObject ::init();
Fem::FemResultValue ::init();
Fem::FemResultVector ::init();
}

} // extern "C"
16 changes: 14 additions & 2 deletions src/Mod/Fem/App/CMakeLists.txt
Expand Up @@ -15,6 +15,7 @@ include_directories(
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_SOURCE_DIR}/src/3rdParty/ANN/include
${Boost_INCLUDE_DIRS}
${QT_INCLUDE_DIR}
${OCC_INCLUDE_DIR}
${PYTHON_INCLUDE_PATH}
${ZLIB_INCLUDE_DIR}
Expand Down Expand Up @@ -73,6 +74,10 @@ SET(FemBase_SRCS
FemAnalysis.h
FemMesh.cpp
FemMesh.h
FemResultObject.cpp
FemResultObject.h
FemConstraint.cpp
FemConstraint.h
FemMeshProperty.cpp
FemMeshProperty.h
)
Expand All @@ -94,8 +99,6 @@ SET(FemSet_SRCS
SOURCE_GROUP("Set objects" FILES ${FemSet_SRCS})

SET(FemConstraints_SRCS
FemConstraint.cpp
FemConstraint.h
FemConstraintBearing.h
FemConstraintBearing.cpp
FemConstraintFixed.cpp
Expand All @@ -109,10 +112,19 @@ SET(FemConstraints_SRCS
)
SOURCE_GROUP("Constraints" FILES ${FemConstraints_SRCS})

SET(FemResult_SRCS
FemResultValue.cpp
FemResultValue.h
FemResultVector.cpp
FemResultVector.h
)
SOURCE_GROUP("ResultObjects" FILES ${FemResult_SRCS})

SET(Fem_SRCS
${FemBase_SRCS}
${FemSet_SRCS}
${FemConstraints_SRCS}
${FemResult_SRCS}
${Mod_SRCS}
${Python_SRCS}
)
Expand Down
61 changes: 61 additions & 0 deletions src/Mod/Fem/App/FemResultObject.cpp
@@ -0,0 +1,61 @@
/***************************************************************************
* Copyright (c) 2013 Jürgen Riegel (FreeCAD@juergen-riegel.net) *
* *
* This file is part of the FreeCAD CAx development system. *
* *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Library General Public *
* License as published by the Free Software Foundation; either *
* version 2 of the License, or (at your option) any later version. *
* *
* This library is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Library General Public License for more details. *
* *
* You should have received a copy of the GNU Library General Public *
* License along with this library; see the file COPYING.LIB. If not, *
* write to the Free Software Foundation, Inc., 59 Temple Place, *
* Suite 330, Boston, MA 02111-1307, USA *
* *
***************************************************************************/


#include "PreCompiled.h"

#ifndef _PreComp_
#endif

#include "FemResultObject.h"
#include <App/DocumentObjectPy.h>

using namespace Fem;
using namespace App;

PROPERTY_SOURCE(Fem::FemResultObject, App::DocumentObject)


FemResultObject::FemResultObject()
{
ADD_PROPERTY_TYPE(DataType,(""), "General",Prop_None,"Type identifier of the result data");
ADD_PROPERTY_TYPE(Unit,(Base::Quantity()), "General",Prop_None,"Unit of the data");
}

FemResultObject::~FemResultObject()
{
}

short FemResultObject::mustExecute(void) const
{
return 0;
}

PyObject *FemResultObject::getPyObject()
{
if (PythonObject.is(Py::_None())){
// ref counter is set to 1
PythonObject = Py::Object(new DocumentObjectPy(this),true);
}
return Py::new_reference_to(PythonObject);
}

64 changes: 64 additions & 0 deletions src/Mod/Fem/App/FemResultObject.h
@@ -0,0 +1,64 @@
/***************************************************************************
* Copyright (c) 2013 Jürgen Riegel (FreeCAD@juergen-riegel.net) *
* *
* This file is part of the FreeCAD CAx development system. *
* *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Library General Public *
* License as published by the Free Software Foundation; either *
* version 2 of the License, or (at your option) any later version. *
* *
* This library is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Library General Public License for more details. *
* *
* You should have received a copy of the GNU Library General Public *
* License along with this library; see the file COPYING.LIB. If not, *
* write to the Free Software Foundation, Inc., 59 Temple Place, *
* Suite 330, Boston, MA 02111-1307, USA *
* *
***************************************************************************/


#ifndef Fem_FemResultObject_H
#define Fem_FemResultObject_H

#include <App/DocumentObject.h>
#include <App/PropertyUnits.h>
#include "FemResultObject.h"

namespace Fem
{
/// Father of all result data in a Fem Analysis
class AppFemExport FemResultObject : public App::DocumentObject
{
PROPERTY_HEADER(Fem::FemResultObject);

public:
/// Constructor
FemResultObject(void);
virtual ~FemResultObject();

/// Data type specifier of the data stored in this object
App::PropertyString DataType;
/// Unit and factor of the values
App::PropertyQuantity Unit;

/// returns the type name of the ViewProvider
//virtual const char* getViewProviderName(void) const {
// return "FemGui::ViewProviderFemSet";
//}
virtual App::DocumentObjectExecReturn *execute(void) {
return App::DocumentObject::StdReturn;
}
virtual short mustExecute(void) const;
virtual PyObject *getPyObject(void);


};

} //namespace Fem


#endif // Fem_FemResultObject_H
60 changes: 60 additions & 0 deletions src/Mod/Fem/App/FemResultValue.cpp
@@ -0,0 +1,60 @@
/***************************************************************************
* Copyright (c) 2013 Jürgen Riegel (FreeCAD@juergen-riegel.net) *
* *
* This file is part of the FreeCAD CAx development system. *
* *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Library General Public *
* License as published by the Free Software Foundation; either *
* version 2 of the License, or (at your option) any later version. *
* *
* This library is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Library General Public License for more details. *
* *
* You should have received a copy of the GNU Library General Public *
* License along with this library; see the file COPYING.LIB. If not, *
* write to the Free Software Foundation, Inc., 59 Temple Place, *
* Suite 330, Boston, MA 02111-1307, USA *
* *
***************************************************************************/


#include "PreCompiled.h"

#ifndef _PreComp_
#endif

#include "FemResultValue.h"
#include <App/DocumentObjectPy.h>

using namespace Fem;
using namespace App;

PROPERTY_SOURCE(Fem::FemResultValue, App::DocumentObject)


FemResultValue::FemResultValue()
{
ADD_PROPERTY_TYPE(Values,(0), "Fem",Prop_None,"List of values");
}

FemResultValue::~FemResultValue()
{
}

short FemResultValue::mustExecute(void) const
{
return 0;
}

PyObject *FemResultValue::getPyObject()
{
if (PythonObject.is(Py::_None())){
// ref counter is set to 1
PythonObject = Py::Object(new DocumentObjectPy(this),true);
}
return Py::new_reference_to(PythonObject);
}

63 changes: 63 additions & 0 deletions src/Mod/Fem/App/FemResultValue.h
@@ -0,0 +1,63 @@
/***************************************************************************
* Copyright (c) 2013 Jürgen Riegel (FreeCAD@juergen-riegel.net) *
* *
* This file is part of the FreeCAD CAx development system. *
* *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Library General Public *
* License as published by the Free Software Foundation; either *
* version 2 of the License, or (at your option) any later version. *
* *
* This library is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Library General Public License for more details. *
* *
* You should have received a copy of the GNU Library General Public *
* License along with this library; see the file COPYING.LIB. If not, *
* write to the Free Software Foundation, Inc., 59 Temple Place, *
* Suite 330, Boston, MA 02111-1307, USA *
* *
***************************************************************************/


#ifndef Fem_FemResultValue_H
#define Fem_FemResultValue_H


#include <App/PropertyStandard.h>

#include "FemResultObject.h"

namespace Fem
{
/// Father of all result data in a Fem Analysis
class AppFemExport FemResultValue : public Fem::FemResultObject
{
PROPERTY_HEADER(Fem::FemResultValue);

public:
/// Constructor
FemResultValue(void);
virtual ~FemResultValue();

/// List of values
App::PropertyFloatList Values;

/// returns the type name of the ViewProvider
//virtual const char* getViewProviderName(void) const {
// return "FemGui::ViewProviderFemSet";
//}
virtual App::DocumentObjectExecReturn *execute(void) {
return App::DocumentObject::StdReturn;
}
virtual short mustExecute(void) const;
virtual PyObject *getPyObject(void);


};

} //namespace Fem


#endif // Fem_FemResultValue_H

0 comments on commit feeb053

Please sign in to comment.