Run A2AD in a different way in ADAMS

Two weeks ago I did a calculation project using the FAST/A2AD and MSC.ADAMS tools. During the process, I got great help from Jason Jonkman, so I share some of my experience here in case some one need it.

Normally we compile A2AD to a dll file, this dll file calculates all the aerodynamic force, pitch/yaw angle/rates, generator/HSS brake torques and even waveforces on tower/foundation. Inside ADAMS, it just define the force/torque/variable as follow:

function=user(11, 1047.2, 0, 9999.9, 2, 99, 3, 0.98, 0.001)

And so are variables. This means ADAMS will pass the USER() parameters to the user external solver during the simulation. And you have to type in “adamsmdr3 ru-u xxxx.dll xxxx.acf” to start simulation. ADAMS thinks all the forces/variables should be calculated in one dll file. That is not my case, I used other softwares to simulate the subsystems of wind turbine, so I have to run multiple dll external solvers on one wind turbine model, and the controller is in Bladed type format.

I played a trick to use A2AD only exchange data between ADAMS and DISCON.dll. First I defined the Generator_SF and pitch1demand_v as follow

Here I specify the dll file name(As shown, my dll file is called Bladed_controller.dll), for other systems I use the similar way to define. For example waveforce can be defined by specifying WLOAD.dll in routine name option. Through this method we can use multiple dll on one wind turbine model.

Only by specifyng dll name to force/pitch angles is not enough for A2AD, we have to specify the A2AD dll file name also to:
state variable: CalcOuts_V
Measure_request: UserRequest_R

The the simulation runs with A2AD doing what it is told to do. And I can run the simulation by “adamsmdr3 ru-s xxxx.acf” command.