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:

Transparent

Python Result that converts Elemental -> Nodal:

Transparent Transparent

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()