I’m looking for a way to show or calculate the piercing angle of a foil relative to the water surface within the ventilation module.
Specifically, I need to visualise the intersection angle between the foil geometry and the free surface interface.
Thanks.
Edoardo Asked question
To show the piercing angle, first you need to set nearOceanFrame: true for the specific elements you want to analyse. This ensures the angle is calculated at the submerged element closest to the water surface.
Assuming a T-foil configuration with a vertical Shaft and two horizontal surfaces WingOB & WingIB:
"Elements": {
"Shaft" : { "Mesh": { "Spanwise": { "nSeg": 20 } } },
"WingOB": { nearOceanFrame: true, "Mesh": { "Spanwise": { "nSeg": 10 } } },
"WingIB": { nearOceanFrame: true, "Mesh": { "Spanwise": { "nSeg": 10 } } },
},
We must manually alias the output frames from the Foil block. The Frame Graphics system requires names to end with the “Frame” suffix to render correctly; however, since multiple outputs from a single block cannot share that suffix without causing a display conflict, a separate copy is required for each.
In Blocks.Boat:
"WingIBFrame" : {
"Frame" : BL.FrameXfromParent({
ParentFrame : "{^.Foil.Hydro.Frame_WingIB_NearOcean}",
Translation : [0,0,0]
}),
},
The piercing angle can then be calculated and converted into degrees:
"WingIBAngle" : "aLimit180({WingIBFrame.Frame}.eulerInFrame({Root.InertialFrame})[0]/pi*180)",
The same is done for the other horizontal surface:
R.merge("Blocks.Boat", {
"WingOBFrame" : {
"Frame" : BL.FrameXfromParent({
ParentFrame : "{^.Foil.Hydro.Frame_WingOB_NearOcean}",
Translation : [0,0,0]
}),
},
"WingOBAngle" : "aLimit180({WingOBFrame.Frame}.eulerInFrame({Root.InertialFrame})[0]/pi*180)",
});
Support SumToZero Changed status to publish
