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

Boundary condition implementation

Register Blogs Community New Posts Updated Threads Search

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   January 22, 2014, 11:06
Question Boundary condition implementation
  #1
Senior Member
 
louisgag's Avatar
 
Louis Gagnon
Join Date: Mar 2009
Location: Stuttgart, Germany
Posts: 338
Rep Power: 18
louisgag is on a distinguished road
Send a message via ICQ to louisgag
Deal all,

I am trying to implement a new boundary condition which combines slip in the tangential direction to a movingWallVelocity in the normal direction. The purpose is to be have a slip condition that works for a moving mesh.

So far, I've modified the existing fixedNormalSlip condition, but I'm stuck with an error of incompatible field types which I can't resolve. I tried to guess many solutions and have not found anything so far.

The problem is that once I change
Code:
Field<Type>::operator=(nHat*(nHat & fixedValue_ ));
to
Code:
Field<Type>::operator=(nHat*(nHat & (Up + n*(Un - (n & Up))) ));
compiling gives me the following error,

Code:
Making dependency list for source file fields/fvPatchFields/derived/fixedNormalSlip/fixedNormalSlipFvPatchFields.C
SOURCE=fields/fvPatchFields/derived/fixedNormalSlip/fixedNormalSlipFvPatchFields.C ;  g++ -m64 -Dlinux64 -DWM_DP -Wall -Wextra -Wno-unused-parameter -Wold-style-cast -Wnon-virtual-dtor -O3  -DNoRepository -ftemplate-depth-100 -I/home/louis/OpenFOAM/OpenFOAM-2.2.x/src/triSurface/lnInclude -I/home/louis/OpenFOAM/OpenFOAM-2.2.x/src/meshTools/lnInclude  -IlnInclude -I. -I/home/louis/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude -I/home/louis/OpenFOAM/OpenFOAM-2.2.x/src/OSspecific/POSIX/lnInclude   -fPIC -c $SOURCE -o Make/linux64GccDPOpt/fixedNormalSlipFvPatchFields.o
In file included from fields/fvPatchFields/derived/fixedNormalSlip/fixedNormalSlipFvPatchField.H:239:0,
                 from fields/fvPatchFields/derived/fixedNormalSlip/fixedNormalSlipFvPatchFields.H:29,
                 from fields/fvPatchFields/derived/fixedNormalSlip/fixedNormalSlipFvPatchFields.C:26:
fields/fvPatchFields/derived/fixedNormalSlip/fixedNormalSlipFvPatchField.C: In instantiation of ‘void Foam::fixedNormalSlipFvPatchField<Type>::evaluate(Foam::UPstream::commsTypes) [with Type = Foam::Tensor<double>]’:
lnInclude/fvPatchField.H:142:9:   recursively required from ‘static Foam::tmp<Foam::fvPatchField<Type> > Foam::fvPatchField<Type>::adddictionaryConstructorToTable<fvPatchFieldType>::New(const Foam::fvPatch&, const Foam::DimensionedField<Type, Foam::volMesh>&, const Foam::dictionary&) [with fvPatchFieldType = Foam::fixedNormalSlipFvPatchField<Foam::Tensor<double> >; Type = Foam::Tensor<double>]’
lnInclude/fvPatchField.H:142:9:   required from ‘Foam::fvPatchField<Type>::adddictionaryConstructorToTable<fvPatchFieldType>::adddictionaryConstructorToTable(const Foam::word&) [with fvPatchFieldType = Foam::fixedNormalSlipFvPatchField<Foam::Tensor<double> >; Type = Foam::Tensor<double>]’
fields/fvPatchFields/derived/fixedNormalSlip/fixedNormalSlipFvPatchFields.C:46:1:   required from here
fields/fvPatchFields/derived/fixedNormalSlip/fixedNormalSlipFvPatchField.C:186:17: error: no matching function for call to ‘Foam::fixedNormalSlipFvPatchField<Foam::Tensor<double> >::operator=(Foam::tmp<Foam::Field<Foam::Vector<double> > >)’
fields/fvPatchFields/derived/fixedNormalSlip/fixedNormalSlipFvPatchField.C:186:17: note: candidates are:
In file included from /home/louis/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.H:360:0,
                 from /home/louis/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/labelField.H:39,
                 from /home/louis/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/primitiveFields.H:37,
                 from /home/louis/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/pointField.H:36,
                 from /home/louis/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/edge.H:40,
                 from /home/louis/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/edgeList.H:32,
                 from /home/louis/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/PrimitivePatch.H:56,
                 from /home/louis/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/primitivePatch.H:35,
                 from /home/louis/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/polyPatch.H:43,
                 from lnInclude/fvPatch.H:39,
                 from lnInclude/fvPatchField.H:47,
                 from lnInclude/transformFvPatchField.H:41,
                 from fields/fvPatchFields/derived/fixedNormalSlip/fixedNormalSlipFvPatchField.H:60,
                 from fields/fvPatchFields/derived/fixedNormalSlip/fixedNormalSlipFvPatchFields.H:29,
                 from fields/fvPatchFields/derived/fixedNormalSlip/fixedNormalSlipFvPatchFields.C:26:
/home/louis/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:625:6: note: void Foam::Field<Type>::operator=(const Foam::Field<Type>&) [with Type = Foam::Tensor<double>]
/home/louis/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:625:6: note:   no known conversion for argument 1 from ‘Foam::tmp<Foam::Field<Foam::Vector<double> > >’ to ‘const Foam::Field<Foam::Tensor<double> >&’
/home/louis/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:646:6: note: void Foam::Field<Type>::operator=(const Foam::UList<T>&) [with Type = Foam::Tensor<double>]
/home/louis/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:646:6: note:   no known conversion for argument 1 from ‘Foam::tmp<Foam::Field<Foam::Vector<double> > >’ to ‘const Foam::UList<Foam::Tensor<double> >&’
/home/louis/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:639:6: note: void Foam::Field<Type>::operator=(const Foam::SubField<Type>&) [with Type = Foam::Tensor<double>]
/home/louis/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:639:6: note:   no known conversion for argument 1 from ‘Foam::tmp<Foam::Field<Foam::Vector<double> > >’ to ‘const Foam::SubField<Foam::Tensor<double> >&’
/home/louis/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:653:6: note: void Foam::Field<Type>::operator=(const Foam::tmp<Foam::Field<Type> >&) [with Type = Foam::Tensor<double>]
/home/louis/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:653:6: note:   no known conversion for argument 1 from ‘Foam::tmp<Foam::Field<Foam::Vector<double> > >’ to ‘const Foam::tmp<Foam::Field<Foam::Tensor<double> > >&’
/home/louis/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:670:6: note: void Foam::Field<Type>::operator=(const Type&) [with Type = Foam::Tensor<double>]
/home/louis/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.C:670:6: note:   no known conversion for argument 1 from ‘Foam::tmp<Foam::Field<Foam::Vector<double> > >’ to ‘const Foam::Tensor<double>&’
In file included from /home/louis/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/labelField.H:39:0,
                 from /home/louis/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/primitiveFields.H:37,
                 from /home/louis/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/pointField.H:36,
                 from /home/louis/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/edge.H:40,
                 from /home/louis/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/edgeList.H:32,
                 from /home/louis/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/PrimitivePatch.H:56,
                 from /home/louis/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/primitivePatch.H:35,
                 from /home/louis/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/polyPatch.H:43,
                 from lnInclude/fvPatch.H:39,
                 from lnInclude/fvPatchField.H:47,
                 from lnInclude/transformFvPatchField.H:41,
                 from fields/fvPatchFields/derived/fixedNormalSlip/fixedNormalSlipFvPatchField.H:60,
                 from fields/fvPatchFields/derived/fixedNormalSlip/fixedNormalSlipFvPatchFields.H:29,
                 from fields/fvPatchFields/derived/fixedNormalSlip/fixedNormalSlipFvPatchFields.C:26:
/home/louis/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.H:320:14: note: template<class Form, class Cmpt, int nCmpt> void Foam::Field::operator=(const Foam::VectorSpace<Form, Cmpt, nCmpt>&) [with Form = Form; Cmpt = Cmpt; int nCmpt = nCmpt; Type = Foam::Tensor<double>]
/home/louis/OpenFOAM/OpenFOAM-2.2.x/src/OpenFOAM/lnInclude/Field.H:320:14: note:   template argument deduction/substitution failed:
In file included from fields/fvPatchFields/derived/fixedNormalSlip/fixedNormalSlipFvPatchField.H:239:0,
                 from fields/fvPatchFields/derived/fixedNormalSlip/fixedNormalSlipFvPatchFields.H:29,
                 from fields/fvPatchFields/derived/fixedNormalSlip/fixedNormalSlipFvPatchFields.C:26:
fields/fvPatchFields/derived/fixedNormalSlip/fixedNormalSlipFvPatchField.C:186:17: note:   ‘Foam::tmp<Foam::Field<Foam::Vector<double> > >’ is not derived from ‘const Foam::VectorSpace<Form, Cmpt, nCmpt>’
make: *** [Make/linux64GccDPOpt/fixedNormalSlipFvPatchFields.o] Error 1
I'm hoping someone with a better knowledge of the code can hint me in the right direction.

I am attaching the full code for fixedNormalSlipFvPatchField.C and .H

Thanks,


-Louis
Attached Files
File Type: c fixedNormalSlipFvPatchField.C (6.0 KB, 8 views)
File Type: h fixedNormalSlipFvPatchField.H (7.0 KB, 2 views)
louisgag is offline   Reply With Quote

Old   January 23, 2014, 11:41
Default
  #2
Senior Member
 
louisgag's Avatar
 
Louis Gagnon
Join Date: Mar 2009
Location: Stuttgart, Germany
Posts: 338
Rep Power: 18
louisgag is on a distinguished road
Send a message via ICQ to louisgag
I found a workaround: start from movingWallVelocity boundary condition instead, this way the problem of Type is avoided and the condition can be applied only to the velocity field... Seems to work fine.
louisgag 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
Wind turbine simulation Saturn CFX 58 July 3, 2020 01:13
Time dependant pressure boundary condition yosuke1984 OpenFOAM Verification & Validation 3 May 6, 2015 06:16
Question about heat transfer coefficient setting for CFX Anna Tian CFX 1 June 16, 2013 06:28
Solid - Solid Boundary Condition Implementation Problem maa.sadeghi Main CFD Forum 0 March 27, 2013 04:04
External Radiation Boundary Condition (Two sided wall), Grid Interface CFD XUE FLUENT 0 July 8, 2010 06:49


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