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:
 The foundation elements along with their properties need to be added to the structural model.
 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.
 The ground motion has to be taken input at the base of the pile.
 The superstructure force (above the seabed) will allow for deformations of the soil springs.
 Using the soil curve, the reaction forces at each pilespring 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: Turbinesoil 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:
 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.
 The UserTwrLd_DS.f90 file implements linear springs at each node along the pile, but this could be changed to model nonlinear springs.
 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.
 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.
 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:

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.

How do I estimate the righthand side of the equation in FAST v7 DS routine?

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 userdefined 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]{xgdxsd} + [K]{xgxs}
Now, to answer your questions:
 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.
 See above.
 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]{xgdxsd} + [K]{xgxs},
but, obviously without the earthquakerelated 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 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: Turbinesoil 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,