|
[Sponsors] |
Different Results from codedMixed vs. codedFilxedValue |
|
LinkBack | Thread Tools | Search this Thread | Display Modes |
April 8, 2021, 01:52 |
Different Results from codedMixed vs. codedFilxedValue
|
#1 |
New Member
Join Date: Dec 2017
Posts: 5
Rep Power: 8 |
Dear friends,
I am working with the chtMultiregionFoam and trying to modify the compressible::turbulentTemperatureCoupledBaffleMix ed BC with additional terms it cannot handle. I am using coded boundary conditions for convenience. So I thought the first thing I should do is try to replicate the standard boundary condition using codedFixedValue (which is what I will eventually need) using the formulas explained by Bloerb in the post: Understanding temperature coupling BCs. I did this simply as follows: Code:
//got references to patches, variables, etc.. scalarField valueFraction = kNbr*deltaNbr/(k*delta + kNbr*deltaNbr); operator==(valueFraction*Tnbr + (1-valueFraction)*T); So I decided to take a step back and instead use codedMixed as follows: Code:
//got references to patches, variables, etc.. this->refValue() = Tnbr; this->refGrad() = 0.0; this->valueFraction() = kNbr*deltaNbr/(k*delta + kNbr*deltaNbr); I looked at the codes of codedMixed and codedFixedValue and their base classes to try to figure out what is causing the difference to no avail. What am I missing here? I would really appreciate any help! I'm using OF1912. Last edited by JSalami; April 8, 2021 at 23:24. |
|
April 9, 2021, 06:12 |
|
#2 |
New Member
Join Date: May 2019
Posts: 16
Rep Power: 7 |
Hi,
could you show, how you specified the variables used in the codedFixedValue BC? |
|
April 9, 2021, 23:04 |
|
#3 | |
New Member
Join Date: Dec 2017
Posts: 5
Rep Power: 8 |
Quote:
Here's the full code(I use this same way to get the variables for both fixed and mixed coded BCs: Code:
// Since we're inside initEvaluate/evaluate there might be processor // comms underway. Change the tag we use. int oldTag = UPstream::msgType(); UPstream::msgType() = oldTag+1; //get this patch's mesh const fvMesh& mesh = patch().boundaryMesh().mesh(); const label id = patch().index(); //get mesh variables const volScalarField& TMesh = mesh.lookupObject<volScalarField>("T"); const volScalarField& kappaMesh = mesh.lookupObject<volScalarField>("kappa"); //get patch internal varialbes and delta const scalarField T = TMesh.boundaryField().boundaryInternalField()[id]; const scalarField kappa = kappaMesh.boundaryField().boundaryInternalField()[id]; const scalarField delta = patch().deltaCoeffs(); // Get the coupling information from the mappedPatchBase const mappedPatchBase& mpp = refCast<const mappedPatchBase>(patch().patch()); const polyMesh& nbrMesh = mpp.sampleMesh(); const label nbrid = mpp.samplePolyPatch().index(); const fvPatch& nbrPatch = refCast<const fvMesh>(nbrMesh).boundary()[nbrid]; //get neighbor mesh variable const volScalarField& Tnbrmesh = nbrMesh.lookupObject<volScalarField>("T"); const volScalarField& kappanbrmesh = nbrMesh.lookupObject<volScalarField>("kappa"); scalarField Tnbr(Tnbrmesh.boundaryField().boundaryInternalField()[nbrid]); scalarField kappanbr(kappanbrmesh.boundaryField().boundaryInternalField()[nbrid]); scalarField deltanbr(nbrPatch.deltaCoeffs()); mpp.distribute(Tnbr); mpp.distribute(kappanbr); mpp.distribute(deltanbr); scalarField valueFraction = kappanbr*deltanbr/(kappa*delta + kappanbr*deltanbr); operator==(valueFraction*Tnbr + (1-valueFraction)*T); //// Restore tag UPstream::msgType() = oldTag; |
||
April 13, 2021, 06:02 |
|
#4 |
New Member
Join Date: May 2019
Posts: 16
Rep Power: 7 |
Hi,
thanks for providing your code. I copied it and tried a bit around with it in a simple test case. I also got different results compared to the turbulentTemperatureCoupledBaffleMixed BC, but lowering time step or thermal conductivity made the difference much smaller. In case of low time step and low thermal conductivity the difference nearly vanishes. Thus I don't think, there's a general mistake in your code, it's just more vulnerable to numerical errors. If there's no way you can use a mixed BC, you should probably pay attention to a low diffusion number in your solid regions. |
|
April 13, 2021, 22:24 |
|
#5 | |
New Member
Join Date: Dec 2017
Posts: 5
Rep Power: 8 |
Quote:
Unfortunately, the mixed boundary condition cannot help in this case since I am not really targeting temperature, but I'm using this for the "Magnetic Vector Potential", which requires additional terms besides the mixed boundary condition terms. Using temperature was a way for me to troubleshoot it. It is very strange that these two give very different results.. There must be some missing operation needed to re-produce the mixed BC solution. I will try to do some digging and let you know if I find something. |
||
Tags |
chtmultiregionfoam, codedfixedvalue, codedmixed, openfoam1912 |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Different results using Swak and CodedMixed | gionni | OpenFOAM Programming & Development | 2 | March 12, 2021 07:22 |
Wrong results with Mechanical Ansys mesher used with codedMixed value boundary condit | Nabeel Abed | OpenFOAM Pre-Processing | 0 | November 8, 2020 07:31 |
lid driven cavity varying results | yasmil | OpenFOAM Running, Solving & CFD | 2 | October 6, 2016 22:42 |
interFoam simulation yields inconsistent results for alpha1 surface | Ralinus | OpenFOAM Running, Solving & CFD | 8 | January 13, 2014 09:54 |
CFX cylinder or sphere benchmark results | Mel | CFX | 1 | August 8, 2005 19:47 |