Difference between revisions of "HowTo Adding a new boundary condition"
From OpenFOAMWiki
m |
|||
Line 1: | Line 1: | ||
− | + | First look at [contrib_groovyBC|groovyBC]]. If this isn't suitable, follow these steps below. | |
− | + | # Choose a boundary condition that is close to the one you want - we'll call it <tt>originalFvPatchField</tt>. | |
+ | # Copy the directory contents to anywhere (say <tt>run/myCode</tt>). | ||
+ | # Rename all the copied files to a new name (say <tt>customFvPatchField</tt>). | ||
+ | # Search & replace all text in all the new files old name for new name (<tt>originalFvPatchField</tt> replaced with <tt>customFvPatchField</tt>) | ||
+ | # Modify the code to suit your needs. | ||
+ | # Create the directory structure: <tt>myCode/Make</tt>, and create <tt>files</tt> and <tt>options</tt> in it. | ||
+ | # Put the relevant info into <tt>files</tt>: | ||
+ | ## Search for <originalFvPatchField</tt> in <tt>finiteVolume/Make/files</tt>. | ||
+ | ## Copy the relevant entry (entries) into your <tt>myCode/Make/files</tt> | ||
+ | ## Rename the entries as necessary - rename it with your <tt>customFvPatchField</tt> naming (if there's an <tt>s</tt> on the end, keep it there). | ||
+ | ## Tell it what the new library name will be. Use $(FOAM_USER_LIBBIN) instead of $(FOAM_LIBBIN), and add <tt>lib</tt> to the front of the new name. It should look something like: <tt>LIB = $(FOAM_USER_LIBBIN)/libcustomPatchField</tt> | ||
+ | # The <tt>options</tt> file should have <tt>EXE_INC</tt> (for any includes such as <tt>-I$(LIB_SRC)/finiteVolume/lnInclude</tt> for finiteVolume) and <tt>LIB_LIBS</tt> (for included libraries, such as <tt>-lfiniteVolume</tt> for finiteVolume). Look at other <tt>LIB_LIBS</tt> for examples. | ||
+ | # <tt>$wmake libso</tt> | ||
+ | # Add whatever new dictionary entries are needed to your initial conditions files, such as <tt>0/U</tt> and <tt>0/P</tt> files. | ||
+ | # Add <tt>libs ( "libmyTimeVaryingUniformFixedValueFvPatchField .so" "libOpenFOAM.so" )</tt> to <tt>controlDict</tt> | ||
+ | # It should run now. | ||
− | + | With reference to [http://www.cfd-online.com/Forums/openfoam/72434-custom-boundary-condition-openfoam.html]. | |
− | + | [[User:Marupio|Marupio]] 17:00, 26 February 2010 (UTC) | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + |
Revision as of 17:00, 26 February 2010
First look at [contrib_groovyBC|groovyBC]]. If this isn't suitable, follow these steps below.
- Choose a boundary condition that is close to the one you want - we'll call it originalFvPatchField.
- Copy the directory contents to anywhere (say run/myCode).
- Rename all the copied files to a new name (say customFvPatchField).
- Search & replace all text in all the new files old name for new name (originalFvPatchField replaced with customFvPatchField)
- Modify the code to suit your needs.
- Create the directory structure: myCode/Make, and create files and options in it.
- Put the relevant info into files:
- Search for <originalFvPatchField</tt> in finiteVolume/Make/files.
- Copy the relevant entry (entries) into your myCode/Make/files
- Rename the entries as necessary - rename it with your customFvPatchField naming (if there's an s on the end, keep it there).
- Tell it what the new library name will be. Use $(FOAM_USER_LIBBIN) instead of $(FOAM_LIBBIN), and add lib to the front of the new name. It should look something like: LIB = $(FOAM_USER_LIBBIN)/libcustomPatchField
- The options file should have EXE_INC (for any includes such as -I$(LIB_SRC)/finiteVolume/lnInclude for finiteVolume) and LIB_LIBS (for included libraries, such as -lfiniteVolume for finiteVolume). Look at other LIB_LIBS for examples.
- $wmake libso
- Add whatever new dictionary entries are needed to your initial conditions files, such as 0/U and 0/P files.
- Add libs ( "libmyTimeVaryingUniformFixedValueFvPatchField .so" "libOpenFOAM.so" ) to controlDict
- It should run now.
With reference to [1]. Marupio 17:00, 26 February 2010 (UTC)