CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > Software User Forums > OpenFOAM > OpenFOAM Community Contributions

[waves2Foam] Waves2Foam Related Topics

Register Blogs Community New Posts Updated Threads Search

Like Tree162Likes

Closed Thread
 
LinkBack Thread Tools Search this Thread Display Modes
Old   February 11, 2012, 18:11
Default
  #21
ngj
Senior Member
 
Niels Gjoel Jacobsen
Join Date: Mar 2009
Location: Copenhagen, Denmark
Posts: 1,900
Rep Power: 37
ngj will become famous soon enoughngj will become famous soon enough
Greetings Dave,

Thanks for your feedback - did you have some particular problems, if so, could I convince you to make a small section at the Wiki in order to help others using 2.1 with waves2Foam?

With respect to your questions, I will answer it in several steps, as the question itself have several layers in it:

1. You do not need to use setWaveField at all. I have merely included this utility for two reasons:
1.a. It makes the initialisation of a still water level more correct, if the cells are not aligned with the location of the free surface. At least more correct in terms of mass conservation, however, you will still experience the standard spurious velocities in the air.
1.b. Say that you want first order Stokes waves in the entire domain and the bed is horizontal, then one can save computational time by using setWaveField to have the hydrodynamics initialised to that given wave theory in the entire domain.

2. Stability issues using (the utility) setWaveField with a moving ship.
In this case, you have to look into the file src/setWaveField/setWaveField.C which is the one, which is utilised in setWaveField for the initialisation. I am currently not at a computer with waves2Foam, so I cannot answer your question explicitly. Nevertheless, as I recall the implementation, setWaveField.C (the class, there is a bit of naming confusion here), calls the waveTheory, which is specified through waveProperties, to be used for the initilisation. If the computational cell is above the free surface, I believe the velocity is explicitly set to zero in setWaveField.C.

3. During runTime, the same thing happens for the relaxation zones. Here, the easiest thing for you might be to derive a new class from relaxationScheme, which calls a variable from waveProperties.subDict, say shipVelocity, and sets the velocity in the air to this given velocity. Or you could get the velocity from either the boundary condition of the ship, or where ever.

4. The conflict between 2 and 3 might be solvable, however, this would require any of two things:
4.a. Let setWaveField.C (the class) call autoPtr to relaxationScheme rather than waveTheory. However, in this case the user has to remember that the defined extend of the relaxation zone should span the entire domain! I do not like such "and please remember that you have to do this in this particular case".
4.b. Have a special constructor in relaxationScheme, which do not look into waveProperties for the spatial extend of the relaxation, but automatically uses the entire domain, i.e. all of the computational cells, and which to do not weight the 'computed' solution with a target, but uses the target directly. This might actually be a good approach, however, as I said my waves2Foam is one computer away, so I have to look at this on Monday. The benefit of this would be that you could use your derived class with the ship velocity in the initialisation without any manual interaction.

5. The golden version would be to have a accompanying 'airTheories' abstract class, which is called, and if the user do not care about the air velocities, then an 'empty' (= vector::zero) is returned for the air velocity, whereas non-zero velocities are returned in other cases.

I hope that this fully answers your questions and thank you for the feedback. I am sincerely happy to receive any comments, suggestions, submissions, etc.

Kind regards,

Niels
ngj is offline  

Old   February 12, 2012, 13:11
Default
  #22
Senior Member
 
Dave
Join Date: Jul 2010
Posts: 100
Rep Power: 15
daveatstyacht is on a distinguished road
Niels,
Thanks, for your response. My compiling issues were really just related to the option file when I went to create my own waveFoam in a different location other then within wave2Foam and not an issue caused by the wave2Foam package itself (which compiled on the first try). I was a little confused about where to put the wave2Foam folder since when I got it off sourceforge it placed it in my home directory so I moved it to the applications folder before compiling it.

I went back and found the places where the air velocity is set to zero as you pointed out. I think I may add vector definition in one of the dictionary files (was thinking waveProperties as well) and replace the instances of the vector: UTarget(vector::zero);

with the user defined vector: UTarget(windvector);
along with the equivalent line in RelaxationSchemeSpatial.C

If still air is desired by the user, then the vector can simply be set equal to (0 0 0). By making it user defined it also allows for wind in any direction to be specified. Where I could see an "airTheories" class coming in handy is if a wind velocity profile was desired though I can't imagine that would be easy to do for an inlet with waves present.

The meaning of waveVelocity BC parameters is a little confusing. The choice of "value" versus "refvalue" is not entirely clear to me along with valueFraction.
inlet
}
type waveVelocity;
refValue uniform ( 0 0 0 );
refGradient uniform ( 0 0 0 );
valueFraction uniform 1;
value uniform (0 0 0);
}


Dave
daveatstyacht is offline  

Old   February 13, 2012, 04:10
Default
  #23
ngj
Senior Member
 
Niels Gjoel Jacobsen
Join Date: Mar 2009
Location: Copenhagen, Denmark
Posts: 1,900
Rep Power: 37
ngj will become famous soon enoughngj will become famous soon enough
Hi Dave

Yes, your approach seems, at least at the moment, to be the simplest modification to the source code. After looking through the code yesterday, I have become unhappy with the reappearance of the same piece of code in both setWaveField and relaxationScheme, so I might end up making a more general implementation at some point, when I have figured out the structure.

You could even make a lookupOrDefault, where the default value is a vector::zero. In this way, the user only needs to specify the velocity, if needed. When you have got it working, could I convince you to make a submit or send me a patch-file; I will obviously give you the proper acknowledgement.

Yes, wave/air flow is a difficult topic and finding some expressions to use for the air flow is not straight forward, however, the point was raised in the review of the article, which we have published on waves2Foam

With respect to the value and refValue, those are needed by mixedFvField<Type>, which is the parent class of the wave***** boundaryConditions. It does essentially not matter what you specify, as the values will be overwritten in the very first time step.

Kind regards,

Niels
ngj is offline  

Old   February 13, 2012, 14:30
Default
  #24
Senior Member
 
Dave
Join Date: Jul 2010
Posts: 100
Rep Power: 15
daveatstyacht is on a distinguished road
Niels,
Yes, there is certainly a great deal of repeated code. I count 3 instance of gravity being defined (setWaveProperties.C, waveTheory.C, and relaxationShape.C) with a lot of other similar code in those files. It may make sense to create a class which does all of the reading from waveProperties to condense all of that repeated code. I have gone ahead and added a wind vector in all of the relevant places with an input in the waveProperties file. I have not added the lookupOrDefault functionality since I am unfamiliar with how to do that in this context. If you have any examples of it that you can point to in OpenFOAM I can go ahead and add it. I have not checked if this works with version 1.5 though I don't believe I have done anything that should make it incompatible. I have made modifications to the following:
waveTheory.H/C
setWaveField.H/C
relaxationSchemeSpatial.H/C

I will send you a message with my email and will send a tar file of the changed files once I confirm that the results appear correct (currently running).

Dave
daveatstyacht is offline  

Old   February 14, 2012, 02:36
Default
  #25
New Member
 
Silvan Brändli
Join Date: Aug 2009
Posts: 27
Rep Power: 16
s_braendli is on a distinguished road
Hi Dave

You will need something like

Code:
windVelocity_(lookupOrDefault("windVelocity",dimensionedVector("windV",dimLength/dimTime,vector(0,0,0))))
with the meaning:

Code:
<<variable_name>>(lookupOrDefault("<<name_in_dict>>",<<default_value>>))
Silvan

PS: If your class is not derived from IOdictionary try myDict_.lookupOrDefault(...)

Last edited by s_braendli; February 14, 2012 at 03:29.
s_braendli is offline  

Old   February 14, 2012, 13:48
Default
  #26
Senior Member
 
Dave
Join Date: Jul 2010
Posts: 100
Rep Power: 15
daveatstyacht is on a distinguished road
Silvan,
Thank you, once you pointed out the format it became fairly straight forward to apply. The changes have been made and sent to Niels for incorporation.

Dave
daveatstyacht is offline  

Old   February 15, 2012, 05:53
Default
  #27
New Member
 
Jordi Muela
Join Date: Mar 2011
Posts: 27
Rep Power: 16
jordi.muela is on a distinguished road
Hi all,

some people asked me about how to couple waves2Foam with dynamic mesh motion. I've wrote a little 'how to' about how do it. You can find it here:

https://sites.google.com/site/jordim...ic-mesh-motion

Best regards,

Jordi.
jordi.muela is offline  

Old   February 15, 2012, 06:00
Default
  #28
ngj
Senior Member
 
Niels Gjoel Jacobsen
Join Date: Mar 2009
Location: Copenhagen, Denmark
Posts: 1,900
Rep Power: 37
ngj will become famous soon enoughngj will become famous soon enough
Hi Jordi

Great I keep smiling, whenever someone puts an effort into improving the usability of waves2Foam! Could I convince you to put a section on the wiki and incorporating your description there or simply put a link to your website?

Thanks a lot,

Niels
ngj is offline  

Old   February 16, 2012, 03:42
Default
  #29
New Member
 
Jordi Muela
Join Date: Mar 2011
Posts: 27
Rep Power: 16
jordi.muela is on a distinguished road
Quote:
Originally Posted by ngj View Post
Hi Jordi

Great I keep smiling, whenever someone puts an effort into improving the usability of waves2Foam! Could I convince you to put a section on the wiki and incorporating your description there or simply put a link to your website?

Thanks a lot,

Niels
The wiki is updated
jordi.muela is offline  

Old   February 16, 2012, 04:09
Default
  #30
ngj
Senior Member
 
Niels Gjoel Jacobsen
Join Date: Mar 2009
Location: Copenhagen, Denmark
Posts: 1,900
Rep Power: 37
ngj will become famous soon enoughngj will become famous soon enough
Thanks!

Enjoy this wonderful Thursday,

Niels
ngj is offline  

Old   February 16, 2012, 07:26
Default
  #31
New Member
 
Jordi Muela
Join Date: Mar 2011
Posts: 27
Rep Power: 16
jordi.muela is on a distinguished road
Hi Niels,

have you experienced with decomposed cases running in parallel? I've launched a case with a floating 3D box and my surprise is that the waves dissipates in the internal boundaries normal to wave direction!

Here you can see the dissipation effect: http://dl.dropbox.com/u/23292595/floatingBox3DWave.png

Now I'm running the same case with no domain descomposition in x direction to see if that's the problem...

kind regards,

Jordi.

Last edited by jordi.muela; February 16, 2012 at 07:28. Reason: image too large
jordi.muela is offline  

Old   February 16, 2012, 07:45
Default
  #32
ngj
Senior Member
 
Niels Gjoel Jacobsen
Join Date: Mar 2009
Location: Copenhagen, Denmark
Posts: 1,900
Rep Power: 37
ngj will become famous soon enoughngj will become famous soon enough
No, I have never, ever seen anything like that!

Is the relaxation zone coinciding with the decomposition boundary?

What version of OF are you using?

The relaxationZone is completely local, so it should not have any problems with decomposed mode. Is the inertia transmitted correctly across the boundary, thus merely a problem with the processor boundary on alpha1, or is both pressure, velocity and alpha1 discontinuous across the processor boundary?

Lots of questions and no answers - sorry.

/ Niels
ngj is offline  

Old   February 17, 2012, 09:08
Default
  #33
New Member
 
Jordi Muela
Join Date: Mar 2011
Posts: 27
Rep Power: 16
jordi.muela is on a distinguished road
Hi Niels,

the problem isn't the domain decomposition nor the info exchange between domains. The problem was the lateral walls BC. Since i designed the simulation like a wave channel, first I used zeroGradient for alpha and fixedValue (0 0 0) for U (BCs for a wall..), second i tried with a first zone with lateral walls using waveAlpha and waveVelocity (like 3Dwave case tutorial) followed by a zone with lateral walls using previous BCs, but in the transition zone between BCs the wave dissipates sharply. Only if I use waveAlpha and waveVelocity along the domain the wave cross all the channel... but how to do properly the transition to the relaxation zone?

btw, i use OF1.7.1.

Kind regards,

Jordi.
jordi.muela is offline  

Old   February 17, 2012, 09:39
Default
  #34
ngj
Senior Member
 
Niels Gjoel Jacobsen
Join Date: Mar 2009
Location: Copenhagen, Denmark
Posts: 1,900
Rep Power: 37
ngj will become famous soon enoughngj will become famous soon enough
Okay, I really do not understand what you are saying. Are you modifying the processor boundaries? If that is the case, you should not do that.

Otherwise, you would need to make a sketch of your set-up in order for me to understand.

Have a nice weekend

Niels
ngj is offline  

Old   February 20, 2012, 04:23
Default
  #35
New Member
 
Jordi Muela
Join Date: Mar 2011
Posts: 27
Rep Power: 16
jordi.muela is on a distinguished road
Hi Niels,

ok, sorry for my bad explanation . As you seen before, the study domain is as follows:

floatingObjectDyM.jpg

The problem I'm having is to set properly the boundary condition of lateral walls. See in the next image an schematic representation of lateral wall divided en three zones (the wave travels fromt left to right):

Captura-2.png

Some setting that I've used:

1. If I use for zones 1, 2 and 3 the b.c. zeroGradient for scalar field alpha1, and fixedValue (0 0 0) for vector field U, then the wave dissiaptes sharply...

2. If i use in zone 1 (or 1 and 2) the bc's waveAlpha and waveVelocity (specifyng the patches as 'inlet'), and for the other lateral patches the bc's specified in point 1, in the transition zone the behaviour of the wave is very unrealistic, the field alpha isn't continous, looks like a cut..

3. Alternatively, I tried setting the bc's for alpha1 and U as waveAlpha and waveVelocity respectively in the three zones, but i'm not sure that's a good option... for example in the outlet zone (zone 3), in the patch the wave is not dissipated, but in the bulk zone is it dissipated.

I hope that with this explanation you can understand better my problem... so...

Sorry if that's a silly question... but which boundary conditions suggest I use? I'm thinking other alternatives, but maybe you can help me to fix it quickly.

Btw, in simulations where exists a transition between patches (as i exposed in point 2) some simulations get suddenly frozen calculating p_rgh, not show any error message, simply the process remains active until you stop it... but the simulation doesn't advance...

Thanks a lot,

Kind regards,

Jordi.
jordi.muela is offline  

Old   February 20, 2012, 05:07
Default Waves2Foam Related Topics
  #36
ngj
Senior Member
 
Niels Gjoel Jacobsen
Join Date: Mar 2009
Location: Copenhagen, Denmark
Posts: 1,900
Rep Power: 37
ngj will become famous soon enoughngj will become famous soon enough
Hi Jordi

I am really confused - not over your explanation - but on what goes wrong. Could you please send me a test case, which exhibits these problems, but please try to make it as small as possible, so the simulation time is kept low.

Yes, I have also experienced problems with the stalling at the pressure equation. I have not found any good reason for it. It happens out of the blue on both static and dynamic meshes.

Kind regards,

Niels
ngj is offline  

Old   March 1, 2012, 11:05
Default
  #37
New Member
 
Silvan Brändli
Join Date: Aug 2009
Posts: 27
Rep Power: 16
s_braendli is on a distinguished road
Good afternoon everybody

I am working with the 3Dwaves-tutorial and have a few questions coming up:

1.) seaLevel is set to 0.01, although 0.0 would make sense. However, when I set seaLevel to 0.0 I get a floating point exception after approx. 1.7 seconds. Is there a known reason for this behaviour?

2.) The cell height in 3Dwaves is 0.25 meters, and we are dealing with a wave height of 0.2 meters. I would have expected, that we need a bigger number of cells over the wave height.

3.) When I try to increase the wave height in 3Dwaves from 0.2 to 0.5 I also get a floating point exception after approx. 6 seconds.

Im glad to read your opinions and hints.

Best regards
Silvan

PS: Many thanks to Jordi. I am also working with moving grids and was happy to find your description.

PPS: I am using OF 2.1, the 3Dwaves-tutorial is slightly modified: fvSolution as described in my first post, and I left away the wall since I have problems with createBaffles in OF 2.1.
s_braendli is offline  

Old   March 2, 2012, 03:20
Default
  #38
ngj
Senior Member
 
Niels Gjoel Jacobsen
Join Date: Mar 2009
Location: Copenhagen, Denmark
Posts: 1,900
Rep Power: 37
ngj will become famous soon enoughngj will become famous soon enough
Hi Silvan

I have just tried to do what you reported, and I can reproduce the problems at this end. I believe the problem is related to the unboundedness of alpha1, see screen dump. These values occur right the corner at one of the inlet zones and the outlet zone (white boxes). It might call for a special boundary condition for the lateral boundaries, but since I have not worked intensively with 3D wave problems, I have not considered whether or not it is a problem. Changing seaLevel to 0.01 apparently keeps the magnitude of the negative number small enough for the simulation to complete.

With respect to the discretisation, it is merely a tutorial used to convey the functionality of waves2Foam, so for real life applications you would indeed need more cells.

Kind regards,

Niels
Attached Images
File Type: jpg problemCells.jpg (15.5 KB, 164 views)
ngj is offline  

Old   March 2, 2012, 03:27
Default
  #39
New Member
 
Silvan Brändli
Join Date: Aug 2009
Posts: 27
Rep Power: 16
s_braendli is on a distinguished road
Hi Niels

Thanks for your reply. I will try around with different discretisations and relaxations zones.

Best regards
Silvan
s_braendli is offline  

Old   March 2, 2012, 04:42
Default
  #40
ngj
Senior Member
 
Niels Gjoel Jacobsen
Join Date: Mar 2009
Location: Copenhagen, Denmark
Posts: 1,900
Rep Power: 37
ngj will become famous soon enoughngj will become famous soon enough
Hi

I have two suggestions:

1. Try retracting the relaxation zone some distance from the corner in the domain and see what happens.

2. The problem might be that the lateral boundaries are waveTheory-type boundaries, but the relaxation zone does not alter the values at the boundaries, merely in the interior. What is potentially needed is a boundary condition on the lateral boundary, which extrapolate from the relaxed interior values.

All the best,

Niels
ngj is offline  

Closed Thread


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Map of the OpenFOAM Forum - Understanding where to post your questions! wyldckat OpenFOAM 10 September 2, 2021 05:29
Re-Project topics protocol STAR-CCM+ 0 March 22, 2016 05:25
Waves2Foam Related Topics seoseonguk OpenFOAM Running, Solving & CFD 0 March 1, 2016 22:18
Waves2Foam Related Topics seoseonguk OpenFOAM Running, Solving & CFD 0 March 1, 2016 22:14
Error: "Cannot find file points" related to changing parallelized code to serial? Suyf OpenFOAM Running, Solving & CFD 0 February 12, 2015 04:31


All times are GMT -4. The time now is 12:56.