Skip to content
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

Blade stiffened shell improvements #319

Open
wants to merge 37 commits into
base: master
Choose a base branch
from

Conversation

A-CGray
Copy link
Contributor

@A-CGray A-CGray commented Jun 10, 2024

This PR contains various improvements to the TACSBladeStiffenedShellConstitutive constitutive class:

  1. Adds stiffener column buckling and crippling failure modes
  2. Material failure criterion is now computed at bottom as well as the top of the stiffener
  3. Adds capability to choose which of the failure modes are used in the overall failure calculation (material failure, global panel buckling, inter-stiffener/local panel buckling, stiffener column buckling, stiffener crippling). At the python level, these can be set through the setFailureModes method
  4. Related to 3, the unit tests for this constitutive model now contain separate tests for each failure mode's derivatives as well as tests for the full combined failure envelope
  5. Rather than having them hardcoded in the evalFailure and failure sensitivity methods, I have moved the global and local panel buckling calculations to their own methods. This should reduce the amount of code duplication required in @sean-engelstad 's Gaussian Process Buckling Constraints in Blade Stiffened Shell Constitutive Subclass #311 PR

@A-CGray A-CGray self-assigned this Jun 10, 2024
@A-CGray A-CGray added the enhancement New feature or request label Jun 10, 2024
@timryanb
Copy link
Collaborator

timryanb commented Jun 24, 2024

@sean-engelstad, could you review this PR when you get a chance and see if these new methods can be utilized in your GP panel work (PR #311)?

@sean-engelstad
Copy link
Contributor

Hi @timryanb I should be able to review it later today

Copy link
Contributor

@sean-engelstad sean-engelstad left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall I really like the increased modularity as it will be helpful to reduce code duplication in my subclass. Would like to see some results on applying only the stiffener crippling failure on a flat plate pure axial load case to see what the final stiffener aspect ratios are. Just to double check we implemented it correctly.

@sean-engelstad sean-engelstad self-requested a review June 25, 2024 16:10
Copy link
Contributor

@sean-engelstad sean-engelstad left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry didn't mean to click approve on the PR earlier. Want to see printout of the failure values for where stiffener column buckling is active. Also want to see on a flat plate (one TACS component case) when only stiffener crippling mode is active, what is the critical stiffener aspect ratio SAR = stiffenerHeight / stiffenerThick.

@sean-engelstad
Copy link
Contributor

@A-CGray if you add a mode and setter for writing out different values to the f5 file or in the DVs (like what I did in my PR), then you can see the failure values. Also, I think you should change the way I did it and have dv1 be argmax(fails) basically so you can see the index of which failure criterion is maximum.

@timryanb
Copy link
Collaborator

In that case, let's make this part a separate PR/feature. I'll add it to the issues page

@timryanb
Copy link
Collaborator

See #320 @sean-engelstad @A-CGray

@A-CGray
Copy link
Contributor Author

A-CGray commented Jul 16, 2024

Just to confirm @timryanb @sean-engelstad , the plan is to merge this PR, then make the necessary updates to #311 and merge that?

Copy link
Contributor

@sean-engelstad sean-engelstad left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks very good to me! We may still want to wait on Tim's review and see if he wants us to do some comparisons of predicted buckling loads and optimized designs btw the two classes here.

@timryanb
Copy link
Collaborator

timryanb commented Jul 16, 2024

That's fine by me @A-CGray @sean-engelstad. I'd still like to see a benchmark comparison between the two classes for the same model.

@A-CGray
Copy link
Contributor Author

A-CGray commented Jul 17, 2024

Sure, for reference @sean-engelstad , here are the results with my constitutive model:

Fixed stiffener pitch no stiffener crippling constraint

>>>python optimize_stiffened_plate.py 
.
.
.
Objectives
{'CompAndShear.Mass': array([10.79339379])}

Optimization terminated successfully    (Exit mode 0)
            Current function value: 10.793393789903986
            Iterations: 8
            Function evaluations: 10
            Gradient evaluations: 8
Optimization Complete
-----------------------------------
Optimal sizing:
================================
Stiffener pitch: 125.0 mm
Panel thickness: 2.9308217613181076 mm
Skin ply fractions:
[0.13953 0.36047 0.36047 0.13953]
Stiffener height: 115.00000000000001 mm
Stiffener thickness: 1.6478083873616798 mm
Stiffener ply fractions:
[0.59402 0.16239 0.16239 0.0812 ]

Fixed stiffener pitch with stiffener crippling constraint

>>>python optimize_stiffened_plate.py --includeStiffenerBuckling
.
.
.
Objectives
{'CompAndShear.Mass': array([10.89286276])}

Optimization terminated successfully    (Exit mode 0)
            Current function value: 10.89286276157974
            Iterations: 13
            Function evaluations: 17
            Gradient evaluations: 13
Optimization Complete
-----------------------------------
Optimal sizing:
================================
Stiffener pitch: 125.0 mm
Panel thickness: 2.948897670317985 mm
Skin ply fractions:
[0.13953 0.36047 0.36047 0.13953]
Stiffener height: 114.20492349292782 mm
Stiffener thickness: 1.6794607381336215 mm
Stiffener ply fractions:
[0.59402 0.16239 0.16239 0.0812 ]

With stiffener pitch DV, no stiffener crippling

>>>python optimize_stiffened_plate.py --useStiffPitchDV
.
.
.
Objectives
{'CompAndShear.Mass': array([9.72264797])}

Optimization terminated successfully    (Exit mode 0)
            Current function value: 9.722647972607012
            Iterations: 9
            Function evaluations: 11
            Gradient evaluations: 9
Optimization Complete
-----------------------------------
Optimal sizing:
================================
Stiffener pitch: 159.99999999997792 mm
Panel thickness: 3.701976915981655 mm
Skin ply fractions:
[0.13953 0.36047 0.36047 0.13953]
Stiffener height: 150.00000000000003 mm
Stiffener thickness: 0.8902831226396368 mm
Stiffener ply fractions:
[0.59402 0.16239 0.16239 0.0812 ]

With stiffener pitch DV and stiffener crippling

>>>python optimize_stiffened_plate.py --useStiffPitchDV --includeStiffenerBuckling
.
.
.
Objectives
{'CompAndShear.Mass': array([10.88611761])}

Optimization terminated successfully    (Exit mode 0)
            Current function value: 10.886117606613414
            Iterations: 12
            Function evaluations: 17
            Gradient evaluations: 12
Optimization Complete
-----------------------------------
Optimal sizing:
================================
Stiffener pitch: 124.0118771982418 mm
Panel thickness: 2.9291042508631016 mm
Skin ply fractions:
[0.13953 0.36047 0.36047 0.13953]
Stiffener height: 114.01187897381736 mm
Stiffener thickness: 1.6777439670951486 mm
Stiffener ply fractions:
[0.59402 0.16239 0.16239 0.0812 ]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants