# Boundary Function

 Register Blogs Members List Search Today's Posts Mark Forums Read

 January 10, 2007, 01:12 Hi, I've also been struggling #1 Super Moderator   Takuya OSHIMA Join Date: Mar 2009 Location: Niigata City, Japan Posts: 518 Blog Entries: 1 Rep Power: 13 Hi, I've also been struggling these days in writing my first solver for basic linear acoustic wave propagation problems using OpenFOAM and just now I could make its very preliminary version to work. Since this is an acoustic solver this includes so-called normal incidence acoustic impedance b. c. which is represented in exactly the same form as yours, p = z * Un where z is a scalar constant called normal incidence acoustic impedance and Un is outward normal component of U to the patch. I post the essential parts of the boundary condition code and boundary condition dictionaries in hope that they might be of some help to your problem and that someone points me out if I'm doing something wrong. While the code updates U by U = p / z * n and sets p to zeroGradient, you can do the reverse i. e. p = z * (U  n) and setting U to zeroGradient. But actually I can't understand why setting the other variable to zeroGradient works. I'm very interested if someone kindly offer any suggestions. Thanks, Takuya normalIncidenceAcousticImpedanceFvPatchVectorField .C:
void normalIncidenceAcousticImpedanceFvPatchVectorField  ::updateCoeffs()  {      if (updated())      {          return;      }        const fvPatchField& pp =          lookupPatchField("p");      const vectorField& n = patch().nf();      operator==(pp / z_ * n);        fixedValueFvPatchVectorField::updateCoeffs();  }
normalIncidenceAcousticImpedanceFvPatchVectorField .H:
class normalIncidenceAcousticImpedanceFvPatchVectorField  : public fixedValueFvPatchVectorField  {          // Normal incidence acoustic impedance          scalarField z_;  public:      TypeName("normalIncidenceAcousticImpedance");      ......  };
0/U:
boundaryField  {      outlet      {          type            normalIncidenceAcousticImpedance;          z               uniform 414.16;          value           uniform (0 0 0);      }  }
0/p:
boundaryField  {      outlet      {          type            zeroGradient;      }  }

 January 11, 2007, 11:11 Hi, thank you very much. Mo #2 New Member   Jan Marburger Join Date: Mar 2009 Posts: 2 Rep Power: 0 Hi, thank you very much. More or less exactly what I need Unfortunately, I get a linking error for the TypeName(".."); command. Do I have to include / define something special? The compling works fine. Do you have any reference for programming own boundary conditions? I don't really understand the structure for that in OpenFOAM and the implemented boundary codes (fixedValue etc.) are a bit too confusing to me ;) Thanks, Jan

 January 12, 2007, 04:26 Hi, It's because I posted onl #3 Super Moderator   Takuya OSHIMA Join Date: Mar 2009 Location: Niigata City, Japan Posts: 518 Blog Entries: 1 Rep Power: 13 Hi, It's because I posted only essential parts, not all of the code thinking that posting all the code might be too lengthy. Here's the full code of the b.c. It also includes the reverse updating (p = z * (U & n)). Usage is as I mentioned above (specify "uniform 0" instead of "uniform (0 0 0)" if you want to update p). normalIncidenceAcousticImpedance-20070112.tar.gz All and only references I used for the b. c. programming were codes under \$FOAM_SRC/finiteVolume/fields/fvPatchFields/derivedFvPatchFields , especially the pressureInletVelocity and the totalPressure codes. So please point me out if anyone notice I'm doing something wrong. And again, I'll appreciate if anyone have suggestions why setting the other variable to zeroGradient works... Thanks, Takuya

 January 12, 2007, 05:30 Ok, I misunderstood a part of #4 New Member   Jan Marburger Join Date: Mar 2009 Posts: 2 Rep Power: 0 Ok, I misunderstood a part of the C structure. Now, with your example, it's much clearer to me. Thank you very much. Too your question regarding the zeroGradient: I'm not sure, but maybe it is a reasonable b.c. since it is the "natural" b.c. for your problem in solving-theory ( -> weak formulation of the equations) Greetings, Jan

 January 15, 2007, 00:00 Natural b.c.: thanks - I've mi #5 Super Moderator   Takuya OSHIMA Join Date: Mar 2009 Location: Niigata City, Japan Posts: 518 Blog Entries: 1 Rep Power: 13 Natural b.c.: thanks - I've missed that point of view because I've been so occupied in programming. In finite difference discretization I've had good results by coupling U = p / z * n and the momentum equation [1], but in finite volumes (weak formulation) that kind of formulation seems too difficult for me. Anyway the code above is giving "reasonable" results so I'll go this way for the time being. [1]: C. K. W. Tam et al.: Time-domain impedance boundary conditions for computational aeroacoustics, AIAA Journal 34-5, pp. 917-923, 1996. Thanks, Takuya

 Thread Tools Display Modes Linear Mode

 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 OffTrackbacks are On Pingbacks are On Refbacks are On Forum Rules

 Similar Threads Thread Thread Starter Forum Replies Last Post coompressor OpenFOAM Running, Solving & CFD 9 February 12, 2009 11:22 coompressor OpenFOAM Running, Solving & CFD 0 January 13, 2009 04:50 Winston Main CFD Forum 0 July 18, 2005 00:45 chnrdu OpenFOAM Running, Solving & CFD 2 June 17, 2005 04:18 Chris FLUENT 4 March 28, 2003 16:38

All times are GMT -4. The time now is 05:50.