New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
New workflow for "multi-pass" rolling simulation in DAMASK #12
Comments
You can output orientations into the VE response by adding
to the incremental data. This will output the orientation of every material point of the set phase. Let me know if you have a different output in mind and I'll add it when I finish changing around the output for a VE response. |
The changes required to MatFlow discussed above have been implemented in v0.2.17. |
workflow requires a definition: |
Hi Guy, you shouldn't need to access the workflow like that from within an extension. The input parameters (in this case So something like: def modify_volume_element(volume_element, volume_element_response):
...
old_orientations = volume_element_response['orientations']['data']['quaternions'][-1]
... |
Hi, Ive been running into the issue Please see here fort my proposed change to damask-parse: |
|
Requirements and aims
Minimal set of tasks
generate_microstructure_seeds[method=random, software=damask]
generate_volume_element[method=random_voronoi, software=damask]
generate_load_case[method=uniaxial, software=formable]
simulate_volume_element_loading[method=CP_FFT, software=damask]
modify_volume_element[method=new_orientations, software=damask]
See: https://github.com/LightForm-group/UoM-CSF-matflow/blob/master/work_in_progress/multipass_rolling.yml
Workflow features
The workflow will iterate on the
volume_element
parameter. Initially tasks 1-5 will run; in subsequent iterations, tasks 4-5 will run with the output volume element from task 5 of the previous iteration. The final crystal orientations from the simulation task will be encoded into the new volume element for the next iteration. Additionally, the new volume element will be increasingly more squashed with each iteration, to represent a rolling pass.Changes required - MatFlow core
Changes are required to MatFlow to support this workflow. These changes will be in relation to task dependency resolution within
matflow.models.construction.py
. Consider the basic parameter-modifying task example workflow, which has the following tasks:The new proposed workflow will also utilise, with respect to the
volume_element
parameter, a parameter-generating task (generate_volume_element
), a parameter-consuming task (simulate_volume_element_deformation
) and a parameter-modifying task (modify_volume_element
). However, unlike in the simple example above, for the new case, the parameter-modifying task will need to be positioned at the end of the workflow. In particular, themodify_volume_element
task will use both the existingvolume_element
and thevolume_element_response
to generate a newvolume_element.
The pertinent task inputs and outputs for iterationN
are as follows:generate_volume_element
(parameter-generating task)volume_element
simulate_volume_element_deformation
(parameter-consuming task)volume_element
- originating from taskgenerate_volume_element
if current iteration isN=1
, or from taskmodify_volume_element
of iterationN-1
if current iteration isN>1
.volume_element_response
modify_volume_element
(parameter modifying task)volume_element
andvolume_element_response
volume_element
In the current version of MatFlow (v0.2.16), setting up a workflow like this results in an
IncompatibleWorkflow
exception. This is because MatFlow currently always positions parameter-consuming tasks after parameter-modifying tasks, and so MatFlow determines that the tasksimulate_volume_element_deformation
gets its inputvolume_element
from the taskmodify_volume_element
. However, sincemodify_volume_element
also has an inputvolume_element_response
which must come from the tasksimulate_volume_element_deformation
, this leads to a circular dependency. Fixing this will require modifying this logic in a way that ensures compatibility with our existing iteration workflow, which we use for fitting crystal plasticity parameters.Related issues: LightForm-group/matflow#81
Changes required - MatFlow extensions
An additional function mapper will be added to the
matflow-damask
extension. The function mapper will take inputs:volume_element
andvolume_element_response
and will output a newvolume_element
that has been modified to include the final orientation fromvolume_element_response
and has been squashed.Changes required - Task schemas and software definition files
A new task schema method will be added to the pre-existing
modify_volume_element
task. A possible method name isnew_orientations
or similar.The text was updated successfully, but these errors were encountered: