TAGGED: apply-load, buoyancy, fluent, peteroznewman, sdof, udf
-
-
August 12, 2025 at 7:04 pm
rnegrete
SubscriberI am working on a set of devices that will allow to place variable loads on a system with a buoyant object during the wave oscillation to do work. I need to compare a "traditional" system with fixed loads to an improved one with variable loads. I also want to understand how the devices will help me handle better the inertial forces and how to place the loads at the begining and end of the descent and ascent motions to maximize energy capture. For the time being, I'm disregarding friction from water to the buoy's walls and within the system, which I will later incorporate.Â
What I've done so far is simulating a wave in fluent, getting the wave height in cfd post, calculating loads in Excel, and the making 2 way FSI simulations with system coupling placing the loads using transient mechanical, but this is slow, complicated, time consuming and error prone. I would love to be able to do everything within fluent and to use the GPU to speed up calculations. This is why I would like to know if I can get the wave height, calculate a load, and place it through a function on the buoyant object within fluent.Â
I have made many posts trying to solve this question but I only get answers to the first question and not to my follow-ups so I end up without having a solution. Also, many answers don't really answer the question but when I try to follow up on them I get nothing... In one of the answers there was a suggestion to use DEFINE_SDOF_PROPERTIES but I'm still far from understanding and implementing that. Is it even possible to get the wave height inside fluent every timestep during the transient simulation's calculation and not through cfd-post after the simulation is done? how do I do that? how can I use that to create a function that gives me variable forces to apply to the buoyant object?Â
Here's a link to the last question I asked to provide more context:
https://innovationspace.ansys.com/forum/forums/topic/work-that-can-be-done-with-a-buoy-not-the-work-it-does-the-one-i-can-do-with-it/
Â
Please help me with this question and the follow-ups. many thanks
-
August 13, 2025 at 8:30 am
Rob
Forum ModeratorDoes the domain change shape? Ie do the forces just alter the rate of motion?Â
Note, staff are very limited in the level of assistance we can offer. I would suggest looking at the 6DOF tutorial in the Fluent manual and go from there.Â
Wave height can be obtained, but if you're then needing it in a UDF it's a little more complicated in that Fluent doesn't see the free surface as such, it sees the cell values so you'd need to loop over the whole domain which isn't cheap. However, Expressions may be sufficient or you could use pressure in place of surface position.Â
-
August 13, 2025 at 8:58 am
Mark O
Ansys Employeeappologies, I did not get a notification of a reply on the previous thread. Providing advice on UDF coding is outside the scope of the forum pages. There are examples of looping over cells of cell threads in the Fluent Help Customization Manual. As Rob said, it may be a little expensive. If you know the wave will be constrained to some region you could create a cell zone for that region and only loop over the cells of that cell zone. Or you can create a zone around the bouy or some small distance upstream as a sampling region and only loop over those cells. Essentially you want to loop over the cells and compute some function that will give you the wave height. If the wave is in the z direction you could compute the maximum of z for those cells with a liquid volume fraction greater than 0.5. Please also see the help section in the customization manual on making serial code work in parallel since any code you write executes independently on each parallel partition and you need to call a parallel max function at the end to get the max over all partitions. You can add Message() statements to the code to print out values to the console during testing to check the code is doing what you expect.
-
August 14, 2025 at 6:10 pm
rnegrete
SubscriberThanks Rob, Mark
The domian doesn't change. The buoy only moves on the y axis so I would need only to analyze that region. I have defined regions, iso surfaces to see the water volume fraction and I also have measured the wave height by building and expression in cfd-post with a line, the water surface and looking at the "wet" part of the line. Is the procedure in Fluent like that? If not, what would an expression to see the wave elevation look like in fluent? Can I use that on the fly to compute a variable load per timestep and place it on some surface on the buoy? Or is that only possible with UDFs? I understand expressions use python and I'm comfortable with it, but I'm not so much in C. If possible, using expressions with python would be the way to go for me... Any pointers on that would be much appreciated... On the UDFs hand, I took a glance at the Customization Manual but it assumes you are already good in C. If what I want can only be achieved with UDFs, could you recommend some forum, course or other resources to understand better UDFs for C beginners?Â
BR
-
August 15, 2025 at 11:09 am
Mark O
Ansys EmployeeThis can only be done with the UDF DEFINE_SDOF_PROPERTIES for the rigid body property. This is the only place in which you can specify arbitrary loads.Â
There are no courses on UDFs in the forum. There are some courses on UDFs on the Ansys Learning Hub. The Ansys Learning Hub requires a subscription.
https://learninghub.ansys.com/learn/external-ecommerce;view=none;redirectURL=?ctldoc-catalog-0=category_id-107
User Defined Functions (UDFs) in Ansys Fluent Software
User Defined Functions (UDFs) for Eulerian Multiphase Flows in Ansys Fluent Software -
August 15, 2025 at 11:42 pm
rnegrete
SubscriberThanks guys!
-
- You must be logged in to reply to this topic.
-
3792
-
1388
-
1188
-
1095
-
1015
© 2025 Copyright ANSYS, Inc. All rights reserved.