Aerodynamic interface definition

@AERODYNAMIC_INTERFACE_DEFINITION {
@AERODYNAMIC_INTERFACE_NAME {AeroIntName} {
@AIRLOADS_SCHEME {AirloadsScheme}
@FLUID_PROPERTY_NAME {FldPropName}
@ROTOR_LIST {Rotor1, Rotor2,... RotorN}
@WING_LIST {Wing1, Wing2,... WingN}
@UNSTEADY_AERODYNAMICS_MODEL_NAME {UaModlName}
@COUPLING_STRATEGY {
@COUPLING_TYPE {CouplingType}
@DATA_EXCHANGE_RATE {ExchRate}
@ARCHIVAL_FREQUENCY {ArchFreq}
@FOURIER_TRANSFORM_FORMAT {FftFlag}
@INITIAL_TIME_STEP_NUMBER {tini}
@FINAL_TIME_STEP_NUMBER {tfin}
@DAMPING_COEFFICIENT {Cd}
}
@CONTROL_PARAMETERS {
@LIFTING_LINE_ID_CFD {Id1, Id2,... IdN}
}
@INPUT_FILE_NAMES {
@FILE_NAME_READ_AIRLOADS {FnReadAirloads}
@FILE_NAME_INFLOWS {FnInflow}
}
@OUTPUT_FILE_NAMES {
@FILE_NAME_WRITE_AIRLOADS {FnWriteAirloads}
@FILE_NAME_DEFLECTIONS {FnDeflect}
@FILE_NAME_CONFIGURATION {FnConfig}
@FILE_NAME_REFERENCE_GEOMETRY {FnRefGeo}
}
@CONTROL_FILE_NAMES {
@FILE_NAME_CFD_FLAG {FnCfdFlag}
@FILE_NAME_CSD_FLAG {FnCsdFlag}
@FILE_NAME_INFLOW_FLAG {FnIflFlag}
}
@FRAME_DEFINITION {
@FUSELAGE_FRAME_NAME {FuselageFrameName}
@CFD_FRAME_NAME {CfdFrame}
}
@COMMENTS {CommentText}
}
}

Introduction

An aerodynamic interface is the component of an aerodynamic model that describes the procedure used to compute the aerodynamic loads associated with an aerodynamic model. The implementation of the aerodynamic interface depends on the nature of the code used for the evaluation of the airloads. The following options are available.

  1. Airloads are computed internally. In this case, the aerodynamic loads are computed using a simplified airloads computation tool that is internal to the CSD code. The kinematic and load interfaces involve calls to subroutine within this single code, and little input is required from the user. Data exchange between the CSD code and its aerodynamics module occur at each time step of the analysis.
  2. Airloads are computed by an external CFD code and exchanged through formatted files. In this case, the aerodynamic loads are computed using an external CFD code. The kinematics interface transfers the positions or displacements computed by the CSD code to the CFD code. The loads interface transfers the aerodynamic loads computed by the CFD code to the CSD code. The data is exchanged between the codes though a set of formatted files.
  3. Airloads are computed by an external code that is compiled together with the comprehensive code. In this case, the aerodynamic loads are computed using an external code. The kinematics interface transfers the positions or displacements computed by the CSD code to the external code. The loads interface transfers the aerodynamic loads computed by the external code to the CSD code. The data is exchanged between the codes through a set of interface routines.

Coupling strategies

When coupling the CSD code to an external CFD code, two strategies are available: the “loose coupling” strategy and the “tight coupling” strategy.

Tight coupling

In the tight coupling strategy, data is exchanged between the two codes at each time step of the analysis.

Loose coupling

In the loose coupling strategy, data is exchanged between the two codes at regular intervals that could include many time steps. The loose coupling strategy is particularly useful when dealing with rotorcraft aeroelastic problems and involves the following steps.

  1. Iteration 0: run the comprehensive code with its internal aerodynamic model until a trimmed, periodic aeroelastic solution is obtained. For the last revolution, archive the dynamic response of the system, R(0), and the predicted airloads, ALL(0).
  2. Iteration 0: run the external CFD code based on the present dynamic response of the system, R(0), to obtain a new set of periodic airloads ACFD(0). Compute the difference between the airloads predicted between the two codes, ΔA(0) = ACFD(0) - ALL(0), these are called the “delta airloads.”
  3. Iteration k: run the comprehensive code until a trimmed, periodic aeroelastic solution is obtained. The applied aerodynamic loads are the sum of those predicted the internal aerodynamic model and the delta airloads, ΔA(k-1). For the last revolution, archive the dynamic response of the system, R(k), and the airloads predicted by the internal aerodynamic model, ALL(k).
  4. Iteration k: run the external CFD code based on the present dynamic response of the system, R(k), to obtain a new set of periodic airloads ACFD(k). Compute the difference between the airloads predicted between the two codes, ΔA(k) = ACFD(k) - ALL(k).
  5. Repeat step 3 and 4 until convergence is achieved.

NOTES

  1. The AirloadsScheme flag indicates how the aerodynamic forces will be computed at the airstations; it can take one of the following six values.
    1. If AirloadsScheme = COPTER, the aerodynamic forces at the airstations will be computed using the code COPTER, developed at Bell Helicopter.
    2. If AirloadsScheme = FPE_AIRLOADS, the aerodynamic forces are computed by an external aerodynamic code which is called at each time step of the simulation.
    3. If AirloadsScheme = INTERNAL, the aerodynamic forces are computed by the internal, simplified unsteady aerodynamics code.
    4. If AirloadsScheme = MEASURED_AIRLOADS, the aerodynamic forces at the airstations will be experimentally measured airloads and read through FSI format.
    5. If AirloadsScheme = OVERFLOW, the aerodynamic forces are computed by an external aerodynamic code, OVERFLOW. Data is exchanged between the codes using formatted files.
  2. General physical properties of the air flow are defined in the fluid property, FldPropName. These properties will be used to compute airloads in the internal aerodynamic module. When using an external CFD code, some of these properties can be used to normalize aerodynamic data.
  3. The defined aerodynamic interface parameters apply to a number of rotors Rotor1, Rotor2,... RotorN, and/or wings, Wing1, Wing2,... WingN. The aerodynamic interface determines the manner in which airloads will be computed for the airstations of all lifting lines of all rotors and wing associated with this aerodynamic interface.
  4. If AirloadsScheme = INTERNAL, the aerodynamic forces are computed by the internal, simplified unsteady aerodynamics code. It is then necessary to specify the unsteady aerodynamics model to be used, UaModlName.

Coupling Strategy

This section is only required when the airloads are computed by an external code such as OVERFLOW or read from input file.

  1. The CouplingType is only required when AirloadsScheme = OVERFLOW. CouplingType indicates the coupling strategy i.e. the strategy for exchanging data between the comprehensive and external codes. Two coupling strategies are available.
    1. If CouplingType = TIGHT_COUPLING, data is exchanged between the two codes at each time step. In this case, the data exchange rate ExchRate = 1 and the archival frequency ArchFreq = 1.
    2. If CouplingType = LOOSE_COUPLING, data is exchanged between the two code at regular intervals that do not coincide with the analysis time step. In this case, the data exchange rate ExchRate the frequency at which data is exchanged between the codes and ArchFreq the archival frequency.
    3. For rotorcraft aeroelastic problems, the loose coupling strategy is effective. In this case, data is exchanged after each rotor revolution: ExchRate is then equal to the number of time steps in one revolution. Since all the time steps of the last revolution only will be saved, ArchFreq = 1. The last revolution, or the revolution to be archived, is defined by its initial and final time step numbers, tini and tfin, respectively. If these parameters are not defined, results of the entire simulation will be archived.
  2. It is sometimes desirable to read data from external code in a Fourier transform format. If this is the case, the flag FftFlag must be set to YES. This option is available for rotors only. The base frequency of the Fourier transform is the rotor speed, and the number of harmonics used in the transform must be defined for the rotor.
  3. Cd is only required when AirloadsScheme = MEASURED_AIRLOADS and used to improve the convergence.

Control parameters

This section is only required when using the option AirloadsScheme = OVERFLOW.

Each lifting line in the CSD code must be associated with a corresponding entity in the CFD code. Lifting line LfnName1 is associated with component Id1, LfnName2 with component Id2, etc.

File names

The names of all the formatted files used in the interface must be specified in the input data blocks @INPUT_FILE_NAMES, @OUTPUT_FILE_NAMES and @CONTROL_FILE_NAMES. Input and output files are files to be read and written by the CSD code, respectively. The control files are used as semaphores.

  1. The comprehensive code will read the following input files.
    • File FnReadAirloads contains externally computed airloads.
    • File FnInflow contains externally computed inflows.
  2. The comprehensive code will write the following output files.
    • File FnWriteAirloads lists the total computed airloads.
    • File FnDeflect lists the computed configuration.
    • File FnConfig lists the configuration parameters.
    • File FnRefGeo lists the reference geometry.
  3. The comprehensive code will read the following semaphore files.
    • File FnCfdFlag indicates that the CFD code has computed airloads and written the corresponding file.
    • File FnIflFlag indicates that the wake code has computed inflows and written the corresponding file.
  4. The comprehensive code will write the following semaphore files.
    • File FnCsdFlag indicates that the comprehensive code has computed the system configuration and written the corresponding file.

Frame definition

The CSD and CFD codes might have defined a different frame for the respective analysis. The CfdFrame is the name of the frame used in the CFD analysis; this frame can be either a fixed frame or a moving frame. Various interfaces requires certain quantities to be defined in specific frames. The following frames can be defined.

  1. The frame CfdFrame. This frame is required when AirloadsScheme = OVERFLOW.
  2. The frame FuselageFrameName is used in conjunction with rotors or wings.

MEASURED_AIRLOADS interface

When using the MEASURED_AIRLOADS interface, a fuselage frame must be defined.

OVERFLOW interface

When using the OVERFLOW interface, a fuselage frame and CFD frame must be defined.

COPTER interface

The Copter interface requires fuselage frame to be defined.

Example 1

Loose coupling with Overflow. The time step size in this example is assumed to be 1 degree. A total of one hundred revolutions is run and the sole last revolution is archived at each time step (@INITIAL_TIME_STEP_NUMBER {35641}, @FINAL_TIME_STEP_NUMBER {36000}, @ARCHIVAL_FREQUENCY {1}). A total of 360 steps are exchanged (@DATA_EXCHANGE_RATE {360}). The data is archived at each time step, no Fourier transform is performed (@FOURIER_TRANSFORM_FORMAT {NO}).

@AERODYNAMIC_INTERFACE_DEFINITION {
@AERODYNAMIC_INTERFACE_NAME {AeroIntName} {
@AIRLOADS_SCHEME {OVERFLOW}
@FLUID_PROPERTY_NAME {PropertyAir}
@ROTOR_LIST {Rotor}
@COUPLING_STRATEGY {
@COUPLING_TYPE {LOOSE_COUPLING}
@DATA_EXCHANGE_RATE {360}
@ARCHIVAL_FREQUENCY {1}
@FOURIER_TRANSFORM_FORMAT {NO}
@INITIAL_TIME_STEP_NUMBER {35641}
@FINAL_TIME_STEP_NUMBER {36000}
}
@CONTROL_PARAMETERS {
@LIFTING_LINE_ID_CFD {1,2,3,4}
}
@INPUT_FILE_NAMES {
@FILE_NAME_READ_AIRLOADS {AirloadsReadTime.dat}
}
@OUTPUT_FILE_NAMES {
@FILE_NAME_WRITE_AIRLOADS {AirloadsWrite.dat}
@FILE_NAME_DEFLECTIONS {Deflection.dat}
@FILE_NAME_CONFIGURATION {Config.dat}
@FILE_NAME_REFERENCE_GEOMETRY {RefGeo.dat}
}
@CONTROL_FILE_NAMES {
@FILE_NAME_CFD_FLAG {CfdFlag.dat}
@FILE_NAME_CSD_FLAG {CsdFlag.dat}
}
@FRAME_DEFINITION {
@FUSELAGE_FRAME_NAME {FrameFuselage}
@CFD_FRAME_NAME {Inertial}
}
}
}

Example 2

Tight coupling with Overflow. In this strategy data is archived and exchanged at each time step (@ARCHIVAL_FREQUENCY {1}, @DATA_EXCHANGE_RATE {1}).

@AERODYNAMIC_INTERFACE_DEFINITION {
@AERODYNAMIC_INTERFACE_NAME {AeroIntName} {
@AIRLOADS_SCHEME {OVERFLOW}
@FLUID_PROPERTY_NAME {PropertyAir}
@ROTOR_LIST {Rotor}
@COUPLING_STRATEGY {
@COUPLING_TYPE {TIGHT_COUPLING}
@DATA_EXCHANGE_RATE {1}
@ARCHIVAL_FREQUENCY {1}
}
@CONTROL_PARAMETERS {
@LIFTING_LINE_ID_CFD {1,2,3,4}
}
@INPUT_FILE_NAMES {
@FILE_NAME_READ_AIRLOADS {AirloadsReadTime.dat}
}
@OUTPUT_FILE_NAMES {
@FILE_NAME_WRITE_AIRLOADS {AirloadsWrite.dat}
@FILE_NAME_DEFLECTIONS {Deflection.dat}
@FILE_NAME_CONFIGURATION {Config.dat}
@FILE_NAME_REFERENCE_GEOMETRY {RefGeo.dat}
}
@CONTROL_FILE_NAMES {
@FILE_NAME_CFD_FLAG {CfdFlag.dat}
@FILE_NAME_CSD_FLAG {CsdFlag.dat}
}
@FRAME_DEFINITION {
@FUSELAGE_FRAME_NAME {FrameFuselage}
@CFD_FRAME_NAME {Inertial}
}
}
}

Example 5

Measured airloads are read from input file in FFT format manner. An artificial damping coefficient (0.02) is given to improve convergence. No data are written in output files.

@AERODYNAMIC_INTERFACE_DEFINITION {
@AERODYNAMIC_INTERFACE_NAME {AeroIntName} {
@AIRLOADS_SCHEME {MEASURED_AIRLOADS}
@FLUID_PROPERTY_NAME {PropertyAir}
@ROTOR_LIST {Rotor}
@COUPLING_STRATEGY {
@DAMPING_COEFFICIENT {0.02}
@FOURIER_TRANSFORM_FORMAT {YES}
}
@INPUT_FILE_NAMES {
@FILE_NAME_READ_AIRLOADS {AirloadsReadFFT.dat}
}
@FRAME_DEFINITION {
@FUSELAGE_FRAME_NAME {FrameFuselage}
}
}
}

Example 6

Measured airloads are read from input file for total one revolution in time accurate manner. The time step size in this example is assumed to be 1 degree. A total of one hundred revolutions is run and the sole last revolution is archived at each time step (@INITIAL_TIME_STEP_NUMBER {35641 , @FINAL_TIME_STEP_NUMBER {36000}, @ARCHIVAL_FREQUENCY {1}). A total of 360 steps data are read in and write out (@DATA_EXCHANGE_RATE {360}). The data is archived at each time step, no Fourier transform is performed (@FOURIER_TRANSFORM_FORMAT {NO}). An artificial damping coefficient (0.02) is given to improve convergence.

@AERODYNAMIC_INTERFACE_DEFINITION {
@AERODYNAMIC_INTERFACE_NAME {AeroIntName} {
@AIRLOADS_SCHEME {MEASURED_AIRLOADS}
@FLUID_PROPERTY_NAME {PropertyAir}
@ROTOR_LIST {Rotor}
@COUPLING_STRATEGY {
@DAMPING_COEFFICIENT {0.02}
@DATA_EXCHANGE_RATE {360}
@ARCHIVAL_FREQUENCY {1}
@FOURIER_TRANSFORM_FORMAT {NO}
@INITIAL_TIME_STEP_NUMBER {35641}
@FINAL_TIME_STEP_NUMBER {36000}
}
@INPUT_FILE_NAMES {
@FILE_NAME_READ_AIRLOADS {AirloadsReadTime.dat}
}
@OUTPUT_FILE_NAMES {
@FILE_NAME_WRITE_AIRLOADS {AirloadsWrite.dat}
@FILE_NAME_DEFLECTIONS {Deflection.dat}
@FILE_NAME_CONFIGURATION {Config.dat}
@FILE_NAME_REFERENCE_GEOMETRY {RefGeo.dat}
}
@FRAME_DEFINITION {
@FUSELAGE_FRAME_NAME {FrameFuselage}
}
}
}