Hi All,
I have a square dom
Hi All,
I have a square domain and I am having the following equation fvm::ddt(C1) == fvm::laplacian(D1,C1) + K1 * fvc::laplacian(Phi) * fvm::Sp(1.0,C1)+ K1 * (fvc::grad(Phi) & fvc::grad(C1)) where D1,K1 are constants... Now I want to set b.cs at the wall of my C1 variable. The b.c is to set the flux = 0, which is given as -D1*grad(C1) - K1*C1*grad(Phi) = 0 at the upperwall and lowerwall of the square domain. Can anyone help me out how exactly should I go about doing this. Thanks Regards Vishal |
Hi,
I saw your direct email c
Hi,
I saw your direct email contact to me. I do not have so much to suggest without the knowledge of the physics you are trying to solve, but what looks strange to me is that you have three sets of equations on the boundaries -D1*dC1/dx - K1*C1*dPhi/dx = 0 -D1*dC1/dy - K1*C1*dPhi/dy = 0 -D1*dC1/dz - K1*C1*dPhi/dz = 0 to determine C1 (assuming C1 is a scalar variable). If that in fact means a surface-normal gradient, you would be able to write a derived b.c. of mixed type. Takuya |
Hi Takuya,
>> "If that in f
Hi Takuya,
>> "If that in fact means a surface-normal gradient, you would be able to write a derived b.c. of mixed type. " Thanks a lot for the reply. May I know how exactly should we go about incorporating the above statement. (I am fairly new to OpenFoam). Could you tell me which tutorial I can follow or how exactly should I get started. Kindly do the needful. Thanks Regards Vishal |
Dear Takuya,
I just would l
Dear Takuya,
I just would like to add on my previous mail. I would like to make flux in the normal direction to be zero. i.e since my problem is 2-d, i want to make flux in the y direction to be zero. Hence my equation is -D1*dC1/dy - K1*C1*dPhi/dy = 0 or -D1*dC1/dn - K1*C1*dPhi/dn = 0 in general where n is normal direction. Kindly do the needful help. Regards Vishal Nandigana |
The mixed type bc code is in $
The mixed type bc code is in $FOAM_SRC/finiteVolume/fields/fvPatchFields/basic/mixed. You'll also find several examples of its derived types under $FOAM_SRC/finiteVolume/fields/fvPatchFields/derived (grep -r mixedFvPatch is your friend). Besides if you have knowledge about basic C++ and a bit of persistence, they just should be more than enough.
T |
Thanks for the tip Takuya. I w
Thanks for the tip Takuya. I will certainly go through it.
Vishal |
Dear Takuya,
I have coded m
Dear Takuya,
I have coded my flux boundary condition which I had mentioned before. The following is how my code looks, but I don't know why I get an error, I would like to know whether I have coded it in the correct way.. Kindly give your suggestions Boundary condition code looks like this: const polyPatchList& patches = mesh.boundaryMesh(); forAll (patches, patchI){ if(C1.boundaryField()[patchI].type()=="fixedGradient"){ fixedGradientFvPatchScalarField& nameOfYourChoice = refCast<fixedgradientfvpatchscalarfield>(C1.bounda ryField()[patchI]); scalarField& otherNameOfYourChoice = nameOfYourChoice.gradient(); otherNameOfYourChoice = -C1*Z1*fvc::snGrad(Phi); } } Kindly let me know what is the mistake I am making... As the error I get is something like this C1 Residual C2 Residual Phi Residual Begin to solve C11#0 Foam::error::printStack(Foam::-Ostream&) in "/home/vishal/OpenFOAM/OpenFOAM-1.5/lib/linuxGccDPOpt/libOpenFOAM.so" #1 Foam::sigFpe::sigFpeHandler(int) in "/home/vishal/OpenFOAM/OpenFOAM-1.5/lib/linuxGccDPOpt/libOpenFOAM.so" #2 Uninterpreted: [0xb7f12420] #3 Foam::divide(Foam::Field<double>&, Foam::UList<double> const&, Foam::UList<double> const&) in "/home/vishal/OpenFOAM/OpenFOAM-1.5/lib/linuxGccDPOpt/libOpenFOAM.so" #4 Foam::operator/(Foam::UList<double> const&, Foam::UList<double> const&) in "/home/vishal/OpenFOAM/OpenFOAM-1.5/lib/linuxGccDPOpt/libOpenFOAM.so" #5 Foam::fixedGradientFvPatchField<double>::evaluate( Foam::Pstream::commsTypes) in "/home/vishal/OpenFOAM/OpenFOAM-1.5/lib/linuxGccDPOpt/libfiniteVolume.so" #6 Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh>::GeometricBoundaryField::evaluate() in "/home/vishal/OpenFOAM/vishal-1.5/applications/bin/linuxGccDPOpt/electroosmoticF oam" #7 Foam::fvMatrix<double>::solve(Foam::Istream&) in "/home/vishal/OpenFOAM/OpenFOAM-1.5/lib/linuxGccDPOpt/libfiniteVolume.so" #8 main in "/home/vishal/OpenFOAM/vishal-1.5/applications/bin/linuxGccDPOpt/electroosmoticF oam" #9 __libc_start_main in "/lib/tls/i686/cmov/libc.so.6" #10 Foam::regIOobject::readIfModified() in "/home/vishal/OpenFOAM/vishal-1.5/applications/bin/linuxGccDPOpt/electroosmoticF oam" Floating point exception Regards Vishal |
Hi Vishal,
Not so sure as I h
Hi Vishal,
Not so sure as I have never tried this way, but at least shouldn't otherNameOfYourChoice = -C1*Z1*fvc::snGrad(Phi); be otherNameOfYourChoice = -nameOfYourChoice*Z1*fvc::snGrad(Phi); ? Takuya |
http://www.cfd-online.com/Ope
http://www.cfd-online.com/OpenFOAM_D...hment_icon.gif ionFluxFvPatchScalarField.H
http://www.cfd-online.com/OpenFOAM_D...hment_icon.gif ionFluxFvPatchScalarField.C http://www.cfd-online.com/OpenFOAM_D...hment_icon.gif C1 http://www.cfd-online.com/OpenFOAM_D...hment_icon.gif blockMeshDict Dear Takuya, Thanks a lot for your suggestion. I tried as you have suggested but I get the following error... vishal@kiwi2:~/OpenFOAM/vishal-1.5/run/PNP_code_sending_to_jing/coupledFoam_modified/coupledFoam$ wmake SOURCE=coupledFoam.C ; g++ -m32 -Dlinux -DDP -Wall -Wno-strict-aliasing -Wextra -Wno-unused-parameter -Wold-style-cast -O3 -DNoRepository -ftemplate-depth-40 -I/home/vishal/OpenFOAM/OpenFOAM-1.5/src/finiteVolume/lnInclude -IlnInclude -I. -I/home/vishal/OpenFOAM/OpenFOAM-1.5/src/OpenFOAM/lnInclude -I/home/vishal/OpenFOAM/OpenFOAM-1.5/src/OSspecific/Unix/lnInclude -fPIC -pthread -c $SOURCE -o Make/linuxGccDPOpt/coupledFoam.o In file included from coupledFoam.C:69: C1Eqn.H: In function 'int main(int, char**)': C1Eqn.H:12: error: no match for 'operator*' in 'Foam::operator-(const Foam::UList<t>&) [with Type = double]() * Z1' /home/vishal/OpenFOAM/OpenFOAM-1.5/src/OpenFOAM/lnInclude/dimensionSet.H:266: note: candidates are: Foam::dimensionSet Foam::operator*(const Foam::dimensionSet&, const Foam::dimensionSet&) /home/vishal/OpenFOAM/OpenFOAM-1.5/src/OpenFOAM/lnInclude/dimensionedScalar.H:56: note: Foam::dimensionedScalar Foam::operator*(const Foam::dimensionedScalar&, Foam::scalar) /home/vishal/OpenFOAM/OpenFOAM-1.5/src/OpenFOAM/lnInclude/scalarField.H:81: note: Foam::tmp<foam::field<double> > Foam::operator*(const Foam::UList<double>&, const Foam::UList<double>&) /home/vishal/OpenFOAM/OpenFOAM-1.5/src/OpenFOAM/lnInclude/scalarField.H:81: note: Foam::tmp<foam::field<double> > Foam::operator*(const Foam::UList<double>&, const Foam::tmp<foam::field<double> >&) /home/vishal/OpenFOAM/OpenFOAM-1.5/src/OpenFOAM/lnInclude/scalarField.H:81: note: Foam::tmp<foam::field<double> > Foam::operator*(const Foam::tmp<foam::field<double> >&, const Foam::UList<double>&) /home/vishal/OpenFOAM/OpenFOAM-1.5/src/OpenFOAM/lnInclude/scalarField.H:81: note: Foam::tmp<foam::field<double> > Foam::operator*(const Foam::tmp<foam::field<double> >&, const Foam::tmp<foam::field<double> >&) /home/vishal/OpenFOAM/OpenFOAM-1.5/src/OpenFOAM/lnInclude/symmTensorField.H:70: note: Foam::tmp<foam::field<foam::vector<double> > > Foam::operator*(const Foam::UList<foam::symmtensor<double> >&) /home/vishal/OpenFOAM/OpenFOAM-1.5/src/OpenFOAM/lnInclude/symmTensorField.H:70: note: Foam::tmp<foam::field<foam::vector<double> > > Foam::operator*(const Foam::tmp<foam::field<foam::symmtensor<double> > >&) /home/vishal/OpenFOAM/OpenFOAM-1.5/src/OpenFOAM/lnInclude/tensorField.H:75: note: Foam::tmp<foam::field<foam::vector<double> > > Foam::operator*(const Foam::UList<foam::tensor<double> >&) /home/vishal/OpenFOAM/OpenFOAM-1.5/src/OpenFOAM/lnInclude/tensorField.H:75: note: Foam::tmp<foam::field<foam::vector<double> > > Foam::operator*(const Foam::tmp<foam::field<foam::tensor<double> > >&) /home/vishal/OpenFOAM/OpenFOAM-1.5/src/OpenFOAM/lnInclude/tensorField.H:76: note: Foam::tmp<foam::field<foam::tensor<double> > > Foam::operator*(const Foam::UList<foam::vector<double> >&) /home/vishal/OpenFOAM/OpenFOAM-1.5/src/OpenFOAM/lnInclude/tensorField.H:76: note: Foam::tmp<foam::field<foam::tensor<double> > > Foam::operator*(const Foam::tmp<foam::field<foam::vector<double> > >&) /home/vishal/OpenFOAM/OpenFOAM-1.5/src/OpenFOAM/lnInclude/dimensionedSymmTensor.H:68: note: Foam::dimensionedVector Foam::operator*(const Foam::dimensionedSymmTensor&) /home/vishal/OpenFOAM/OpenFOAM-1.5/src/OpenFOAM/lnInclude/dimensionedTensor.H:74: note: Foam::dimensionedVector Foam::operator*(const Foam::dimensionedTensor&) /home/vishal/OpenFOAM/OpenFOAM-1.5/src/OpenFOAM/lnInclude/dimensionedTensor.H:77: note: Foam::dimensionedTensor Foam::operator*(const Foam::dimensionedVector&) /home/vishal/OpenFOAM/OpenFOAM-1.5/src/finiteVolume/lnInclude/initContinuityErrs.H:38: warning: unused variable 'cumulativeContErr' make: *** [Make/linuxGccDPOpt/coupledFoam.o] Error 1 Further, I also tried to incorporate the boundary condition as given in the tutorials where they have incorporated the traction boundary condition or chtmultiregion tutorials... I am attaching those files too... but even there I get some errors like Reading field C1 keyword gradient is undefined in dictionary "/home/vishal/OpenFOAM/vishal-1.5/run/electroosmotic_transient_navier_stokes_jing_code/electroosmoticFoam_Steady/0/C1::upperwall" file: /home/vishal/OpenFOAM/vishal-1.5/run/electroosmotic_transient_navier_stokes_jing_code/electroosmoticFoam_Steady/0/C1::upperwall from line 37 to line 41. From function dictionary::lookupEntry(const word& keyword) const in file db/dictionary/dictionary.C at line 213. FOAM exiting Kindly give your suggestions with regard to this.... Kindly do the needful. Regards Vishal |
As to your solver complaining
As to your solver complaining about "keyword gradient is undefined in dictionary" in the entry upperwall, I do not see the boundaryField upperwall in your C1 file. Is this really the file in question? Anyway, as your ionNormalFlux BC is a derived type of fixedGradient you need a gradient entry as a placeholder. So the entry should look like
upperwall { type ionNormalFlux; gradient uniform ...; ... } . T |
Yep you need a gradient entry
Yep you need a gradient entry in upperwall as I wrote in my previous post.
T |
Dear Takuya,
Thanks for the
Dear Takuya,
Thanks for the quick reply. So now does it look something like this... upperwall { type ionNormalFlux; Phi WallElectricField; Zi Z1; Di D1; gradient uniform 0; } Thanks Regards Vishal |
Hi Vishal,
the error says t
Hi Vishal,
the error says that you search for an object (i.e. a volScalarField ) that is not yet instantiated. You have to be consistent in your creatFields.H and your class member "void Foam::ionFluxFvPatchScalarField::updateCoeffs()". Moreover in your case you have not a clear coding: you search for a volScalarField Di_ that is defined as a word if I checked right and Di_ is a private data that you can access easily without "lookupPatchField". Foam in this case searches for a Di_ volScalarField defined in the main code that I guess is not what you want. L. |
Hi Luca,
Thanks for the sug
Hi Luca,
Thanks for the suggestions.. Di_ is my transport property.. I have two variables D1 and D2 under my transport property... Do could throw some light as to what exactly I have to do to solve my problem.. I am looking to incorporate a boundary condition like grad(C1) = - Z1*C1*snGrad(Phi)/D1 = 0 grad(C2) = - Z2*C2*snGrad(Phi)/D2 = 0 Kindly suggest how I have to make changes in my files to solve my problem.. I am relatively new to OpenFOAM. Regards Vishal |
Hi Vishal,
I have the same problem. I want to set the same flux BC at the wall. Did you write this type of b.c. in OpenFoam. I am very new to OpenFoam. I have to write this b.c. to solve my problem. I'm ver pleased if you reply to me. Thank you very much... |
About zero flux boundary condition...
Hi everyone,
I am new to OpenFoam and i am doing my project on flow through channels. For my project i need to give zero flux boundary condition at walls (for variable T). And i applied zero flux in my governing equation and i got an expression like grad(T)=f(T,strainRate) where f=some function. I saw your previous posts. I think you had found solution. please guide me how to write this boundary condition. |
All times are GMT -4. The time now is 09:02. |