Package: ada-py
ADA - Assembly for Design & AnalysisA python library for working with structural analysis and design. This library should be considered as experimental.The recommended way of installing ada-py is by creating a new isolated environment for the installation like so:conda create -n adaenv -c conda-forge -c krande ada-pyor if you wish to download the latest build from any branch passing all unittests you can doconda create -n adaenv -c conda-forge -c krande/label/dev ada-pyHere are some of the goals withada-py:Support reading, writing and modifying FE models and post-processing FE resultsSupport open source and commercial FE packages (based on what I use/would like to use regularly)Support scriptable FE meshingSupport reading/writing CAD/BIM formats (STEP/IFC) & mesh formats (GLTF)Use a CSG (Constructive Solid Geometry) core primitives library for boolean operations based on the IFC/STEP standardsProvide the building blocks for advanced parametric and procedural 3d model design and simulation workflowsThe library should always strive for user ergonomics.Quick LinksTry ada-py online with code-aster and calculix pre-installedFeel free to start/join any informal topic related to adapyhere.Issues related to adapy can be raisedhereUsageSome examples of using the ada-py packageCreate an IFC fileThe following codefromadaimportAssembly,Part,Beama=Assembly("MyAssembly")/(Part("MyPart")/Beam("MyBeam",(0,0,0),(1,0,0),"IPE300"))a.to_ifc("C:/temp/myifc.ifc")creates an Ifc file containing an IfcBeam with the following hierarchyMyAssembly (IfSite)
    MyPart (IfcBuildingStorey)
        MyBeam (IfcBeam)The resulting IfcBeam (and corresponding hierarchy) shown in the figure above is taken from the awesomeblenderpluginblenderbim.Convert between FEM formatsHere is an example showing the code for converting a sesam FEM file to abaqus and code asterNote! Reading FEM load and step information is not supported, but might be added in the future.importadaa=ada.from_fem('path_to_your_sesam_file.FEM')a.to_fem('name_of_my_analysis_file_deck_directory_abaqus','abaqus')a.to_fem('name_of_my_analysis_file_deck_directory_code_aster','code_aster')Current read support is: abaqus, code aster and sesamCurrent write support is: abaqus, code aster and sesam, calculix and usfosCreate and execute a FEM analysis in Calculix, Code Aster and AbaqusThis example uses a functionbeam_ex1fromherethat returns an
Assembly object with a singleBeamwith a few holes in it (to demonstrate a small portion of the steel detailing
capabilities in ada and IFC) converted to a shell element mesh using a FE mesh recipecreate_beam_meshfoundhere.fromada.param_models.fem_modelsimportbeam_ex1a=beam_ex1()a.to_fem("MyCantilever_abaqus","abaqus",overwrite=True,execute=True,run_ext=True)a.to_fem("MyCantilever_calculix","calculix",overwrite=True,execute=True)a.to_fem("MyCantilever_code_aster","code_aster",overwrite=True,execute=True)after the code is executed you can look at the results using supported post-processing software or directly
in python using Jupyter notebook/lab (currently only supported for Code Aster) for the FEA results.To access the stress and displacement data directly using python here is a way you can use meshio to read the results
from Calculix and Code Aster (continuing on the previous example).fromada.configimportSettingsimportmeshiovtu=Settings.scratch_dir/"MyCantilever_calculix"/"MyCantilever_calculix.vtu"mesh=meshio.read(vtu)# Displacements in [X, Y, Z] at point @ index=-1print('Calculix:',mesh.point_data['U'][-1])rmed=Settings.scratch_dir/"MyCantilever_code_aster"/"MyCantilever_code_aster.rmed"ca_mesh=meshio.read(rmed,'med')# Displacements in [X, Y, Z] at point @ index=-1print('Code Aster:',ca_mesh.point_data['DISP[10] - 1'][-1][:3])Note!The above example assumes you have installed Abaqus, Calculix and Code Aster locally on your computer.To set correct paths to your installations of FE software you wish to use there are a few ways of doing so.Add directory path of FE executable/batch to your system path.Add directory paths to system environment variables. This can be done by using the control panel or
running the following from a cmd prompt with administrator rights::: Windows
setx ADA_abaqus_exe <absolute path to abaqus.bat>
setx ADA_calculix_exe <absolute path to ccx.exe>
setx ADA_code_aster_exe <absolute path to as_run.bat>

:: Linux?

:: Mac?Note! It is very important that any paths containing whitespaces be converted to "shortened paths". To shorten a path
on windows you can use the utilitypathcopycopy.For installation files of open source FEM software such as Calculix and Code Aster, here are some links:https://github.com/calculix/cae/releases(calculix CAE for windows/linux)https://code-aster-windows.com/download/(Code Aster for Windows Salome Meca v9.3.0)https://www.code-aster.org/spip.php?rubrique21(Code Aster for Linux)https://salome-platform.org/downloads/current-version(Salome v9.6.0 for windows/linux)https://prepomax.fs.um.si/downloads/(PreProMax -> Calculix preprocessor)Note!pip is not a recommended installation method due to an unstable behaviour often
manifested as DLL import errors related to the vtk package.AcknowledgementsThis project would never have been possible without the existing open source python and c++ libraries.
Although listed in the package dependencies (which is a long list), here are some of the packages that are at the very
core of adapy;IfcOpenShellOpenCascadePythonOCC-CoreGmshTrimeshA huge thanks to all involved in the development of the packages mentioned here and in the list of packages adapy
depends on.If you feel that a certain package listed in the adapy dependencies should be listed here please let me know and I will
update the list :)Project ResponsibleKristoffer H. Andersen