# FAST - OrcaFlex coupling

Good morning,

I have some doubts about FAST OrcaFlex coupling. I am using the 64bits code given by Orcina in their website and it is called FASTOrca.exe
I also have installed OrcaFlex 9.6c version and everything seems to work allright. But when I try to implement the formula given in: http://www.nrel.gov/docs/fy12osti/52896.pdf, page 5; via a Python external function in OrcaFlex (attached) the platform goes too deep. I guess it could be a mass definiton problem so, here I describe the platfrom input files for FAST and the OrcaFlex model. I hope you can help me.

In the FAST platform input file:
TURBINE CONFIGURATION (CONT)
-10.75 TwrDraft - Downward distance from the ground level [onshore] or MSL [offshore] to the tower base platform connection (meters)
15.3 PtfmCM - Considering only the platform? the platfrom and the mooring system? or the platform, mooring system and the HAWT?
0 PtfmRef - Downward distance from the ground level [onshore] or MSL [offshore] to the platform reference point (meters)
MASS AND INERTIA (CONT)
6311000 PtfmMass - Platform mass (kg) only platform? or platform+ HAWT?
1679406000 PtfmRIner - Platform inertia for roll tilt rotation about the platform CM (kg m^2) of the platform isolated?
1679406000 PtfmPIner - Platform inertia for pitch tilt rotation about the platform CM (kg m^2)
3436133000 PtfmYIner - Platform inertia for yaw rotation about the platform CM (kg m^2)
PLATFORM (CONT)
1 PtfmLdMod - Platform loading model {0: none, 1: user-defined from routine UserPtfmLd} (switch)

In the OrcaFlex platform model:
‘Platform’ mass and inertia ~ zero.
External function (attached) applied in the ‘Platform’ local z axis at the beginning of each time step.
Ti = mean z-axis tether tension regarding the number of iterations per time step.
zi = platform mean z axis position regarding the number of iterations per time step.

I have also thought that the problem could come from the moment when I am passing the value from the external function to OrcaFlex (and then this last to FAST’s multibody model). In the *.py archive attached, info.value parameter is place after a new time step definition and probably it should be defined before entering in a new time step. This would mean to send info.value to OrcaFlex after converging (last iteration) the time step calculation , but before entering in a new time step.

Regards,

Hi Josean,

I was not able to view the python file contents, but as a first step I would start by making sure the system is indeed in static equilibrium. I agree with you, and this sounds like a mass definition issue. To answer your question, we use the total mass of the system as defined in the FAST input files. You can find this value in the FAST summary file. The summary file a text file ending with an *.fsm extension. The value you the interested in is called “Mass Incl. Platform”; this is the M.

Now you can calculate Equation (1) in the link you provided. The To found in the paper represents the sum of all vertical connection forces on the platform. To find it in OrcaFlex, remove the applied force on the platform, then run the system statics. After the statics is completed, go to Results → Results Type: Summary Results → Object: Platform → Platform. Then the To would be the total ‘Total Force’ in the z-direction. All the pieces are now available to calculate the applied force. Once calculated, you need to be define this in the vessel properties page. After following these steps, I suggest running a simple statics simulation, without the external python function, just to make sure the system is in static equilibrium. Once this is confirmed, then I would start by introducing the environmental forces. By slowly introducing forces, this will help narrow down what the problem could be (should the problem still persist).

Best regards,
Marco

Hi Marco,

Is it possible to open FAST-OrcaFlex coupling code? I am interested in this code for my PhD research.

Best regards,

Sure, you can find the FAST component of the FAST+OrcaFlex coupled program here:

https://github.com/mmasciol/fast_orcaflex

This version creates the 64 bit executable on Intel Fortran compilers. We can let you know what needs to be changed if you want a 32 bit executable instead.

Marco

Hi Marco,

Thank you for giving me source code.
Based on your code, I trying to figure out what are the different things between original FAST code and FAST-OrcaFlex coupling code. In fact, I have not yet found major different things which I want to know for my research when I compared three major codes including FAST.f90, FAST_IO.f90, and HydroCalc.f90 codes.

In FAST_IO.f90 code, almost subroutines are used to read input file for FAST program, especially subroutine GetPtfm (Line 4059-5372). This routine reads in the FAST platform input parameters from PtfmFile. There are no different things between original FAST code and FAST-OrcaFlex coupling code. It means that platform input file should be remained. Whereas, platform input file which is provided by OrcaFlex website (below code) is removed some information such as wave, current and mooring information. Can you give me some advises?

I look forward to hearing from you.

I posted an example platform input file from OrcaFlex website.

```-------------------------------------------------------------------------------- ---------------------- FAST PLATFORM FILE -------------------------------------- NREL 5.0 MW offshore baseline floating platform input properties for the OC3-Hywind spar-buoy. ---------------------- FEATURE FLAGS (CONT) ------------------------------------ True PtfmSgDOF - Platform horizontal surge translation DOF (flag) True PtfmSwDOF - Platform horizontal sway translation DOF (flag) True PtfmHvDOF - Platform vertical heave translation DOF (flag) True PtfmRDOF - Platform roll tilt rotation DOF (flag) True PtfmPDOF - Platform pitch tilt rotation DOF (flag) True PtfmYDOF - Platform yaw rotation DOF (flag) ---------------------- INITIAL CONDITIONS (CONT) ------------------------------- 0.0 PtfmSurge - Initial or fixed horizontal surge translational displacement of platform (meters) 0.0 PtfmSway - Initial or fixed horizontal sway translational displacement of platform (meters) 0.2 PtfmHeave - Initial or fixed vertical heave translational displacement of platform (meters) 0.0 PtfmRoll - Initial or fixed roll tilt rotational displacement of platform (degrees) 0.0 PtfmPitch - Initial or fixed pitch tilt rotational displacement of platform (degrees) 0.0 PtfmYaw - Initial or fixed yaw rotational displacement of platform (degrees) ---------------------- TURBINE CONFIGURATION (CONT) ---------------------------- -10.0 TwrDraft - Downward distance from the ground level [onshore] or MSL [offshore] to the tower base platform connection (meters) 89.9155 PtfmCM - Downward distance from the ground level [onshore] or MSL [offshore] to the platform CM (meters) 0.0 PtfmRef - Downward distance from the ground level [onshore] or MSL [offshore] to the platform reference point (meters) ---------------------- MASS AND INERTIA (CONT) --------------------------------- 7466.33E3 PtfmMass - Platform mass (kg) 4229.23E6 PtfmRIner - Platform inertia for roll tilt rotation about the platform CM (kg m^2) 4229.23E6 PtfmPIner - Platform inertia for pitch tilt rotation about the platform CM (kg m^2) 164.23E6 PtfmYIner - Platfrom inertia for yaw rotation about the platform CM (kg m^2) ---------------------- PLATFORM (CONT) ----------------------------------------- 1 PtfmLdMod - Platform loading model {0: none, 1: user-defined from routine UserPtfmLd} (switch)```

Hi Toan,

That’s correct, and a majority of the original FAST source code remains the same. We can leave the code largely intact because PtfmLdMod in the *.ptfm file offers the option to call a user-specified routine (instead of HydroDyn) to calculate the loads on the floating body. Wrappers to access OrcaFlex functions were created inside this user-specified subroutine. If you want to look at how FAST accesses OrcaFlex, start with the UserPtfmLd subroutine. The responsibility is on users to create and import the vessel properties in OrcaFlex, i.e., import the WAMIT data, define the mooring line properties and connection point, viscous drag coefficients, set time step size, ect. In other word, OrcaFlex does not read the FAST input files.

The source files modified are to perform this coupling are:

UserSubs_forBladedDLL.f90 (which is just a modification of UserSubs.f90 distributed with the FAST archive)
FAST_IO.f90
FAST_Mods.f90

Marco

Hi Marco,

Thank you for your information. They are very useful for my study.

Best regards.

Hi Marco,

thank you for your indications. I am now using a constant vertical force, forgetting the implementation of the time varying one via Python, as Orcina support suggested me (I contacted them). This “virtual” force application will be solved in OrcaFlex 9.7, so meanwhile I will work with this constant value, calculated as you wrote.

Regards,

Hi Marco

I read the “Unofficial User’s Guide to Interfacing FAST with OrcaFlex” from your Github. I noticed that you included 6D buoys to consider the quadratic drag term in Morison’s equation on the floating body.

I plan to analyze a semi-submersible floating wind turbine with Orcaflex-FAST coupled. The semi-submersible floating platform has 3 cylinder floaters with all diameters being 14m and slender lattice beams connecting these floaters(like Windfloat).

I build a composite model in Sesam/Wadam and then got load RAO and wave drift QTF data available, it seems that 6D buoys are no longer needed in Orcaflex since drag term is considered in RAO and QTF(may be not quadratic)?