diff --git a/src/Mod/Fem/femexamples/ccx_cantilever_std.py b/src/Mod/Fem/femexamples/ccx_cantilever_std.py index c1d3fc0882..0ab4353f51 100644 --- a/src/Mod/Fem/femexamples/ccx_cantilever_std.py +++ b/src/Mod/Fem/femexamples/ccx_cantilever_std.py @@ -26,7 +26,7 @@ import FreeCAD import ObjectsFem import Fem -mesh_name = 'Mesh' # needs to be Mesh to work with unit tests +mesh_name = "Mesh" # needs to be Mesh to work with unit tests def init_doc(doc=None): @@ -35,56 +35,56 @@ def init_doc(doc=None): return doc -def setup_cantileverbase(doc=None, solver='ccxtools'): +def setup_cantileverbase(doc=None, solver="ccxtools"): # setup CalculiX cantilever base model if doc is None: doc = init_doc() # part - box_obj = doc.addObject('Part::Box', 'Box') + box_obj = doc.addObject("Part::Box", "Box") box_obj.Height = box_obj.Width = 1000 box_obj.Length = 8000 # analysis - analysis = ObjectsFem.makeAnalysis(doc, 'Analysis') + analysis = ObjectsFem.makeAnalysis(doc, "Analysis") # solver # TODO How to pass multiple solver for one analysis in one doc - if solver == 'calculix': + if solver == "calculix": solver_object = analysis.addObject( - ObjectsFem.makeSolverCalculix(doc, 'SolverCalculiX') + ObjectsFem.makeSolverCalculix(doc, "SolverCalculiX") )[0] - solver_object.AnalysisType = 'static' - solver_object.GeometricalNonlinearity = 'linear' + solver_object.AnalysisType = "static" + solver_object.GeometricalNonlinearity = "linear" solver_object.ThermoMechSteadyState = False - solver_object.MatrixSolverType = 'default' + solver_object.MatrixSolverType = "default" solver_object.IterationsControlParameterTimeUse = False - elif solver == 'ccxtools': + elif solver == "ccxtools": solver_object = analysis.addObject( - ObjectsFem.makeSolverCalculixCcxTools(doc, 'CalculiXccxTools') + ObjectsFem.makeSolverCalculixCcxTools(doc, "CalculiXccxTools") )[0] - solver_object.AnalysisType = 'static' - solver_object.GeometricalNonlinearity = 'linear' + solver_object.AnalysisType = "static" + solver_object.GeometricalNonlinearity = "linear" solver_object.ThermoMechSteadyState = False - solver_object.MatrixSolverType = 'default' + solver_object.MatrixSolverType = "default" solver_object.IterationsControlParameterTimeUse = False - solver_object.WorkingDir = u'' - elif solver == 'elmer': - analysis.addObject(ObjectsFem.makeSolverElmer(doc, 'SolverElmer')) - elif solver == 'z88': - analysis.addObject(ObjectsFem.makeSolverZ88(doc, 'SolverZ88')) + solver_object.WorkingDir = u"" + elif solver == "elmer": + analysis.addObject(ObjectsFem.makeSolverElmer(doc, "SolverElmer")) + elif solver == "z88": + analysis.addObject(ObjectsFem.makeSolverZ88(doc, "SolverZ88")) # material material_object = analysis.addObject( - ObjectsFem.makeMaterialSolid(doc, 'FemMaterial') + ObjectsFem.makeMaterialSolid(doc, "FemMaterial") )[0] mat = material_object.Material - mat['Name'] = "CalculiX-Steel" - mat['YoungsModulus'] = "210000 MPa" - mat['PoissonRatio'] = "0.30" - mat['Density'] = "7900 kg/m^3" - mat['ThermalExpansionCoefficient'] = "0.012 mm/m/K" + mat["Name"] = "CalculiX-Steel" + mat["YoungsModulus"] = "210000 MPa" + mat["PoissonRatio"] = "0.30" + mat["Density"] = "7900 kg/m^3" + mat["ThermalExpansionCoefficient"] = "0.012 mm/m/K" material_object.Material = mat # fixed_constraint @@ -98,12 +98,12 @@ def setup_cantileverbase(doc=None, solver='ccxtools'): fem_mesh = Fem.FemMesh() control = create_nodes(fem_mesh) if not control: - print('ERROR on creating nodes') + print("ERROR on creating nodes") control = create_elements(fem_mesh) if not control: - print('ERROR on creating elements') + print("ERROR on creating elements") femmesh_obj = analysis.addObject( - doc.addObject('Fem::FemMeshObject', mesh_name) + doc.addObject("Fem::FemMeshObject", mesh_name) )[0] femmesh_obj.FemMesh = fem_mesh @@ -111,7 +111,7 @@ def setup_cantileverbase(doc=None, solver='ccxtools'): return doc -def setup_cantileverfaceload(doc=None, solver='ccxtools'): +def setup_cantileverfaceload(doc=None, solver="ccxtools"): # setup CalculiX cantilever, apply 9 MN on surface of front end face doc = setup_cantileverbase(doc, solver) @@ -129,7 +129,7 @@ def setup_cantileverfaceload(doc=None, solver='ccxtools'): return doc -def setup_cantilevernodeload(doc=None, solver='ccxtools'): +def setup_cantilevernodeload(doc=None, solver="ccxtools"): # setup CalculiX cantilever, apply 9 MN on the 4 nodes of the front end face doc = setup_cantileverbase(doc, solver) @@ -153,7 +153,7 @@ def setup_cantilevernodeload(doc=None, solver='ccxtools'): return doc -def setup_cantileverprescribeddisplacement(doc=None, solver='ccxtools'): +def setup_cantileverprescribeddisplacement(doc=None, solver="ccxtools"): # setup CalculiX cantilever # apply a prescribed displacement of 250 mm in -z on the front end face @@ -172,7 +172,7 @@ def setup_cantileverprescribeddisplacement(doc=None, solver='ccxtools'): return doc -''' +""" from femexamples import ccx_cantilever_std as canti canti.setup_cantileverbase() @@ -180,4 +180,4 @@ canti.setup_cantileverfaceload() canti.setup_cantilevernodeload() canti.setup_cantileverprescribeddisplacement() -''' +""" diff --git a/src/Mod/Fem/femexamples/manager.py b/src/Mod/Fem/femexamples/manager.py index 3d54e1a8d6..7e569a956b 100644 --- a/src/Mod/Fem/femexamples/manager.py +++ b/src/Mod/Fem/femexamples/manager.py @@ -25,7 +25,7 @@ import FreeCAD -def run_analysis(doc, base_name, filepath=''): +def run_analysis(doc, base_name, filepath=""): from os.path import join, exists from os import makedirs @@ -38,8 +38,8 @@ def run_analysis(doc, base_name, filepath=''): # print([obj.Name for obj in doc.Objects]) # filepath - if filepath is '': - filepath = join(gettmp(), 'FEM_examples') + if filepath is "": + filepath = join(gettmp(), "FEM_examples") if not exists(filepath): makedirs(filepath) @@ -48,14 +48,14 @@ def run_analysis(doc, base_name, filepath=''): for m in doc.Analysis.Group: from femtools.femutils import is_derived_from if is_derived_from(m, "Fem::FemSolverObjectPython") \ - and m.Proxy.Type is not 'Fem::FemSolverCalculixCcxTools': + and m.Proxy.Type is not "Fem::FemSolverCalculixCcxTools": solver = m break # we need a file name for the besides dir to work - save_fc_file = join(filepath, (base_name + '.FCStd')) + save_fc_file = join(filepath, (base_name + ".FCStd")) FreeCAD.Console.PrintMessage( - 'Save FreeCAD file for {} analysis to {}\n.'.format(base_name, save_fc_file) + "Save FreeCAD file for {} analysis to {}\n.".format(base_name, save_fc_file) ) doc.saveAs(save_fc_file) @@ -84,9 +84,9 @@ def run_ccx_cantileverfaceload(solver=None, base_name=None): doc = setup() if base_name is None: - base_name = 'CantilverFaceLoad' + base_name = "CantilverFaceLoad" if solver is not None: - base_name += ('_' + solver) + base_name += ("_" + solver) run_analysis(doc, base_name) return doc @@ -98,9 +98,9 @@ def run_ccx_cantilevernodeload(solver=None, base_name=None): doc = setup() if base_name is None: - base_name = 'CantileverNodeLoad' + base_name = "CantileverNodeLoad" if solver is not None: - base_name += ('_' + solver) + base_name += ("_" + solver) run_analysis(doc, base_name) return doc @@ -112,9 +112,9 @@ def run_ccx_cantileverprescribeddisplacement(solver=None, base_name=None): doc = setup() if base_name is None: - base_name = 'CantileverPrescribedDisplacement' + base_name = "CantileverPrescribedDisplacement" if solver is not None: - base_name += ('_' + solver) + base_name += ("_" + solver) run_analysis(doc, base_name) return doc @@ -126,15 +126,15 @@ def run_rcwall2d(solver=None, base_name=None): doc = setup() if base_name is None: - base_name = 'RC_FIB_Wall_2D' + base_name = "RC_FIB_Wall_2D" if solver is not None: - base_name += ('_' + solver) + base_name += ("_" + solver) run_analysis(doc, base_name) return doc -''' +""" from femexamples.manager import * run_all() @@ -143,10 +143,10 @@ doc = run_ccx_cantileverfaceload() doc = run_ccx_cantilevernodeload() doc = run_ccx_cantileverprescribeddisplacement() -doc = run_ccx_cantilevernodeload('calculix') -doc = run_ccx_cantilevernodeload('ccxtools') -doc = run_ccx_cantilevernodeload('z88') +doc = run_ccx_cantilevernodeload("calculix") +doc = run_ccx_cantilevernodeload("ccxtools") +doc = run_ccx_cantilevernodeload("z88") doc = run_rcwall2d() -''' +""" diff --git a/src/Mod/Fem/femexamples/rc_wall_2d.py b/src/Mod/Fem/femexamples/rc_wall_2d.py index c4efa514e7..b73d66e6e0 100644 --- a/src/Mod/Fem/femexamples/rc_wall_2d.py +++ b/src/Mod/Fem/femexamples/rc_wall_2d.py @@ -26,7 +26,7 @@ import FreeCAD import ObjectsFem import Fem -mesh_name = 'Mesh' # needs to be Mesh to work with unit tests +mesh_name = "Mesh" # needs to be Mesh to work with unit tests def init_doc(doc=None): @@ -35,7 +35,7 @@ def init_doc(doc=None): return doc -def setup_rcwall2d(doc=None, solver='ccxtools'): +def setup_rcwall2d(doc=None, solver="ccxtools"): # setup reinfoced wall in 2D if doc is None: @@ -66,52 +66,52 @@ def setup_rcwall2d(doc=None, solver='ccxtools'): rcwall.Shape = Part.Face(Part.Wire([l1, l2, l3, l4, l5, l6, l7, l8])) # analysis - analysis = ObjectsFem.makeAnalysis(doc, 'Analysis') + analysis = ObjectsFem.makeAnalysis(doc, "Analysis") # solver # TODO How to pass multiple solver for one analysis in one doc - if solver == 'calculix': + if solver == "calculix": solver = analysis.addObject( - ObjectsFem.makeSolverCalculix(doc, 'SolverCalculiX') + ObjectsFem.makeSolverCalculix(doc, "SolverCalculiX") )[0] - solver.AnalysisType = 'static' - solver.GeometricalNonlinearity = 'linear' + solver.AnalysisType = "static" + solver.GeometricalNonlinearity = "linear" solver.ThermoMechSteadyState = False - solver.MatrixSolverType = 'default' + solver.MatrixSolverType = "default" solver.IterationsControlParameterTimeUse = False - elif solver == 'ccxtools': + elif solver == "ccxtools": solver = analysis.addObject( - ObjectsFem.makeSolverCalculixCcxTools(doc, 'CalculiXccxTools') + ObjectsFem.makeSolverCalculixCcxTools(doc, "CalculiXccxTools") )[0] - solver.AnalysisType = 'static' - solver.GeometricalNonlinearity = 'linear' + solver.AnalysisType = "static" + solver.GeometricalNonlinearity = "linear" solver.ThermoMechSteadyState = False - solver.MatrixSolverType = 'default' + solver.MatrixSolverType = "default" solver.IterationsControlParameterTimeUse = False - solver.WorkingDir = u'' + solver.WorkingDir = u"" # shell thickness thickness = analysis.addObject( - ObjectsFem.makeElementGeometry2D(doc, 0, 'ShellThickness') + ObjectsFem.makeElementGeometry2D(doc, 0, "ShellThickness") )[0] thickness.Thickness = 150.0 # material matrixprop = {} - matrixprop['Name'] = "Concrete-EN-C35/45" - matrixprop['YoungsModulus'] = "32000 MPa" - matrixprop['PoissonRatio'] = "0.17" - matrixprop['CompressiveStrength'] = "15.75 MPa" + matrixprop["Name"] = "Concrete-EN-C35/45" + matrixprop["YoungsModulus"] = "32000 MPa" + matrixprop["PoissonRatio"] = "0.17" + matrixprop["CompressiveStrength"] = "15.75 MPa" # make some hint on the possible angle units in material system - matrixprop['AngleOfFriction'] = "30 deg" - matrixprop['Density'] = '2500 kg/m^3' + matrixprop["AngleOfFriction"] = "30 deg" + matrixprop["Density"] = "2500 kg/m^3" reinfoprop = {} - reinfoprop['Name'] = "Reinforcement-FIB-B500" - reinfoprop['YieldStrength'] = "315 MPa" + reinfoprop["Name"] = "Reinforcement-FIB-B500" + reinfoprop["YieldStrength"] = "315 MPa" # not an official FreeCAD material property - reinfoprop['ReinforcementRatio'] = "0.0" + reinfoprop["ReinforcementRatio"] = "0.0" material_reinforced = analysis.addObject( - ObjectsFem.makeMaterialReinforced(doc, 'MaterialReinforced') + ObjectsFem.makeMaterialReinforced(doc, "MaterialReinforced") )[0] material_reinforced.Material = matrixprop material_reinforced.Reinforcement = reinfoprop @@ -143,12 +143,12 @@ def setup_rcwall2d(doc=None, solver='ccxtools'): fem_mesh = Fem.FemMesh() control = create_nodes(fem_mesh) if not control: - print('ERROR on creating nodes') + print("ERROR on creating nodes") control = create_elements(fem_mesh) if not control: - print('ERROR on creating elements') + print("ERROR on creating elements") femmesh_obj = analysis.addObject( - doc.addObject('Fem::FemMeshObject', mesh_name) + doc.addObject("Fem::FemMeshObject", mesh_name) )[0] femmesh_obj.FemMesh = fem_mesh @@ -156,8 +156,8 @@ def setup_rcwall2d(doc=None, solver='ccxtools'): return doc -''' +""" from femexamples import rc_wall_2d as rc rc.setup_rcwall2d() -''' +"""