CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > Software User Forums > OpenFOAM > OpenFOAM Running, Solving & CFD

Slip boundary around circles

Register Blogs Community New Posts Updated Threads Search

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   September 12, 2008, 11:21
Default Hi Niels, http://www.cfd-on
  #21
Senior Member
 
ZHOU Bin
Join Date: Mar 2009
Location: Nanjing/Torino, Nanjing/Piemente, China/Italy
Posts: 164
Rep Power: 17
zhoubinwx is on a distinguished road
Send a message via ICQ to zhoubinwx Send a message via MSN to zhoubinwx Send a message via Skype™ to zhoubinwx
Hi Niels,



You see how stupid I am, as you suggested, we could use a simple code to do this work if the syntax is not available for this repeat problem.

Have a nice weekend.

By the way, please allow me to send my best wished to you, your family and all Foamers here. Because on Sep 14, it is Mid-autum day, which means the family get-together and have fun.

Best regards,

Bin
zhoubinwx is offline   Reply With Quote

Old   September 17, 2008, 07:12
Default Dear Niels and all friends her
  #22
Senior Member
 
ZHOU Bin
Join Date: Mar 2009
Location: Nanjing/Torino, Nanjing/Piemente, China/Italy
Posts: 164
Rep Power: 17
zhoubinwx is on a distinguished road
Send a message via ICQ to zhoubinwx Send a message via MSN to zhoubinwx Send a message via Skype™ to zhoubinwx
Dear Niels and all friends here,

I am glad to tell you that I find great pleasure writing my own code now, it is near completed.

Now pls allow me to ask a question:

Briefly: How to get three points on the boundary?

Detailed:The way to provide the three points around the circle below is right?

label patchID = mesh.boundaryMesh().findPatchID("circle");
volVectorField point1=U.mesh().boundary()[patchID].[0];
volVectorField point2=U.mesh().boundary()[patchID].[1];
volVectorField point3=U.mesh().boundary()[patchID].[2];

I need your hint at his point.

Best regards,
Bin
zhoubinwx is offline   Reply With Quote

Old   September 17, 2008, 13:10
Default Dear all, I know it is not
  #23
Senior Member
 
ZHOU Bin
Join Date: Mar 2009
Location: Nanjing/Torino, Nanjing/Piemente, China/Italy
Posts: 164
Rep Power: 17
zhoubinwx is on a distinguished road
Send a message via ICQ to zhoubinwx Send a message via MSN to zhoubinwx Send a message via Skype™ to zhoubinwx
Dear all,

I know it is not good to ask so many questions. I have followed one principle "problem is important when we compile".

Now please allow me to ask one more questions (till now the above question is unsolved). I am thinking...

abelAs you could see:
If I want to use "mesh.boundary()[circlePatchID].Sf() / mesh.boundary()[circlePatchID].magSf();", I must do:
circlePatchID=Mesh().boundary().findPatchID("circl e1");

But I have 100 circles.

What I am thinking is that: if I specify whatever circles I have ( circle1, circle2, ...), as long as I specify "circleSlip", they will use my own boundary.

I am doing this, I hope I could find a way out this evening.Otherwise I will be sleepless.

Good luck to me.

Best regards,

bin
zhoubinwx is offline   Reply With Quote

Old   September 17, 2008, 14:03
Default Hi Bin Glad to hear that yo
  #24
ngj
Senior Member
 
Niels Gjoel Jacobsen
Join Date: Mar 2009
Location: Copenhagen, Denmark
Posts: 1,903
Rep Power: 37
ngj will become famous soon enoughngj will become famous soon enough
Hi Bin

Glad to hear that you are having progress.

@First post:

I would do something like this, say circle1:

label patchID = mesh.boundaryMesh().findPatchID("circle1");
const vectorField & pp = mesh.boundary()[patchID].Cf();
if (pp.size() >= 3)
{
vector p0 = pp[0];
vector p1 = pp[1];
vector p2 = pp[2];
}

I have had a bad experience with the way you mentioned, as it not always points to the correct value in the memory, but returns random values, therefore the seperate vectorField for the boundary field.

@second question

Still I assume that you are coding this directly in the solver? So what if you where doing something like this:

forAll(mesh.boundary(),patchID)
{
if(mesh.boundary()[patchID].type() == "circleSlip")
{
Do your magic...
}
}

I am doing this away from a working OF, but it should work, as far as I recall.

On the other hand, if you have made a boundary-object, then if does know which patch you are dealing with, and thus it knows exactly which points are on the present patch, i.e. circle1, circle2, etc.

Good luck

Niels
__________________
Please note that I do not use the Friend-feature, so do not be offended, if I do not accept a request.
ngj is offline   Reply With Quote

Old   September 18, 2008, 07:05
Default Hi Niels, You are so kind,
  #25
Senior Member
 
ZHOU Bin
Join Date: Mar 2009
Location: Nanjing/Torino, Nanjing/Piemente, China/Italy
Posts: 164
Rep Power: 17
zhoubinwx is on a distinguished road
Send a message via ICQ to zhoubinwx Send a message via MSN to zhoubinwx Send a message via Skype™ to zhoubinwx
Hi Niels,

You are so kind, and what you said is valuable for me.

I do this one step by one step, I hope I could deserve my carefulness.

When I compile, I get:
circleSlipFvPatchVectorField.C:156: error: 'grad' was not declared in this scope

This error points to:
//gradient of the above "tangential component";
vectorField GradTan= grad(phi_t);

As you could see the above equation, after I get the tangential velocity phi_t, I should perform the gradient on it.

I search the Doxgen online help, only to find that gradient is used for boundary normal gradient (without any input parameters).

From the programmerGuide.pdf P-37, I know that we have many ways i.e. grad(chi), gGrad(phi), lsGrad(phi), snGrad(phi),snGradCorrection(phi),
for vectorField, chi and phi are both ok.

This is the reason why I have the above mentioned code.

Hope you and any other friends could understand my situation now.

Well, I benefit a lot from your suggestions and by the way from the error during compiling.

Best regards,

Bin
zhoubinwx is offline   Reply With Quote

Old   September 18, 2008, 11:06
Default Hello, Can I show my think
  #26
Senior Member
 
ZHOU Bin
Join Date: Mar 2009
Location: Nanjing/Torino, Nanjing/Piemente, China/Italy
Posts: 164
Rep Power: 17
zhoubinwx is on a distinguished road
Send a message via ICQ to zhoubinwx Send a message via MSN to zhoubinwx Send a message via Skype™ to zhoubinwx
Hello,

Can I show my thinking:

1. is it possible to use the one as the solver in the boundary condition, but not solver. Like:
-------------------------
fvVectorMatrix UEqn
(
n*fvc::grad(phi_t)
);

solve(UEqn == (remda_+diam)/remda_*phi_t);
-------------------------

2. If there is no such function as "supposed" grad(phi_t), after I define "phi_t=phi_-n*(n & phi_)"

I am struggling about this.

Gook luck to me.

Best regards,

bin
zhoubinwx is offline   Reply With Quote

Old   September 18, 2008, 11:07
Default Sorry, the 2 method is to defi
  #27
Senior Member
 
ZHOU Bin
Join Date: Mar 2009
Location: Nanjing/Torino, Nanjing/Piemente, China/Italy
Posts: 164
Rep Power: 17
zhoubinwx is on a distinguished road
Send a message via ICQ to zhoubinwx Send a message via MSN to zhoubinwx Send a message via Skype™ to zhoubinwx
Sorry, the 2 method is to define a self gradient for this parameter, let me work on it....
zhoubinwx is offline   Reply With Quote

Old   September 18, 2008, 11:54
Default Dear all, I could see that
  #28
Senior Member
 
ZHOU Bin
Join Date: Mar 2009
Location: Nanjing/Torino, Nanjing/Piemente, China/Italy
Posts: 164
Rep Power: 17
zhoubinwx is on a distinguished road
Send a message via ICQ to zhoubinwx Send a message via MSN to zhoubinwx Send a message via Skype™ to zhoubinwx
Dear all,

I could see that fvm::grad(phi) could be used in the solver/applications.

Therefore can I build a file named "tanUGrad.H"
-------------------------
fvPatchTensorField tanUGrad

(

IOobject

(

"tanUGrad",

runTime.timeName(),

mesh,

IOobject::NO_READ

),

fvm::grad(U-(patch().Sf()/patch().magSf())*((patch().Sf()/patch().magSf()) & U))

);

tanUGrad.write();
-------------------------

Then #include "tanUGrad.H" in the solver when we want to use this boundary condition, so as to write the data "tanUGrad" in each time directory.

Although this will generate the gradient of the previous, they are used for the current boundary calculation. This may generate error during the simulation.

This is my stupid thinking.

Welcome your comments for my current gradient function problem.

Best regards,

Bin
zhoubinwx is offline   Reply With Quote

Old   September 19, 2008, 07:06
Default Dear all, I find the functi
  #29
Senior Member
 
ZHOU Bin
Join Date: Mar 2009
Location: Nanjing/Torino, Nanjing/Piemente, China/Italy
Posts: 164
Rep Power: 17
zhoubinwx is on a distinguished road
Send a message via ICQ to zhoubinwx Send a message via MSN to zhoubinwx Send a message via Skype™ to zhoubinwx
Dear all,

I find the function of snGrad ()
----------------------------------
//- Return gradient at boundary
tmp<vectorfield> circleSlipFvPatchVectorField::snGrad() const
{
vectorField nHat=patch().nf();
vectorField pif_=this->patchInternalField();

return
(
transform(I - sqr(nHat),pif_)-pif_
)*patch().deltaCoeffs();
}
-------------------------------

First of all, I do not fully understand "transform(I - sqr(nHat),pif_)";

Second, after I look at the function transform(), I find what is written upbove is not right (because this function only needs one parameter input, maybe I am "wrong", welcome help);

Third, one option to replace "transform(I - sqr(nHat),pif_)-pif_ " maybe "*this - patchInternalField()";

Ok, since as we could see snGrad () returns gradient at boundary. In my boundary condition "circleSlip", we can get the grad(U) only with snGrad().

But in the expression, we also know the vector "tangential velocity": tanU=U-n*(n & U). I really do not know how could I get grad(tanU) on the boundary using snGrad(). (It should return any gradient at boundary)

Welcome suggestions for the syntax.

Thank you.

Best regards,

Bin
zhoubinwx is offline   Reply With Quote

Old   September 19, 2008, 14:06
Default Hello, I find one "possible
  #30
Senior Member
 
ZHOU Bin
Join Date: Mar 2009
Location: Nanjing/Torino, Nanjing/Piemente, China/Italy
Posts: 164
Rep Power: 17
zhoubinwx is on a distinguished road
Send a message via ICQ to zhoubinwx Send a message via MSN to zhoubinwx Send a message via Skype™ to zhoubinwx
Hello,

I find one "possible" way to define a member function for the gradient of tangential velocity: grad(u_tangential), but still I need your suggestions if possible.

In the .H file
--------------------
virtual tmp<vectorfield> tanUGrad() const;
--------------------

In the .C file
--------------------
tmp<vectorfield> circleSlipFvPatchVectorField::tanUGrad() const
{
vectorField nHat=patch().nf(); iPt=this->patchInternalField()-n*(n & this->patchInternalField());
vectorField bPt=(*this)-n*(n & (*this));
vectorField iPt=(this->patchInternalField())-n*(n & (this->patchInternalField()));

return
(
bPt - iPt
)*patch().deltaCoeffs();
}
--------------------

However, it seems strange to me that when I compile, I get:
--------------------
circleSlipFvPatchVectorField.C: In member function 'virtual Foam::tmp<foam::field<foam::vector<double> > > Foam::circleSlipFvPatchVectorField::tanUGrad() const':
circleSlipFvPatchVectorField.C:143: error: no match for 'operator&' in '((const Foam::circleSlipFvPatchVectorField*)this)->Foam::circleSlipFvPatchVectorField::n & *(const Foam::circleSlipFvPatchVectorField*)this'
/home/zhou/OpenFOAM/OpenFOAM-1.5/src/OpenFOAM/lnInclude/wordI.H:146: note: candidates are: Foam::word Foam::operator&(const Foam::word&, const Foam::word&)
/home/zhou/OpenFOAM/OpenFOAM-1.5/src/OpenFOAM/lnInclude/dimensionSet.H:278: note: Foam::dimensionSet Foam::operator&(const Foam::dimensionSet&, const Foam::dimensionSet&)
--------------------

You know what I do next? I think why I could not use the innerProduct function.

I search the Doxgen, and find that this function is defined in "products.H", and In "FieldFieldFunctions.C".

I could not solve this till now, would anybody give me a hint? Many thanks to you.

Best regards,

Bin
zhoubinwx is offline   Reply With Quote

Old   September 19, 2008, 17:10
Default Hi, Let allow me to answer
  #31
Senior Member
 
ZHOU Bin
Join Date: Mar 2009
Location: Nanjing/Torino, Nanjing/Piemente, China/Italy
Posts: 164
Rep Power: 17
zhoubinwx is on a distinguished road
Send a message via ICQ to zhoubinwx Send a message via MSN to zhoubinwx Send a message via Skype™ to zhoubinwx
Hi,

Let allow me to answer myself for this problem.

In the .C file, replace "n" with "nHat".

Best regards,

Bin
zhoubinwx is offline   Reply With Quote

Old   September 21, 2008, 11:31
Default Dear all, When I apply my b
  #32
Senior Member
 
ZHOU Bin
Join Date: Mar 2009
Location: Nanjing/Torino, Nanjing/Piemente, China/Italy
Posts: 164
Rep Power: 17
zhoubinwx is on a distinguished road
Send a message via ICQ to zhoubinwx Send a message via MSN to zhoubinwx Send a message via Skype™ to zhoubinwx
Dear all,

When I apply my boundary, the simulation suddenly stops. I check the output value, and get:

1. The three point coordinates are (4.41226e-05,5.79779e-05), (4.71079e-05,6.24456e-05), (4.2272e-05,5.92143e-05);
The circle center coordinate is4.469e-05,6.083e-05)-----this is correct, I have compared with gmsh geo file
The diamter of the circle is:5.81612e-06-----however, the diameter should be 5.93 micrometer (I am sure the equation to calculate diameter is right: 2*sqrt(....)).

Would you mind if I ask how could I improve the accuracy for diameter???

2. Circle surface normal unit vetor is
16
(
(7.63918e-313 1.11173e+171 1.57793e+161)
(2.06999e+161 1.01199e+261 2.31634e-152)
(4.90982e-311 -7.84048e-45 0)
(0.831478 -0.555558 4.60283e-19)
(-0.980786 -0.195085 5.31636e-19)
(0.980786 -0.195085 -5.31636e-19)
(-0.831478 0.555558 -1.15071e-18)
(0.555558 -0.831478 6.88294e-19)
(-0.980786 0.195085 5.59336e-19)
(-0.555558 -0.831478 -1.25939e-18)
(-0.195085 -0.980786 5.31636e-19)
(0.555558 0.831478 -4.60283e-19)
(0.195085 -0.980786 -5.31636e-19)
(-0.195085 0.980786 5.59336e-19)
(0.980786 0.195085 -5.59336e-19)
(-0.555558 0.831478 1.03138e-18)
)

I really do not know why the first three has so large numbers?

Just for your information.

Best regards,

Bin
zhoubinwx is offline   Reply With Quote

Old   September 21, 2008, 17:15
Default Dear all, The second proble
  #33
Senior Member
 
ZHOU Bin
Join Date: Mar 2009
Location: Nanjing/Torino, Nanjing/Piemente, China/Italy
Posts: 164
Rep Power: 17
zhoubinwx is on a distinguished road
Send a message via ICQ to zhoubinwx Send a message via MSN to zhoubinwx Send a message via Skype™ to zhoubinwx
Dear all,

The second problem is solved without "reference" to the vectorField n.

Now I have a severe problems, when I run my case with simpleFoam and this boundary condition is implemented.

The set is the same as what I have successfully done using slip, partialSlip boundary existing in OpenFOAM 1.5.

But I find from the output file that: the case just apply "circleSlip" on the first circle, it runs only at time=0, and it writes the same thing repeatedly and seems endless. My log file becomes 58.2 M at the first several runs.

I really do not know why the algorithm just repeat on the first "circle1" patch, and always on the time 0 ???

If you need some more information, I would be glad to share with you.

I would appreciate it if you could give me a hand.

Thank you.

Bin
zhoubinwx is offline   Reply With Quote

Old   September 22, 2008, 03:26
Default Hi, deal all, In order to s
  #34
Senior Member
 
ZHOU Bin
Join Date: Mar 2009
Location: Nanjing/Torino, Nanjing/Piemente, China/Italy
Posts: 164
Rep Power: 17
zhoubinwx is on a distinguished road
Send a message via ICQ to zhoubinwx Send a message via MSN to zhoubinwx Send a message via Skype™ to zhoubinwx
Hi, deal all,

In order to solve this problem, I copy the partialSlip directory into name-1.5/application, and change "partial" into "circle", add Make directory, in which we have the "files" and "options":

In "files":
circleSlipFvPatchField.C
LIB = $(FOAM_USER_LIBBIN)/libcircleSlip

In "options":
EXE_INC = \
-I$(LIB_SRC)/finiteVolume/lnInclude
EXE_LIBS =

When I compile, I get:
-------------------------
Making dependency list for source file circleSlipFvPatchField.C
SOURCE=circleSlipFvPatchField.C ; g++ -m32 -Dlinux -DDP -Wall -Wno-strict-aliasing -Wextra -Wno-unused-parameter -Wold-style-cast -O3 -DNoRepository -ftemplate-depth-40 -I/home/zhou/OpenFOAM/OpenFOAM-1.5/src/finiteVolume/lnInclude -IlnInclude -I. -I/home/zhou/OpenFOAM/OpenFOAM-1.5/src/OpenFOAM/lnInclude -I/home/zhou/OpenFOAM/OpenFOAM-1.5/src/OSspecific/Unix/lnInclude -fPIC -pthread -c $SOURCE -o Make/linuxGccDPOpt/circleSlipFvPatchField.o
circleSlipFvPatchField.C:42: error: redefinition of 'Foam::circleSlipFvPatchField<type>::circleSlipFvP atchField(const Foam::fvPatch&, const Foam::DimensionedField<type,>&)'
circleSlipFvPatchField.C:42: error: 'Foam::circleSlipFvPatchField<type>::circleSlipFvP atchField(const Foam::fvPatch&, const Foam::DimensionedField<type,>&)' previously declared here
circleSlipFvPatchField.C:56: error: redefinition of 'Foam::circleSlipFvPatchField<type>::circleSlipFvP atchField(const Foam::circleSlipFvPatchField<type>&, const Foam::fvPatch&, const Foam::DimensionedField<type,>&, const Foam::fvPatchFieldMapper&)'
circleSlipFvPatchField.C:56: error: 'Foam::circleSlipFvPatchField<type>::circleSlipFvP atchField(const Foam::circleSlipFvPatchField<type>&, const Foam::fvPatch&, const Foam::DimensionedField<type,>&, const Foam::fvPatchFieldMapper&)' previously declared here
circleSlipFvPatchField.C:69: error: redefinition of 'Foam::circleSlipFvPatchField<type>::circleSlipFvP atchField(const Foam::fvPatch&, const Foam::DimensionedField<type,>&, const Foam::dictionary&)'
circleSlipFvPatchField.C:69: error: 'Foam::circleSlipFvPatchField<type>::circleSlipFvP atchField(const Foam::fvPatch&, const Foam::DimensionedField<type,>&, const Foam::dictionary&)' previously declared here
circleSlipFvPatchField.C:82: error: redefinition of 'Foam::circleSlipFvPatchField<type>::circleSlipFvP atchField(const Foam::circleSlipFvPatchField<type>&)'
circleSlipFvPatchField.C:82: error: 'Foam::circleSlipFvPatchField<type>::circleSlipFvP atchField(const Foam::circleSlipFvPatchField<type>&)' previously declared here
circleSlipFvPatchField.C:94: error: redefinition of 'Foam::circleSlipFvPatchField<type>::circleSlipFvP atchField(const Foam::circleSlipFvPatchField<type>&, const Foam::DimensionedField<type,>&)'
circleSlipFvPatchField.C:94: error: 'Foam::circleSlipFvPatchField<type>::circleSlipFvP atchField(const Foam::circleSlipFvPatchField<type>&, const Foam::DimensionedField<type,>&)' previously declared here
circleSlipFvPatchField.C:107: error: redefinition of 'void Foam::circleSlipFvPatchField<type>::autoMap(const Foam::fvPatchFieldMapper&)'
circleSlipFvPatchField.C:107: error: 'virtual void Foam::circleSlipFvPatchField<type>::autoMap(const Foam::fvPatchFieldMapper&)' previously declared here
circleSlipFvPatchField.C:119: error: redefinition of 'void Foam::circleSlipFvPatchField<type>::rmap(const Foam::fvPatchField<type>&, const Foam::labelList&)'
circleSlipFvPatchField.C:119: error: 'virtual void Foam::circleSlipFvPatchField<type>::rmap(const Foam::fvPatchField<type>&, const Foam::labelList&)' previously declared here
circleSlipFvPatchField.C:131: error: redefinition of 'Foam::tmp<foam::field<type> > Foam::circleSlipFvPatchField<type>::snGrad() const'
circleSlipFvPatchField.C:131: error: 'virtual Foam::tmp<foam::field<type> > Foam::circleSlipFvPatchField<type>::snGrad() const' previously declared here
circleSlipFvPatchField.C:144: error: redefinition of 'void Foam::circleSlipFvPatchField<type>::evaluate(Foam: :Pstream::commsTypes)'
circleSlipFvPatchField.C:144: error: 'virtual void Foam::circleSlipFvPatchField<type>::evaluate(Foam: :Pstream::commsTypes)' previously declared here
circleSlipFvPatchField.C:164: error: redefinition of 'Foam::tmp<foam::field<type> > Foam::circleSlipFvPatchField<type>::snGradTransfor mDiag() const'
circleSlipFvPatchField.C:164: error: 'virtual Foam::tmp<foam::field<type> > Foam::circleSlipFvPatchField<type>::snGradTransfor mDiag() const' previously declared here
circleSlipFvPatchField.C:181: error: redefinition of 'void Foam::circleSlipFvPatchField<type>::write(Foam:stream&) const'
circleSlipFvPatchField.C:181: error: 'virtual void Foam::circleSlipFvPatchField<type>::write(Foam:stream&) const' previously declared here
make: *** [Make/linuxGccDPOpt/circleSlipFvPatchField.o] Error 1
-----------------------

Does anybody have experience dealing with "redefinition"?

Thank you.

Bin
zhoubinwx is offline   Reply With Quote

Old   September 22, 2008, 04:06
Default Hi, share with you. Solutio
  #35
Senior Member
 
ZHOU Bin
Join Date: Mar 2009
Location: Nanjing/Torino, Nanjing/Piemente, China/Italy
Posts: 164
Rep Power: 17
zhoubinwx is on a distinguished road
Send a message via ICQ to zhoubinwx Send a message via MSN to zhoubinwx Send a message via Skype™ to zhoubinwx
Hi, share with you.

Solution:
in Make/files: replace "circleSlipFvPatchField.C" with "circleSlipFvPatchFields.C"
zhoubinwx is offline   Reply With Quote

Old   September 22, 2008, 06:56
Default Dear all, I find it is str
  #36
Senior Member
 
ZHOU Bin
Join Date: Mar 2009
Location: Nanjing/Torino, Nanjing/Piemente, China/Italy
Posts: 164
Rep Power: 17
zhoubinwx is on a distinguished road
Send a message via ICQ to zhoubinwx Send a message via MSN to zhoubinwx Send a message via Skype™ to zhoubinwx
Dear all,

I find it is strange, because when I use the existing partialSlip boundary file as a base, I could not use the operator "&" in
vectorField iPt=(this->patchInternalField())-n*(n & (this->patchInternalField()));

I get the error:
------------------------
circleSlipFvPatchField.C: In member function 'Foam::tmp<foam::field<type> > Foam::circleSlipFvPatchField<type>::tanUGrad() const [with Type = Foam::SymmTensor<double>]':
circleSlipFvPatchFields.C:42: instantiated from here
circleSlipFvPatchField.C:150: error: conversion from 'Foam::tmp<foam::field<foam::tensor<double> > >' to non-scalar type 'Foam::Field<foam::symmtensor<double> >' requested
circleSlipFvPatchField.C: In member function 'Foam::tmp<foam::field<type> > Foam::circleSlipFvPatchField<type>::tanUGrad() const [with Type = Foam::SphericalTensor<double>]':
circleSlipFvPatchFields.C:42: instantiated from here
circleSlipFvPatchField.C:150: error: conversion from 'Foam::tmp<foam::field<foam::tensor<double> > >' to non-scalar type 'Foam::Field<foam::sphericaltensor<double> >' requested
/home/zhou/OpenFOAM/OpenFOAM-1.5/src/OpenFOAM/lnInclude/products.H: At global scope:
/home/zhou/OpenFOAM/OpenFOAM-1.5/src/OpenFOAM/lnInclude/products.H: In instantiation of 'Foam::innerProduct<foam::vector<double>, double>':
circleSlipFvPatchField.C:150: instantiated from 'Foam::tmp<foam::field<type> > Foam::circleSlipFvPatchField<type>::tanUGrad() const [with Type = double]'
circleSlipFvPatchFields.C:42: instantiated from here
/home/zhou/OpenFOAM/OpenFOAM-1.5/src/OpenFOAM/lnInclude/products.H:100: error: no type named 'type' in 'class Foam::typeOfRank<double,>'
circleSlipFvPatchField.C: In member function 'Foam::tmp<foam::field<type> > Foam::circleSlipFvPatchField<type>::tanUGrad() const [with Type = double]':
circleSlipFvPatchFields.C:42: instantiated from here
circleSlipFvPatchField.C:150: error: no match for 'operator&' in 'nHat2 & iPt0_'
/home/zhou/OpenFOAM/OpenFOAM-1.5/src/OpenFOAM/lnInclude/wordI.H:146: note: candidates are: Foam::word Foam::operator&(const Foam::word&, const Foam::word&)
/home/zhou/OpenFOAM/OpenFOAM-1.5/src/OpenFOAM/lnInclude/dimensionSet.H:278: note: Foam::dimensionSet Foam::operator&(const Foam::dimensionSet&, const Foam::dimensionSet&)
/home/zhou/OpenFOAM/OpenFOAM-1.5/src/OpenFOAM/lnInclude/quaternionI.H:290: note: Foam::scalar Foam::operator&(const Foam::quaternion&, const Foam::quaternion&)
make: *** [Make/linuxGccDPOpt/circleSlipFvPatchFields.o] Error 1
------------------------

This time I checked very carefully, because I only add
vectorField iPt=(this->patchInternalField())-n*(n & (this->patchInternalField()));
where n is well defined.

Is it because I miss some included files?

Bin
zhoubinwx is offline   Reply With Quote

Old   September 22, 2008, 07:02
Default Here is my code: template
  #37
Senior Member
 
ZHOU Bin
Join Date: Mar 2009
Location: Nanjing/Torino, Nanjing/Piemente, China/Italy
Posts: 164
Rep Power: 17
zhoubinwx is on a distinguished road
Send a message via ICQ to zhoubinwx Send a message via MSN to zhoubinwx Send a message via Skype™ to zhoubinwx
Here is my code:

template<class>
tmp<field<type> > circleSlipFvPatchField<type>::tanUGrad() const
{
vectorField nHat2=this->patch().nf();
Field<type> iPt0_=this->patchInternalField();
Field<type> iPt=iPt0_-nHat2*(nHat2 & iPt0_);

return
(
transform(I - sqr(nHat2),iPt)-iPt
)*this->patch().deltaCoeffs();
}
zhoubinwx is offline   Reply With Quote

Old   September 22, 2008, 07:21
Default I have checked the programmerG
  #38
Senior Member
 
ZHOU Bin
Join Date: Mar 2009
Location: Nanjing/Torino, Nanjing/Piemente, China/Italy
Posts: 164
Rep Power: 17
zhoubinwx is on a distinguished road
Send a message via ICQ to zhoubinwx Send a message via MSN to zhoubinwx Send a message via Skype™ to zhoubinwx
I have checked the programmerGuide.pdf again, I get:

The inner product of two vectors a and b is commutative and produces a scalar
s = a &bull; b where
s = aibi = a1b1 + a2b2 + a3b3

Inner product in OpenFOAM could be used for rank a, b >= 1(in Math: a &bull; b, in OpenFOAM a & b)

Well, I hope I could find a solution to this soon.
zhoubinwx is offline   Reply With Quote

Old   September 23, 2008, 16:52
Default Dear all, I am glad that I
  #39
Senior Member
 
ZHOU Bin
Join Date: Mar 2009
Location: Nanjing/Torino, Nanjing/Piemente, China/Italy
Posts: 164
Rep Power: 17
zhoubinwx is on a distinguished road
Send a message via ICQ to zhoubinwx Send a message via MSN to zhoubinwx Send a message via Skype™ to zhoubinwx
Dear all,

I am glad that I could make my boundary condition work, but only the first step.

I need your help because I have an error:

---------------------------
zhou@ENERGETICSAEROSOL:~/OpenFOAM/zhou-1.5/zhou/media_sep23> simpleFoam > log_circleSlip3 &
[1] 9923
zhou@ENERGETICSAEROSOL:~/OpenFOAM/zhou-1.5/zhou/media_sep23> #0 Foam::error::printStack(Foam:stream&) in "/home/zhou/OpenFOAM/OpenFOAM-1.5/lib/linuxGccDPOpt/libOpenFOAM.so"
#1 Foam::sigFpe::sigFpeHandler(int) in "/home/zhou/OpenFOAM/OpenFOAM-1.5/lib/linuxGccDPOpt/libOpenFOAM.so"
#2 Uninterpreted: [0xffffe420]
#3 Foam::tmp<foam::field<foam::vector<double> > > Foam::operator*<foam::vector<double> >(Foam::tmp<foam::field<double> > const&, Foam::tmp<foam::field<foam::vector<double> > > const&) in "/home/zhou/OpenFOAM/OpenFOAM-1.5/applications/bin/linuxGccDPOpt/simpleFoam"
#4 Foam::fv::gaussConvectionScheme<foam::vector<doubl e> >::fvmDiv(Foam::GeometricField<double,> const&, Foam::GeometricField<foam::vector<double>, Foam::fvPatchField, Foam::volMesh>&) const in "/home/zhou/OpenFOAM/OpenFOAM-1.5/lib/linuxGccDPOpt/libfiniteVolume.so"
#5 Foam::tmp<foam::fvmatrix<foam::vector<double> > > Foam::fvm::div<foam::vector<double> >(Foam::GeometricField<double,> const&, Foam::GeometricField<foam::vector<double>, Foam::fvPatchField, Foam::volMesh>&, Foam::word const&) in "/home/zhou/OpenFOAM/OpenFOAM-1.5/applications/bin/linuxGccDPOpt/simpleFoam"
#6 Foam::tmp<foam::fvmatrix<foam::vector<double> > > Foam::fvm::div<foam::vector<double> >(Foam::GeometricField<double,> const&, Foam::GeometricField<foam::vector<double>, Foam::fvPatchField, Foam::volMesh>&) in "/home/zhou/OpenFOAM/OpenFOAM-1.5/applications/bin/linuxGccDPOpt/simpleFoam"
#7 main in "/home/zhou/OpenFOAM/OpenFOAM-1.5/applications/bin/linuxGccDPOpt/simpleFoam"
#8 __libc_start_main in "/lib/libc.so.6"
#9 Foam::regIOobject::readIfModified() in "/home/zhou/OpenFOAM/OpenFOAM-1.5/applications/bin/linuxGccDPOpt/simpleFoam"
--------------------

I searched this forum, and I see that I could find one solution, but I get some "nan" values on my output files.

I would appreciative if you could have some comments for this.

Best regards,

Bin
zhoubinwx is offline   Reply With Quote

Old   September 27, 2008, 12:35
Default Dear all, When I run the ca
  #40
Senior Member
 
ZHOU Bin
Join Date: Mar 2009
Location: Nanjing/Torino, Nanjing/Piemente, China/Italy
Posts: 164
Rep Power: 17
zhoubinwx is on a distinguished road
Send a message via ICQ to zhoubinwx Send a message via MSN to zhoubinwx Send a message via Skype™ to zhoubinwx
Dear all,

When I run the case with my boundary, I get:

DILUPBiCG: Solving for Ux: solution singularity
DILUPBiCG: Solving for Uy: solution singularity
DICPCG: Solving for p: solution singularity
time step continuity errors : sum local = nan, global = nan, cumulative = nan

After I take a look at lduMatrixTests.C, I know that
bool Foam::lduMatrix::solverPerformance::checkSingulari ty
(
const scalar residual
)
{
if (residual > VSMALL)
{
singular_ = false;
}
else
{
singular_ = true;
}

return singular_;
}

void Foam::lduMatrix::solverPerformance::print() const
{
if (debug)
{
Info<< solverName_ << ": Solving for " << fieldName_;

if (singular())
{
Info<< ": solution singularity" << endl;
}
else
{
Info<< ", Initial residual = " << initialResidual_
<< ", Final residual = " << finalResidual_
<< ", No Iterations " << noIterations_
<< endl;
}
}
}

But I am not sure for my problem, where is the possible cause.

Thank you for your attention.

Best regards,

Bin
zhoubinwx is offline   Reply With Quote

Reply


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
Boundary details, free slip or no slip? Tiago CFX 5 August 20, 2013 23:54
Circle of circles Andore Main CFD Forum 1 February 8, 2008 15:45
Modelling with many circles in a rectangle gdbaldw OpenFOAM Pre-Processing 37 November 27, 2007 05:30
Slip Boundary Condition for Moving Boundary Shukla Main CFD Forum 3 November 11, 2005 16:02
Slip boundary for N.S. Rasmus Main CFD Forum 0 June 6, 2002 09:49


All times are GMT -4. The time now is 13:21.