-
Notifications
You must be signed in to change notification settings - Fork 119
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
Add a failure criteria for using Composite Materials (Tsai Wu Failure Criteria) #444
base: main
Are you sure you want to change the base?
Conversation
…mposite materials and made changes to all the relevant scripts along with the calculation of effective stiffness values for composite materials
… numofplies and num_failure_criteria, added raise commands for surf dict
…e group descriptions for the failure groups and tsaiwuwingbox
Yeah I think we could generate a pareto something like that based on the existing CRM example in the repo. In terms of actually verifying the correctness of the implementation, the Tsai-Wu strength ratio should be mathematically identical to Von Mises when you use isotropic material properties so we can run a case using this new code using isotropic properties and check that it gives the same result as the existing von mises code. |
… All test files using yield/SF modified to have a safety_factor key
…afety factor is absent
|
… the walkthrough page
@shamsheersc19 GitHub won't let me add you as a reviewer, but please feel free to review anyway |
Thanks! I'll try to catch up, but please don't let me hold anything up. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for adding nice new feature (and also introducing safety factor parameter, which is pretty nice)
Besides the above comments, could you manually check if the figures generated by plot_wing
and plot_wingbox
properly show the maximum stress in the spanwise stress plot? I think they refer to surface["yield"] to plot the failure limit line. Now we have safety factor defined seperately, I believe these plotting scripts also needs to be updated.
|
||
Currently, the moduli of elasticity of the entire FEM spatial beam model are assumed to be isotropic | ||
in 2D plane so as to not change the entire model and is left for the future works. The values of the | ||
moduli of elasticity are found using The unidirectional ply properties are used to find the stiffness matrix of the plies: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Typo?
G = \frac{1}{S_{eff_{66}}} | ||
|
||
These moduli of elasticility values are hence used to determine the stiffness matrix of the entire FEM spatial beam model. Thereafter, at the 4 critical points in the wingbox (mentioned in the aerostruct-wingbox walkthrough), | ||
the strains are calculated for each of the constituent plies by transforming the strains at the critical points to the laminate coordinate system. This is done using the following equation:\\ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Typo: ":\" ?
\gamma_{12} | ||
\end{pmatrix} | ||
|
||
These local axial and shear stresses are then utilized to calculate the value of the **Strength Ratios** for each ply using Equation 5, where the coefficients are defined by: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You refer to Eq. 5, but in the readthedocs equations are not numbered (there might be a way to show equation numbers, I'm not sure though)
|
||
|
||
The failure is determined by the value of :math:`\hat{g}_{KS}(\rho, g)` exceeding 0. | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Before showing the results below, I think it'd be nice to add something like "you can find the complete runscript for the composites model here: " or maybe embed the runscript.
Are the surface dict additions the only changes required to run the composite model? If so, it should be clarified here (e.g. "we don't need any other changes in the runscripts besides additional entries in the surface dict" or something like that)
Also, adding subsections (e.g. "Model", "Example", "Results", etc) in this doc page would make it easier to navigate this page.
import openmdao.api as om | ||
|
||
|
||
def TransformationMatrix(theta): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not critical, but I'd use lower case and underscores for function names. Same for the computeCompositeStiffness function
https://peps.python.org/pep-0008/#function-and-variable-names
|
||
prob.run_model() | ||
|
||
print(prob["AS_point_0.fuelburn"][0]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This test looks like only printing the results and not checking any value. It should have assert_near_equals to check the analysis outputs against reference values for key outputs, including tsaiwu_sr.
prob.setup() | ||
|
||
prob.run_driver() | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same as my comments on the analysis test. This test should have assert_near_equals to check the optimization outputs against reference values for key outputs, including tsaiwu_sr.
Purpose
Expected time until merged
Type of change
Testing
Checklist
flake8
andblack
to make sure the Python code adheres to PEP-8 and is consistently formattedfprettify
or C/C++ code withclang-format
as applicable