FEM Macros

About the development of the FEM module/workbench.

Moderator: bernd

Post Reply
User avatar
aomanchuria
Posts: 31
Joined: Fri Oct 09, 2020 3:13 pm

FEM Macros

Post by aomanchuria »

I was just thinking that maybe I could run a batch mode .inp generation by creating a macro

this runs the solver:

Code: Select all

 Gui.runCommand('FEM_SolverRun',0)

this opens the Solver CcxTools feature where one could click a button to save "inp" file

Code: Select all

App.getDocument('macro_test').getObject('SolverCcxTools').ViewObject.doubleClicked()
but then the actual button saves nothing, there is no record so one could figure out some usable code from that. Any input on this?

what I want to do is this: create a model that runs on FEM (gets a calculix result). Then run this macro to change its size a few times and each time it changes I wan to create an inp file
.py file:

Code: Select all

from PySide import QtCore
import numpy as np
from numpy import arange, sin, cos, pi

global p, i, Dia, Rdia, Doc
i=0
Dia=20
Rdia=21
Doc="macro_test"

App.getDocument(Doc).getObject('Sketch').setDatum('MemDia',App.Units.Quantity(str(Dia)+' mm'))
App.getDocument(Doc).getObject('Sketch').setDatum('RefDia',App.Units.Quantity(str(Rdia)+' mm'))
App.getDocument(Doc).recompute()

for x in range(6):
	Dia = Dia-i# diameter value	
	Rdia = Rdia-i# diameter value
	App.getDocument(Doc).getObject('Sketch').setDatum('MemDia',App.Units.Quantity(str(Dia)+' mm'))
	App.getDocument(Doc).getObject('Sketch').setDatum('RefDia',App.Units.Quantity(str(Rdia)+' mm'))
	App.getDocument(Doc).recompute()
	print(i, Dia, Rdia)
	i+=1


Dia=20
Rdia=21

App.getDocument(Doc).getObject('Sketch').setDatum('MemDia',App.Units.Quantity(str(Dia)+' mm'))
App.getDocument(Doc).getObject('Sketch').setDatum('RefDia',App.Units.Quantity(str(Rdia)+' mm'))
App.getDocument(Doc).recompute()
after I gather a few of these inp files I was just going to run a python script to crunch the numbers:

Code: Select all

# -*- coding: utf-8 -*-
"""
Created on Wed Jan 13 09:35:22 2021

@author: this guy right here
"""

#imports for running CCX and output file conversion
import os
import ccx2paraview
import logging

#imports for file modification:
from tempfile import mkstemp
from shutil import move, copymode
from os import fdopen, remove

########### set the processor number to 64 
os.environ['CCX_NPROC_STIFFNESS'] = "64" 
os.environ['NUMBER_OF_PROCESSORS'] = "64" 
os.environ['OMP_NUM_THREADS'] = "64"
os.environ['NUMBERS_OF_PROCESSORS'] = "64"

os.environ['CCX_NPROC_STIFFNESS'] = "64"
os.environ['CCX_NPROC_EQUATION_SOLVER'] = "64"
os.environ['CCX_NPROC_RESULTS'] = "64"
os.environ['CCX_NPROC_VIEWFACTOR'] = "64"
os.environ['CCX_NPROC_CFD'] = "64"
os.environ['CCX_NPROC_BIOTSAVART'] = "64"

cwd = os.getcwd()

#Do this for a bunch of files:

Solver=r"C:\calculix_location\ccx_SPOOLES.exe"
Setupname=r'FEMMeshGmsh'


os.system(Solver+r" "+Setupname);
#input("Press enter to exit ;")

#convert output to VTK (vtu) format so paraview can use it 
frd_file_name= Setupname+'.frd'


#os.chdir(path)
logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s')
c = ccx2paraview.Converter(frd_file_name, ['vtu'])
c.run()
input("Press enter to exit ;")
then finally when I get a pile of VTU files in my work folder, I simply concatenate the files for use with paraview using a .pvd file:

Code: Select all

<?xml version="1.0"?>
<VTKFile type="Collection" version="0.1" byte_order="LittleEndian">
	<Collection>
		<DataSet file="FEMMeshNetgen.001.vtu" timestep="0.015625"/>
		<DataSet file="FEMMeshNetgen.002.vtu" timestep="0.03125"/>
		<DataSet file="FEMMeshNetgen.003.vtu" timestep="0.0371094"/>
		<DataSet file="FEMMeshNetgen.004.vtu" timestep="0.0429688"/>
		<DataSet file="FEMMeshNetgen.005.vtu" timestep="0.045166"/>
		<DataSet file="FEMMeshNetgen.006.vtu" timestep="0.0473633"/>
		<DataSet file="FEMMeshNetgen.007.vtu" timestep="0.0506592"/>
		<DataSet file="FEMMeshNetgen.008.vtu" timestep="0.0518951"/>
		<DataSet file="FEMMeshNetgen.009.vtu" timestep="0.0531311"/>
		<DataSet file="FEMMeshNetgen.010.vtu" timestep="0.054985"/>
		<DataSet file="FEMMeshNetgen.011.vtu" timestep="0.057766"/>
		<DataSet file="FEMMeshNetgen.012.vtu" timestep="0.0619373"/>
		<DataSet file="FEMMeshNetgen.013.vtu" timestep="0.0635016"/>
		<DataSet file="FEMMeshNetgen.014.vtu" timestep="0.0650659"/>
		<DataSet file="FEMMeshNetgen.015.vtu" timestep="0.0674123"/>
		<DataSet file="FEMMeshNetgen.016.vtu" timestep="0.0709319"/>
		<DataSet file="FEMMeshNetgen.017.vtu" timestep="0.0762112"/>
		<DataSet file="FEMMeshNetgen.018.vtu" timestep="0.078191"/>
		<DataSet file="FEMMeshNetgen.019.vtu" timestep="0.0801708"/>
		<DataSet file="FEMMeshNetgen.020.vtu" timestep="0.0831404"/>
		<DataSet file="FEMMeshNetgen.021.vtu" timestep="0.0875949"/>
		<DataSet file="FEMMeshNetgen.022.vtu" timestep="0.0892654"/>
		<DataSet file="FEMMeshNetgen.023.vtu" timestep="0.0909358"/>
		<DataSet file="FEMMeshNetgen.024.vtu" timestep="0.0934414"/>
		<DataSet file="FEMMeshNetgen.025.vtu" timestep="0.0971999"/>
		<DataSet file="FEMMeshNetgen.026.vtu" timestep="0.102838"/>
		<DataSet file="FEMMeshNetgen.027.vtu" timestep="0.104952"/>
		<DataSet file="FEMMeshNetgen.028.vtu" timestep="0.107066"/>
		<DataSet file="FEMMeshNetgen.029.vtu" timestep="0.110237"/>
		<DataSet file="FEMMeshNetgen.030.vtu" timestep="0.114994"/>
		<DataSet file="FEMMeshNetgen.031.vtu" timestep="0.122129"/>
		<DataSet file="FEMMeshNetgen.032.vtu" timestep="0.124805"/>
		<DataSet file="FEMMeshNetgen.033.vtu" timestep="0.127481"/>
		<DataSet file="FEMMeshNetgen.034.vtu" timestep="0.131494"/>
		<DataSet file="FEMMeshNetgen.035.vtu" timestep="0.137515"/>
		<DataSet file="FEMMeshNetgen.036.vtu" timestep="0.146545"/>
		<DataSet file="FEMMeshNetgen.037.vtu" timestep="0.149931"/>
		<DataSet file="FEMMeshNetgen.038.vtu" timestep="0.153318"/>
		<DataSet file="FEMMeshNetgen.039.vtu" timestep="0.158398"/>
		<DataSet file="FEMMeshNetgen.040.vtu" timestep="0.166017"/>
		<DataSet file="FEMMeshNetgen.041.vtu" timestep="0.168874"/>
		<DataSet file="FEMMeshNetgen.042.vtu" timestep="0.171732"/>
		<DataSet file="FEMMeshNetgen.043.vtu" timestep="0.176018"/>
		<DataSet file="FEMMeshNetgen.044.vtu" timestep="0.182447"/>
		<DataSet file="FEMMeshNetgen.045.vtu" timestep="0.184857"/>
		<DataSet file="FEMMeshNetgen.046.vtu" timestep="0.187268"/>
		<DataSet file="FEMMeshNetgen.047.vtu" timestep="0.190885"/>
		<DataSet file="FEMMeshNetgen.048.vtu" timestep="0.196309"/>
		<DataSet file="FEMMeshNetgen.049.vtu" timestep="0.198343"/>
		<DataSet file="FEMMeshNetgen.050.vtu" timestep="0.200377"/>
		<DataSet file="FEMMeshNetgen.051.vtu" timestep="0.203429"/>
		<DataSet file="FEMMeshNetgen.052.vtu" timestep="0.208006"/>
		<DataSet file="FEMMeshNetgen.053.vtu" timestep="0.214871"/>
		<DataSet file="FEMMeshNetgen.054.vtu" timestep="0.217445"/>
		<DataSet file="FEMMeshNetgen.055.vtu" timestep="0.22002"/>
		<DataSet file="FEMMeshNetgen.056.vtu" timestep="0.223881"/>
		<DataSet file="FEMMeshNetgen.057.vtu" timestep="0.229674"/>
		<DataSet file="FEMMeshNetgen.058.vtu" timestep="0.231846"/>
		<DataSet file="FEMMeshNetgen.059.vtu" timestep="0.234019"/>
		<DataSet file="FEMMeshNetgen.060.vtu" timestep="0.237277"/>
		<DataSet file="FEMMeshNetgen.061.vtu" timestep="0.242164"/>
		<DataSet file="FEMMeshNetgen.062.vtu" timestep="0.249496"/>
		<DataSet file="FEMMeshNetgen.063.vtu" timestep="0.252245"/>
		<DataSet file="FEMMeshNetgen.064.vtu" timestep="0.254994"/>
		<DataSet file="FEMMeshNetgen.065.vtu" timestep="0.259118"/>
		<DataSet file="FEMMeshNetgen.066.vtu" timestep="0.265304"/>
		<DataSet file="FEMMeshNetgen.067.vtu" timestep="0.267623"/>
		<DataSet file="FEMMeshNetgen.068.vtu" timestep="0.269943"/>
		<DataSet file="FEMMeshNetgen.069.vtu" timestep="0.273422"/>
		<DataSet file="FEMMeshNetgen.070.vtu" timestep="0.278642"/>
		<DataSet file="FEMMeshNetgen.071.vtu" timestep="0.28647"/>
		<DataSet file="FEMMeshNetgen.072.vtu" timestep="0.289406"/>
		<DataSet file="FEMMeshNetgen.073.vtu" timestep="0.292342"/>
		<DataSet file="FEMMeshNetgen.074.vtu" timestep="0.296746"/>
		<DataSet file="FEMMeshNetgen.075.vtu" timestep="0.303351"/>
		<DataSet file="FEMMeshNetgen.076.vtu" timestep="0.305828"/>
		<DataSet file="FEMMeshNetgen.077.vtu" timestep="0.308306"/>
		<DataSet file="FEMMeshNetgen.078.vtu" timestep="0.312021"/>
		<DataSet file="FEMMeshNetgen.079.vtu" timestep="0.317595"/>
		<DataSet file="FEMMeshNetgen.080.vtu" timestep="0.319685"/>
		<DataSet file="FEMMeshNetgen.081.vtu" timestep="0.321775"/>
		<DataSet file="FEMMeshNetgen.082.vtu" timestep="0.32491"/>
		<DataSet file="FEMMeshNetgen.083.vtu" timestep="0.329612"/>
		<DataSet file="FEMMeshNetgen.084.vtu" timestep="0.331376"/>
		<DataSet file="FEMMeshNetgen.085.vtu" timestep="0.333139"/>
		<DataSet file="FEMMeshNetgen.086.vtu" timestep="0.335785"/>
		<DataSet file="FEMMeshNetgen.087.vtu" timestep="0.339752"/>
		<DataSet file="FEMMeshNetgen.088.vtu" timestep="0.345704"/>
		<DataSet file="FEMMeshNetgen.089.vtu" timestep="0.347936"/>
		<DataSet file="FEMMeshNetgen.090.vtu" timestep="0.350168"/>
		<DataSet file="FEMMeshNetgen.091.vtu" timestep="0.353516"/>
		<DataSet file="FEMMeshNetgen.092.vtu" timestep="0.358538"/>
		<DataSet file="FEMMeshNetgen.093.vtu" timestep="0.360421"/>
		<DataSet file="FEMMeshNetgen.094.vtu" timestep="0.362304"/>
		<DataSet file="FEMMeshNetgen.095.vtu" timestep="0.365129"/>
		<DataSet file="FEMMeshNetgen.096.vtu" timestep="0.369366"/>
		<DataSet file="FEMMeshNetgen.097.vtu" timestep="0.370955"/>
		<DataSet file="FEMMeshNetgen.098.vtu" timestep="0.372544"/>
		<DataSet file="FEMMeshNetgen.099.vtu" timestep="0.374927"/>
		<DataSet file="FEMMeshNetgen.100.vtu" timestep="0.378502"/>
	</Collection>
</VTKFile>
any ideas of how this might - doesn't work?
Last edited by aomanchuria on Fri Jun 11, 2021 11:51 pm, edited 1 time in total.
User avatar
bernd
Veteran
Posts: 12851
Joined: Sun Sep 08, 2013 8:07 pm
Location: Zürich, Switzerland
Contact:

Re: FEM Macros

Post by bernd »

would you use code tags? You can edit you post. Since you switch between text and code, your post is very difficult to read in the regard, what is your text and what is code?
User avatar
aomanchuria
Posts: 31
Joined: Fri Oct 09, 2020 3:13 pm

Re: FEM Macros

Post by aomanchuria »

I knew I had used the code tags before!
User avatar
bernd
Veteran
Posts: 12851
Joined: Sun Sep 08, 2013 8:07 pm
Location: Zürich, Switzerland
Contact:

Re: FEM Macros

Post by bernd »

with this you should get started to script FEM analysises FEM_Tutorial_Python
Post Reply