Using setBouzidiAdeDirichlet BC properly
OpenLB – Open Source Lattice Boltzmann Code › Forums › on Lattice Boltzmann Methods › General Topics › Using setBouzidiAdeDirichlet BC properly
- This topic has 5 replies, 2 voices, and was last updated 3 weeks, 1 day ago by talco.
-
AuthorPosts
-
January 21, 2025 at 2:03 am #9772talcoParticipant
Hi all,
I’m currently working on an example with curved walls for thermal BC
so I can’t use the setAdvectionDiffusionTemperatureBoundary BCAfter reading “Boundary conditions for thermal lattice Boltzmann equation method” by Like Li, and
related posts on the forum, I would like to use the setBouzidiAdeDirichlet BC instead,
but could not find any example on how to use it properlyfrom DoxyGen I know that the definition needs to be:
setBouzidiAdeDirichlet<T,DESCRIPTOR>(sLattice, superGeometry.getMaterialIndicator(material), phi_d, bulkMaterials);but I’m doing something wrong, since Im getting an error stating that:
no matching function for call to ‘setBouzidiAdeDirichlet<T, TDESCRIPTOR>(olb::SuperLattice<double, olb::descriptors::D3Q7<olb::descriptors::VELOCITY, olb::descriptors::TEMPERATURE> >&, olb::SuperGeometry<double, 3>&, int, olb::STLreader<double>&)’It will really help if somone can give a short example on how to properly define this BC ?
January 21, 2025 at 4:36 pm #9776shotaParticipantHi talco,
in the following a short example on how to use the bouzidiAdeBoundary:
void prepareADLattice( SuperLattice<T,RADDESCRIPTOR>& adLattice, AdeUnitConverter<T,RADDESCRIPTOR> const& adConverter, STLreader<T>& stlReader, SuperGeometry<T,3>& superGeometry) { auto bulkIndicator = superGeometry.getMaterialIndicator({1}); // Boundary conditions ... setBouzidiBoundary<T,RADDESCRIPTOR,BouzidiAdeDirichletPostProcessor>(adLattice, superGeometry, 5, stlReader); // Initial conditions AnalyticalConst3D<T,T> tempA( 10. ); Vector<T,3> velocityV; AnalyticalConst3D<T,T> uF(velocityV); ... adLattice.defineRho( superGeometry, 5, tempA); adLattice.iniEquilibrium(superGeometry, 5, tempA, uF); setBouzidiAdeDirichlet(adLattice, superGeometry, 5, tempA); adLattice.template setParameter<descriptors::OMEGA>(adConverter.getLatticeRelaxationFrequencyFromDiffusivity<RADDESCRIPTOR>(D)); adLattice.initialize(); }
I hope this helps.
BR
Shota- This reply was modified 3 weeks, 2 days ago by shota.
January 21, 2025 at 7:07 pm #9782talcoParticipantDear Shota,
It worked out great,
Thanks for helping, it’s really appreciatedJanuary 21, 2025 at 7:46 pm #9783talcoParticipantHi Shota,
Just noticed that following the change, multiprocessing doesn’t work
It only runs on a single core
Is this to be expected with the implementation of this BC ?January 22, 2025 at 12:56 pm #9791shotaParticipantDear talco,
no that should not be the case.
Could you provide more details on how it is not working, e.g. simulation crashes, or the like?January 22, 2025 at 6:19 pm #9792talcoParticipantDear Shota,
I did some checking and found that it was a system problem on my side
So it worked out great after all,
Thanks again for your help, -
AuthorPosts
- You must be logged in to reply to this topic.