Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
FEM: new solver object implementation of the object
- Loading branch information
1 parent
3918d9f
commit 80cf664
Showing
10 changed files
with
375 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
/*************************************************************************** | ||
* Copyright (c) 2013 J¨¹rgen Riegel (FreeCAD@juergen-riegel.net) * | ||
* Copyright (c) 2015 Qingfeng Xia (FreeCAD@iesensor.com) * | ||
* * | ||
* 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 "FemSolverObject.h" | ||
|
||
#include <Base/FileInfo.h> | ||
#include <App/FeaturePythonPyImp.h> | ||
#include <App/DocumentObjectPy.h> | ||
|
||
|
||
using namespace Fem; | ||
using namespace App; | ||
|
||
PROPERTY_SOURCE(Fem::FemSolverObject, App::DocumentObject) | ||
|
||
|
||
FemSolverObject::FemSolverObject() | ||
{ | ||
|
||
ADD_PROPERTY_TYPE(SolverName,("Calculix"), "Data",Prop_None,"Solver program name"); | ||
ADD_PROPERTY_TYPE(Category,("FEM"), "Data",Prop_None,"FEM, CFD ..."); | ||
ADD_PROPERTY_TYPE(Module,(""), "Data",Prop_None,"Python module name"); | ||
ADD_PROPERTY_TYPE(ExternalCaseEditor,(""), "Data",Prop_None,"External case editor programe"); | ||
ADD_PROPERTY_TYPE(ExternalResultViewer,(""), "Data",Prop_None,"External result viewer name"); | ||
|
||
ADD_PROPERTY_TYPE(AnalysisType,("Static"), "Solver",Prop_None,"Specific analysis type"); | ||
ADD_PROPERTY_TYPE(WorkingDir,(Base::FileInfo::getTempPath()), "Solver",Prop_None,"Solver working directory"); | ||
ADD_PROPERTY_TYPE(InputCaseName,("TestCase"), "Solver",Prop_None,"Solver input file without suffix"); | ||
ADD_PROPERTY_TYPE(Parallel,(false), "Solver",Prop_None,"Run solver in parallel like MPI"); | ||
ADD_PROPERTY_TYPE(ResultObtained,(false), "Solver",Prop_None,"if true, result has been obtained"); | ||
} | ||
|
||
FemSolverObject::~FemSolverObject() | ||
{ | ||
} | ||
|
||
short FemSolverObject::mustExecute(void) const | ||
{ | ||
return 0; | ||
} | ||
|
||
PyObject *FemSolverObject::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); | ||
} | ||
|
||
// Python feature --------------------------------------------------------- | ||
|
||
namespace App { | ||
/// @cond DOXERR | ||
PROPERTY_SOURCE_TEMPLATE(Fem::FemSolverObjectPython, Fem::FemSolverObject) | ||
template<> const char* Fem::FemSolverObjectPython::getViewProviderName(void) const { | ||
return "FemGui::ViewProviderSolverPython"; | ||
} | ||
|
||
template<> PyObject* Fem::FemSolverObjectPython::getPyObject(void) { | ||
if (PythonObject.is(Py::_None())) { | ||
// ref counter is set to 1 | ||
PythonObject = Py::Object(new App::FeaturePythonPyT<App::DocumentObjectPy>(this),true); | ||
} | ||
return Py::new_reference_to(PythonObject); | ||
} | ||
|
||
// explicit template instantiation | ||
template class AppFemExport FeaturePythonT<Fem::FemSolverObject>; | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
/*************************************************************************** | ||
* Copyright (c) 2013 Jürgen Riegel (FreeCAD@juergen-riegel.net) * | ||
* Copyright (c) 2015 Qingfeng Xia (FreeCAD@iesensor.com) * | ||
* * | ||
* 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_FemSolverObject_H | ||
#define Fem_FemSolverObject_H | ||
|
||
#include <App/DocumentObject.h> | ||
#include <App/PropertyUnits.h> | ||
#include <App/PropertyStandard.h> | ||
#include <App/FeaturePython.h> | ||
#include "FemSolverObject.h" | ||
|
||
namespace Fem | ||
{ | ||
/// Father of all result data in a Fem Analysis | ||
class AppFemExport FemSolverObject : public App::DocumentObject | ||
{ | ||
PROPERTY_HEADER(Fem::FemSolverObject); | ||
|
||
public: | ||
/// Constructor | ||
FemSolverObject(void); | ||
virtual ~FemSolverObject(); | ||
|
||
/// Solver name, unique to identify solver in registered_solver dict | ||
App::PropertyString SolverName; | ||
/// CAE category like FEM, all capitalised letters | ||
App::PropertyString Category; | ||
/// python module name | ||
App::PropertyString Module; | ||
/// Path or program name for external case editor, empty string means using FreeCAD to view | ||
App::PropertyString ExternalCaseEditor; | ||
/// Path to External Result Viewer like Paraview, empty string means using FreeCAD | ||
App::PropertyString ExternalResultViewer; | ||
|
||
/// for FEM: Static, Frequency, etc | ||
App::PropertyString AnalysisType; | ||
/// Path of working dir for the solver | ||
App::PropertyString WorkingDir; | ||
/// name for the case file without suffix | ||
App::PropertyString InputCaseName; | ||
/// run parallel in MPI (message passing interface)/multiple cores or serial(single CPU) | ||
App::PropertyBool Parallel; | ||
/// result has been obtained, purge result may be needed for rerun | ||
App::PropertyBool ResultObtained; | ||
|
||
/// returns the type name of the ViewProvider | ||
virtual const char* getViewProviderName(void) const { | ||
return "FemGui::ViewProviderSolver"; | ||
} | ||
virtual App::DocumentObjectExecReturn *execute(void) { | ||
return App::DocumentObject::StdReturn; | ||
} | ||
virtual short mustExecute(void) const; | ||
virtual PyObject *getPyObject(void); | ||
|
||
}; | ||
|
||
typedef App::FeaturePythonT<FemSolverObject> FemSolverObjectPython; | ||
|
||
} //namespace Fem | ||
|
||
|
||
#endif // Fem_FemSolverObject_H |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
/*************************************************************************** | ||
* 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_ | ||
# include <Standard_math.hxx> | ||
|
||
#endif | ||
|
||
#include "ViewProviderSolver.h" | ||
#include <Gui/Command.h> | ||
#include <Gui/Document.h> | ||
#include <Gui/Control.h> | ||
|
||
#include <Mod/Fem/App/FemAnalysis.h> | ||
|
||
#include "TaskDlgAnalysis.h" | ||
|
||
using namespace FemGui; | ||
|
||
|
||
|
||
PROPERTY_SOURCE(FemGui::ViewProviderSolver, Gui::ViewProviderDocumentObject) | ||
|
||
|
||
ViewProviderSolver::ViewProviderSolver() | ||
{ | ||
sPixmap = "fem-solver"; | ||
|
||
} | ||
|
||
ViewProviderSolver::~ViewProviderSolver() | ||
{ | ||
|
||
} | ||
|
||
|
||
|
||
// Python feature ----------------------------------------------------------------------- | ||
|
||
namespace Gui { | ||
/// @cond DOXERR | ||
PROPERTY_SOURCE_TEMPLATE(FemGui::ViewProviderSolverPython, FemGui::ViewProviderSolver) | ||
/// @endcond | ||
|
||
// explicit template instantiation | ||
template class FemGuiExport ViewProviderPythonFeatureT<ViewProviderSolver>; | ||
} |
Oops, something went wrong.