Element-based discretization in AeroDyn v15

Dear OpenFAST developers,

I have a CFD solver coupled to OpenFAST using the actuator line method, and I’m adding a Gaussian smearing correction based on the blade trailed vorticity. In this correction the vorticity is shed at the element edges and the correction is evaluated at the element centers. This would work perfectly fine with the AeroDyn v14 discretization.

AeroDyn v15, AFAIK, uses a node-based discretization instead: the loads are evaluated at the analysis nodes defined by BlSpn, with the first node at the root and the last node at the tip. This places load points exactly at the two blade ends, which is where my correction is singular. An element-based discritization avoids this by construction.

I have two questions:

  1. Is it possible to have AeroDyn v15 evaluate the blade loads at the element centers (with no node at the root or tip), without breaking other parts of OpenFAST? In particular, would the mesh mapping of motions and loads between AeroDyn and the structural module (ElastoDyn or BeamDyn) still work, and do any modules assume that the blade nodes span the full blade from root to tip? I also noticed that ValidateInputData in AeroDyn.f90 requires BlSpn(1) = 0.0, and that BlSpn(NumBlNds) is used as the blade length in FAST_Subs.f90.

  2. If that is not possible or not recommended, what approach would you suggest to implement that method?

Thank you.

Best regards,
Samir

Dear @Samir.Ouchene,

AeroDyn v15 uses a line2 mesh for interfacing its blade aerodynamic calculations with structural modules (ElastoDyn or BeamDyn). As you point out, the aerodynamic calculations take place at nodes, which are located at the endpoints of line elements. For mesh-mapping between line2 load meshes, the OpenFAST modularization framework requires that the destination line2 mesh (in the structural module) be as large or larger than source line2 mesh (in AeroDyn).

As such, you could shift the 1st node slightly outboard from the root (if you comment out the check in AeroDyn that BlSpn(1) = 0) and the last node slightly inboard of the tip and the mesh-mapping should still function as expected. Alternatively, you could keep these nodes where the are simply calculate the aerodynamic loads as zero at these locations because aerodynamic loads should taper off at the root and tip anyway.

Best regards,

1 Like