Instruction for the Seismic fast version

Dear Sir,

I wish to implement the seismic scenario in FAST v7 but with distributed springs. I understand that this cannot be done without modifying the source code of FAST v7. I can see that subroutines for FAST v7 DS and Seismic are available on the forum. Is there a way I can combine the two? I would really like your help and guidance in changing the source code for the same. I request you to help me get started with it.
I have explored your options for seismic implementation in openfast using extptfm but, I am not at the disposal of using new software at this stage to generate superelements though it really sounds more promising. I am only left with the option to change the source code.

What I understand related to the code is as follows:

  1. The foundation elements along with their properties need to be added to the structural model.
  2. At each soil layer, I need to define a soil curve that as well interpolates the forces if the nonlinear behavior of the soil has to be simulated.
  3. The ground motion has to be taken input at the base of the pile.
  4. The superstructure force (above the seabed) will allow for deformations of the soil springs.
  5. Using the soil curve, the reaction forces at each pile-spring interface need to be added to the equation of motion.

Please correct me if I am wrong. In addition, though I know the procedure somehow, I am unaware of the subroutines to be changed to bring about these changes. Kindly advise.

Thanks
Subham

Dear @Kashyap.Subham,

At one point we developed a customized version of FAST v7 that supported distributed springs (DS) modeling of the foundation. This is discussed in the following forum topic: Turbine-soil interaction. Influence on the mode shapes., especially my post dated Feb 01, 2013, where I share an example UserTwrLd_DS.f90 file.

This routine has not been developed to include seismic excitation, but should hopefully be a good start to that. Because I have not done what you want myself, I cannot provide detailed guidance, but to answer your specific questions:

  1. Agreed. The FAST v7 model that makes use of UserTwrLd_DS.f90 places the platform reference point at the bottom of the pile (where 6 DOF motion is available), and the entire pile + tower is modeled via the tower element in FAST v7.
  2. The UserTwrLd_DS.f90 file implements linear springs at each node along the pile, but this could be changed to model nonlinear springs.
  3. I would not expect to that you’d apply ground motion only at the base of pile. Rather, I would expect that the deflection of each spring distributed along the pile would be the difference between the actual deformation of the pile and the position defined by the seismic event.
  4. I’m not sure what you mean, but I would not expect that anything in the source code would need to be changed apart from the UserTwrLd_DS.f90 file.
  5. This will be done automatically by FAST v7. It is just up to you define the loads to be applied distributed along the pile in the UserTwrLd_DS.f90 file.

Best regards,

For a general MDOF system, the equation of motion with base excitation can be given as follows:

[M]{xddot} + [C]{xdot} + [K]{x} = -[M]{xgddot}[U]

where x represents the relative structural displacement, and [U] is a column vector consisting of 1 or 0 as per the dofs in translation with the earthquake.

The above equation of motion is a general representation of seismic simulation as in textbooks.

As per my understanding, there will be additional resisting forces due to the flexible soil foundation. These forces as well need to be added to the above equation of motion at the nodes where the soil springs are introduced.

With the above background to start with:

  1. How do I identify these nodes in the DS subroutine? Let’s assume I just want to implement the seismic load case with the linear springs, to begin with.

  2. How do I estimate the right-hand side of the equation in FAST v7 DS routine?

  3. The soil reaction forces shall be added as an external force at each time step to evaluate the net deformations. What parameters shall I be looking at?

These are some basic queries. I hope I am making some sense of this. Request you to clarify and advise.

Subham

Subham

Dear @Kashyap.Subham,

If I understand your equation, this is equivalent to the following (changing notation a bit):

[M]{xsdd} + [C]{xsd} + [K]{xs} = [C]{xgd} + [K]{xg}

where xs is the structural displacement and xg is the ground motion. This is the equation used by the Seismic module of FAST v7. Given the equation [M]{xsdd} = {f}, The user-defined platform (UserPtfmLd) and tower loading routines (UserTwrLd) in FAST v7 expect that you’ll provide a force {f} applied to the platform reference point for UserPtfmLd or each tower analysis node for UserTwrLd. Rearranging the equation above, this implies that:

{f} = [C]{xgd-xsd} + [K]{xg-xs}

Now, to answer your questions:

  1. See above. The UserTwrLd routine in FAST v7 will be called once for each tower analysis node. There is logic already within UserTwrLd_DS.f90 to ensure that loads are only applied to nodes below the seabed.
  2. See above.
  3. I’m not sure I understand what you are asking, but assessing the motions of the tower analysis nodes and structural reactions at the tower analysis nodes sounds important.

Best regards,

1 Like

Dear Sir,

It seems the most important line of the code in UserTwrLd for distributed spring is the following:
TwrFt(K) = TwrFt(K) - Stff(JNode)*X(K)*DZFract

I believe this corresponds to the force calculation you wrote as:
{f} = [C]{xgd-xsd} + [K]{xg-xs},

but, obviously without the earthquake-related variables. If my understanding is correct; I need to add the following extra terms in the first equation for the damping and stiffness terms as:

TwrFt(K) = TwrFt(K) - Stff(JNode)X(K)DZFract + (Dmp(JNode){xgd} + Stff(JNode){xg})

Is this legit? I believe the major task would be to establish ground motions at each spring location describing its velocity and displacement time series. (i.e., for a linear stiffness as already implemented).

Does this all sound valid?

Thanks
Subham

Dear @Kashyap.Subham,

I agree, except that:

  • You should also subtract Dmp(JNode)*XD(K) from the right-hand side
  • You should multiply all stiffness and damping terms (not just Stff(JNode)*X(K)) by DZFract

Best regards,

1 Like

Dear Sir,

I would request you to link all the source code files and associated libraries required to recompile FAST v7 for the tentative completion of this conversation. It would be great if you can also, attach the document guidance on the compilation of FAST v7. It shall serve as a good checkpoint for me.

Thanks
Subham

Dear @Kashyap.Subham,

Compiling instructions for FAST v7.01 are available from here: CompilingInstructions_FASTv7.pdf - Google Drive. FAST v7.02 is slightly newer, but the compiling instructions were not updated. But to compile FAST v7.02, you’ll need the source files from:

To compile with the distributed springs (DS) foundation, you can use the UserTwrLd_DS.f90 source file that I shared in the post dated Feb 01, 2013 in the following forum topic: Turbine-soil interaction. Influence on the mode shapes.. Simply use this in place of the generic UserTwrLd() SUBROUTINE available in the FAST v7.02 archive.

Best regards,

Dear Sir,

I believe I have been able to compile FAST with the above links you gave. There are the following queries at my end:

  1. Do I still need to compile the UserPtfmLd subroutine to simulate the earthquake ground motions at the pile end (base/pile) inside the ground? I believe this shall be a correct representation.

  2. Can I compile UserPtfmLd and UserTwrLd together? Or do I need to put everything in a single routine?

Thanks
Subham

Dear @Kashyap.Subham,

You must always have SUBROUTINEs UserTwrLd() and UserPtfrmLd() compiled into FAST v7, but they are not called unless TwrLdMod = 2 and PtfmLdMod = 1, respectively. When selecting TwrLdMod = 2 and PtfmLdMod = 1, FAST v7 will call SUBROUTINEs UserTwrLd()andUserPtfrmLd()`, respectively; what you implement within these user-written source code is up to you.

Best regards,

Dear Sir,

Is it possible to compile FAST with user-defined UserptfmLd and UserTwrLd together with the Simulink capability?
Also, is it possible to use the variables defined in Seismic-related UserPtfmLd in UserTwrLd?

Thanks
Subham

Dear @Kashyap.Subham,

Yes, if you can compile the FAST v7 S-Function for Simulink, there is no reason you should not be able to compile the FAST v7 S-Function for Simulink with your own user-written UserPtfmLd() and UserTwrLd() routines.

You’ll have to customize your own UserTwrLd() routine if you want seismic-related functionality coded within it. NREL has not implemented this ourselves.

Best regards,

Dear @Jason.Jonkman Sir,

Sorry for not being able to articulate clearly.
What I mean to ask and understand is as follows:

The UserPtfmLd for the seismic module already has the capability to read an external file with earthquake time series. The same I shall require to implement forces at the springs, but this time it will be utilized in the UserTwrLd file. I wish to know whether the already read inputs can be directly used from UserPtfmLd to the UserTwrLd routine. This will essentially save a lot of my time.

Thanks
Subham

Dear @Kashyap.Subham,

I would guess that you’ll have to migrate a lot of the source code from the UserPtfmLd() routine used in the Seismic version of FAST v7–including capability to read in earthquake time series–into your own UserTwrLd() routine.

Best regards,

Dear Sir,

I tried to compile FAST v7 with DS subroutine with the Bladed type controller.
I commented the subroutines in UserSubs.f90 for the pitch and yaw controllers.
Further updated the UserTwrLd subroutine in HydroCalc.f90.

I compile using the make file using gfortran compiler.

On compilation, I get error in the BladedDLL.f90 stating that kernal32 library cannot be loaded.

Is there a different procedure to compile for Bladed style dll for Fast v7 using make file ? Kindly help.

Dear @Kashyap.Subham,

I’m sorry, but I’m not familiar with this error or compiling using make files with gfortran.

Best regards,

Dear sir,
What is the most frequent method you use to compile FAST v7 with DS model with the Bladed DLL ? Maybe I can know what all tools shall I require for the same.

Dear @Kashyap.Subham,

To be honest, I haven’t compiled FAST v7 myself in many years. But I compile more recent versions (OpenFAST) on Windows using Microsoft Visual Studio Community 2019 with Intel Fortran Compiler through one API, both of which are free to download.

Best regards,

Will it be possible for you to compile FAST v7 seismic version with the Bladed DLL with latest compilers ? I am having a tough time understanding the errors. I would request you to find a way out for easy compilation of Fast v7 Seismic .

Dear @Kashyap.Subham,

The Seismic version of FAST v7 provided in the Seismic archive is compiled with the interface to Bladed-style DLL controllers.

Best regards,