
[Sponsors] 
December 17, 2014, 17:54 
adding strainRate in a solver

#1 
New Member
anonymous
Join Date: Jan 2012
Location: Canada
Posts: 24
Rep Power: 6 
Hello everyone
I want to add strain rate in interFoam and I do not know how to do that. I need to define one more equation to interFoam similar to the temperature but for volume fraction and I wrote the code for solving the matrix but still have a problem with strain rate. I defined viscosity like: surfaceScalarField mu=fvc::interpolate(twoPhaseProperties.mu()); and I tried to define strain rate like: surfaceScalarField strainRate=fvc::interpolate(viscosityProperties.st rainRate()); which it seems the definition of strain rate is not correct. Do I need to declare sth in creatFields.H for it? Could anyone help me coding this part. Regards Mahyar 

December 19, 2014, 15:26 

#2  
Senior Member
Kyle Mooney
Join Date: Jul 2009
Location: Amherst, MA USA  San Diego, CA USA
Posts: 310
Rep Power: 9 
Hi Mahyar,
You could always calculate the strain rate values with something like this in the top level solver: Code:
volScalarField strainRate = sqrt(2.0)*mag(symm(fvc::grad(U))); surfaceScalarField strainRatef = fvc::interpolate(strainRate); Something like this might work as well (warning:untested): Code:
surfaceScalarField strainratef = fvc::interpolate(twoPhaseProperties.nuModel1().strainRate()); Cheers, Kyle Quote:


December 23, 2014, 10:50 

#3 
New Member
anonymous
Join Date: Jan 2012
Location: Canada
Posts: 24
Rep Power: 6 
HiKyle
Thanks for your reply. I tried the first part of the code that you mentioned beforein my code and I got an error about the type that strainRate returns (which is double).
I was wondering should I define an object for viscosityModel class and use strainRate function through that object. I think this is the case for twophaseProperties. Best Regards Mahyar 

December 23, 2014, 16:25 

#4 
Senior Member
Kyle Mooney
Join Date: Jul 2009
Location: Amherst, MA USA  San Diego, CA USA
Posts: 310
Rep Power: 9 
Hi Mahyar,
I'm confused by your statement. How can strainRate return a double if you're initializing the variable to be type volScalarField? Kyle 

January 8, 2015, 16:28 

#5 
New Member
anonymous
Join Date: Jan 2012
Location: Canada
Posts: 24
Rep Power: 6 
Dear Kyle
sorry for the late reply. This is the exact error that I receive when I used the definition of strainRate in the code. error: call of overloaded ‘sqrt(double)’ is ambiguous regards Mahyar 

January 8, 2015, 16:30 

#6 
Senior Member
Kyle Mooney
Join Date: Jul 2009
Location: Amherst, MA USA  San Diego, CA USA
Posts: 310
Rep Power: 9 
try
Code:
foam::sqrt 

January 8, 2015, 16:37 

#7 
New Member
anonymous
Join Date: Jan 2012
Location: Canada
Posts: 24
Rep Power: 6 
Hi
I used volScalarField strainRate = foam::sqrt(2.0)*mag(symm(fvc::grad(U))); and I got this: error: ‘foam’ has not been declared Regards Mahyar 

January 8, 2015, 16:39 

#8 
Senior Member
Kyle Mooney
Join Date: Jul 2009
Location: Amherst, MA USA  San Diego, CA USA
Posts: 310
Rep Power: 9 
you could always just use 1.41421356237!


January 8, 2015, 16:51 

#9 
New Member
anonymous
Join Date: Jan 2012
Location: Canada
Posts: 24
Rep Power: 6 
Thanks Kyle. The solver compiled now.


January 8, 2015, 16:52 

#10 
Super Moderator
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 9,215
Blog Entries: 35
Rep Power: 94 
Greetings to all!
This is one of those frequently asked questions... gotta make a note to add this to the FAQ... Mahyar, please try the following: Code:
::sqrt(2.0) ::sqrt(scalar(2.0)) sqrt(scalar(2.0)) scalar(::sqrt(2.0)) scalar(sqrt(2.0)) Best regards, Bruno
__________________
I'll be at OFW11 in Portugal 

January 8, 2015, 17:06 

#11 
New Member
anonymous
Join Date: Jan 2012
Location: Canada
Posts: 24
Rep Power: 6 
Hi Bruno
I checked them in my solver and the results are: scalar(sqrt(2.0)) error: call of overloaded ‘sqrt(double)’ is ambiguous, note: Foam::doubleScalar Foam::sqrt(Foam::doubleScalar) scalar(::sqrt(2.0)) It works sqrt(scalar(2.0)) error: call of overloaded ‘sqrt(double)’ is ambiguous ::sqrt(scalar(2.0)) It works ::sqrt(2.0) It works Regards Mahyar 

January 11, 2015, 15:53 

#12 
Super Moderator
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 9,215
Blog Entries: 35
Rep Power: 94 
Hi Mahyar,
Many thanks for testing them all! I've added the working ones to the FAQ: http://openfoamwiki.net/index.php/FA...9_is_ambiguous Best regards, Bruno 

Thread Tools  
Display Modes  


Similar Threads  
Thread  Thread Starter  Forum  Replies  Last Post 
chtMultiRegionSimpleFoam  samiam1000  OpenFOAM Running, Solving & CFD  33  January 22, 2016 19:51 
thobois class engineTopoChangerMesh error  Peter_600  OpenFOAM  4  August 2, 2014 09:52 
Adding additional complex source term to BuoyantBoussinesqPisoFoam solver  pajofego  OpenFOAM Programming & Development  2  April 9, 2013 17:00 
Working directory via command line  Luiz  CFX  4  March 6, 2011 21:02 
why the solver reject it? Anyone with experience?  bearcat  CFX  6  April 28, 2008 14:08 