Nodal Averaged Energy Potential
The code converts an existing User Defined Result with Expression = ENERGYPOTENTIAL from Elemental results to Nodal Average.
Native result calculated on Elements:
Python Result that converts Elemental -> Nodal:
def post_started(sender, analysis):# Do not edit this line
define_dpf_workflow(this,analysis)
def define_dpf_workflow(this,analysis):
import mech_dpf
import Ans.DataProcessing as dpf
mech_dpf.setExtAPI(ExtAPI)
''' OBS
Fetch object through NAME. Here: 'ENERGYPOTENTIAL' is the name of the result in the Tree!
'''
my_result_name = "ENERGYPOTENTIAL"
result_ = DataModel.GetObjectsByName(my_result_name)[0]
#-----------------------------------------------------------------------------------#
model = dpf.Model(this.Parent.Parent.ResultFileName)
dataSource = dpf.DataSources(this.Parent.Parent.ResultFileName)
my_mesh = model.Mesh
elem = dpf.Scoping()
elem.Location = 'Nodal'
elem.Ids = result_.PlotData['Element']
values_ = result_.PlotData['Values']
meshdata = ExtAPI.DataModel.MeshDataByName("Global")
result_field = dpf.FieldsFactory.CreateScalarField(
len(result_.PlotData['Element']),
dpf.locations.elemental)
result_field.ScopingIds = result_.PlotData['Element']
result_field.Data = list(values_)
avg_elem_nod = dpf.operators.averaging.elemental_to_elemental_nodal(
field = result_field,
mesh = my_mesh).outputs.field.GetData()
avg_nod = dpf.operators.averaging.elemental_nodal_to_nodal(
field = avg_elem_nod,
should_average = True,
mesh = my_mesh).outputs.field.GetData()
# Releast .rst file!
model.ReleaseStreams()
dpf_workflow = dpf.Workflow()
dpf_workflow.SetOutputContour(avg_nod)
dpf_workflow.Record('wf_id', False)
this.WorkflowId = dpf_workflow.GetRecordedId()