Objects for Results of FEM analysis

This commit is contained in:
jriegel 2013-11-27 20:13:57 +01:00
parent 680f4c82f7
commit feeb053e18
12 changed files with 407 additions and 4 deletions

View File

@ -136,6 +136,8 @@ public:
void setValues (const std::vector<Base::Vector3d>& values);
void setValue (void){};
const std::vector<Base::Vector3d> &getValues(void) const {
return _lValueList;
}

View File

@ -523,6 +523,8 @@ public:
/** Sets the property
*/
void setValue(double);
void setValue (void){};
/// index operator
double operator[] (const int idx) const {return _lValueList.operator[] (idx);}

View File

@ -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
{
@ -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());
}
//**************************************************************************

View File

@ -54,6 +54,8 @@ public:
PropertyQuantity(void){}
virtual ~PropertyQuantity(){}
void setValue(const Base::Quantity& quant);
Base::Quantity getQuantityValue(void) const;
virtual const char* getEditorName(void) const;

View File

@ -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,
@ -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"

View File

@ -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}
@ -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
)
@ -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
@ -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}
)

View File

@ -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);
}

View File

@ -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

View File

@ -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);
}

View File

@ -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

View File

@ -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 "FemResultVector.h"
#include <App/DocumentObjectPy.h>
using namespace Fem;
using namespace App;
PROPERTY_SOURCE(Fem::FemResultVector, App::DocumentObject)
FemResultVector::FemResultVector()
{
ADD_PROPERTY_TYPE(Values,(), "Fem",Prop_None,"Vector values");
}
FemResultVector::~FemResultVector()
{
}
short FemResultVector::mustExecute(void) const
{
return 0;
}
PyObject *FemResultVector::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);
}

View File

@ -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 *
* *
***************************************************************************/
#ifndef Fem_FemResultVector_H
#define Fem_FemResultVector_H
#include <App/PropertyGeo.h>
#include "FemResultObject.h"
namespace Fem
{
/// Father of all result data in a Fem Analysis
class AppFemExport FemResultVector : public Fem::FemResultObject
{
PROPERTY_HEADER(Fem::FemResultVector);
public:
/// Constructor
FemResultVector(void);
virtual ~FemResultVector();
/// Data type specifier of the data stored in this object
App::PropertyVectorList 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_FemResultVector_H