Solution Combination in Cyclic Symmetry

I have an analysis as follows:
The model uses a cyclic region:
I'd like to combine the results from the static and the harmonic analyses, but Mechanical's Solution Combination tool does not work in that case. Is there a solution through scripting?
Answers
-
DPF inside a Python result can be used to do that. Please note that the code below is just shared as a coding example, without any consideration of the physics behind the calculation (it could very well not make sense!).
A Python Result is inserted in the Solution of the Harmonic Analysis.
The code will:- Perform the dynamic expansion for the harmonic "on demand"
- For the harmonic analysis : extract the deformation and compute the amplitude
- For the static analysis: extract the deformation
- Add the amplitude from the harmonic and the deformation from the static analysis
- Compute the norm of the above field.
- Plot the result on the expanded mesh.
The time and frequency scopings are hard-coded in the code and should be changed to grab the result sets that you actually want to work with.
Code below:
- def define_dpf_workflow(analysis):
- import mech_dpf
- import Ans.DataProcessing as dpf
- mech_dpf.setExtAPI(ExtAPI)
- # Extract data for harmonic response
- # With this method the dynamic expansion is done "on demand" in DPF
- data_source = dpf.DataSources(r'' + analysis.WorkingDir + 'file.rfrq')
- data_source_up = dpf.DataSources( r'' + analysis.WorkingDir + 'file.mode')
- data_source_up.AddFilePath(analysis.InitialConditions[0].ModalICEnvironment.ResultFileName)
- data_source.AppendUpStreamDataSources(data_source_up)
- u_harmo = dpf.operators.result.displacement()
- time_scop = dpf.Scoping()
- time_scop.Ids = [200]
- u_harmo.inputs.data_sources.Connect(data_source)
- u_harmo.inputs.time_scoping.Connect(time_scop)
- u_harmo.Connect(14, 2) # read cyclic and perform cyclic expansion
- op = dpf.operators.mesh.from_field()
- op.inputs.field.Connect(u_harmo.outputs.fields_container.GetData()[0])
- my_mesh = op.outputs.mesh.GetData()
- amplitude = dpf.operators.math.amplitude_fc()
- amplitude.inputs.fields_container.Connect(u_harmo)
- # Extract total deformation for static analysis
- static_analysis = ExtAPI.DataModel.AnalysisByName('Static Structural')
- data_source_2 = dpf.DataSources(static_analysis.ResultFileName)
- u_static = dpf.operators.result.displacement()
- time_scop_2 = dpf.Scoping()
- time_scop_2.Ids = [1]
- u_static.inputs.data_sources.Connect(data_source_2)
- u_static.inputs.time_scoping.Connect(time_scop_2)
- u_static.Connect(14, 2) # read cyclic and perform cyclic expansion
- # Add both fields
- add_fc = dpf.operators.math.add_fc()
- add_fc.inputs.fields_container1.Connect(amplitude.outputs.fields_container.GetData())
- add_fc.inputs.fields_container2.Connect(u_static.outputs.fields_container)
- # Take norm
- nrm = dpf.operators.math.norm_fc()
- nrm.Connect(add_fc)
- # Plot
- output = dpf.operators.utility.forward()
- output.inputs.any.Connect(nrm)
- dpf_workflow = dpf.Workflow()
- dpf_workflow.Add(nrm)
- dpf_workflow.SetOutputContour(nrm)
- dpf_workflow.SetOutputMesh(my_mesh)
- dpf_workflow.Record('wf_id', False)
- this.WorkflowId = dpf_workflow.GetRecordedId()
0 -
@Pernelle Marone-Hitz ,
I have a request for an example that is similar in nature to this. It is for fatigue calculations- Get static structural stress results for each node. This is the mean stress in terms of fatigue
- Do a modal analysis and get the stress for all nodes at a particular mode. Do the cyclic expansion as per your example for cyclic.
- Scale the modal stress field values such that the stress at a user-defined "measure node" is equal to a user-defined value
- Have data in python for material S-N curves for mean vs. alternating stress. Bonus points if this is actually multiple curves based on temperature and you also include a thermal profile in the analysis.
The final output is a utilization of the fatigue allowable by comparing the modal, scaled, alternating stress to the allowable as determined by the mean stress and corresponding temperature-dependent S-N curve data.
0