question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Possible bug in load transfer scheme

See original GitHub issue

Type of issue

What types of issue is it?

  • Bugfix (non-breaking change which fixes an issue)

Description

The loads transfer scheme used in load_transfer.py is different than that presented in the OpenAeroStruct journal article.

In the transfer loads script, it first computes the moments at the middle of the spar elements but does not transfer the moment to the nodes using the formula of “moment transport” in that the code doesn’t consider the moment arm between the node and the middle of the element.

Steps to reproduce issue

Run any aerostructural analysis and examine the load_transfer.py component.

Current behavior

The moment arms are computed from the aerodynamic centers to the structural centers.

Expected behavior

The moment arms may need to be computed from the aerodynamic centers to the structural nodes; this theory should be double-checked as correct before implemented.

If the transfer needs correcting, the compute() and compute_partials() methods within that component would both need updating, as well as all impacted tests, namely any aerostructural test.

Issue Analytics

  • State:closed
  • Created 3 years ago
  • Comments:6 (6 by maintainers)

github_iconTop GitHub Comments

1reaction
shamsheersc19commented, Jun 9, 2020

@kanekosh If you have time, you could also do a similar optimization mesh convergence study (for fuelburn and wingbox mass) with this code: https://github.com/mdolab/OpenAeroStruct/blob/master/openaerostruct/docs/wingbox_mpt_opt_example.py (You’ll need to make the opt tol smaller than it currently is and then all you need to do is change the numbers of nodes.)

1reaction
kanekoshcommented, Jun 8, 2020

I have fixed the bug in load_transger.py, though I haven’t updated the tests yet so a PR is not ready. I am wondering if I can get quick comments/feedback before updating the tests. The new code can be found in my branch. @johnjasa @shamsheersc19

Verification

To verify the new implementation, I did three checks.

1. Comparison with current implementation

I compared the aerostructural analysis of the new implementation to the current version of mdolab/master. I did not do any aerostructural optimization here.

Here is the comparison of aero and structural responses. The test setup is the same as examples/run_CRM.py except for the mesh sizes.

Mesh size Version CL CD Tip displacement [m] Max Von Mises [MPa]
ny=5, nx=2 current 0.55486797 0.03976179 0.78911463 55.341826
new 0.57066144 0.03977402 0.30585531 18.679515
error 2.85 % 0.0308 % -61.2 % -66.24 %
ny=15, nx=5 current 0.44880370 0.03592364 0.32427078 27.272997
new 0.44994858 0.03593000 0.29448746 25.793820
error 0.255 % 0.0177 % -9.18 % -5.42 %
ny=45, nx=11 current 0.43865442 0.035831758 0.29876407 28.140761
new 0.43876558 0.035832641 0.29579435 27.967486
error 0.0253 % 0.00246 % -0.994 % -0.616 %

Since the error for the finest mesh was small enough, I believe the new implementation is correct. Also, I confirmed that the current code has been predicting larger stresses as Sham mentioned, which is good.

2. Partial derivatives

I ran unit tests in transfer, which runs OpenMDAO’s check_partials(), and they all passed. Therefore the compute_partials() is consistent with compute(). I also changed the mesh size and it was ok as well.

3. Regression tests

As expected, all aerostructural regression tests have failed. But their values were not far apart: most of them are within a few % errors, except test_aerostruct_wingbox_+weight_analysis and test_aerostruct_wingbox_analysis which had ~20% errors.

Questions

  • Do you think these are enough to verify the new implementation? If you think of additional tests or comparisons I should perform, I’d appreciate that! I’m a bit hesitant to go ahead and update the tests because there is no safety net there.
  • In the script you commented the input/output arrays are flattened ones, but they seem not. Furthermore, when you flatten those in compute_partials() you’re using ndarray.flatten() with default args, which does its job in a C-style order. Is it okay to fix these comments, or am I missing something?

Thanks!

Read more comments on GitHub >

github_iconTop Results From Across the Web

Enhanced Load Transfer Schemes for Very Reliable Service
A scheme that transfers load on a low source voltage without other supervi- sion may transfer a fault to the alternate source.
Read more >
Solved! Android File Transfer Not Working - AirDroid
Often, Android File Transfer does not work due to a temporary glitch or bug in any of the devices, and restarting them is...
Read more >
Basics of Bus Transfer for Power Distribution System - LinkedIn
In-phase Transfer: The basic principle behind this scheme is to close the alternate source breaker when the bus residual voltage phase angle is...
Read more >
[Need Help testing] Game Transfer system bug :: Cell to ...
Some players are not able to upload their save from Steam with the Game Transfer system in the options. We need help tracking...
Read more >
iOS 16 Problems and Bugs with Fixes in 2022 - Tenorshare
You may have snags and trouble when you download the iOS 16 or after downloading finished, here Tenorshare ReiBoot can fix all your...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found