void Foam::codedFixedValueFvPatchField<Type>::prepare ( dynamicCode& dynCode, const dynamicCodeContext& context ) const { // take no chances - typeName must be identical to redirectType_ dynCode.setFilterVariable("typeName", redirectType_); // set TemplateType and FieldType filter variables // (for fvPatchField) setFieldTemplates(dynCode); // compile filtered C template dynCode.addCompileFile(codeTemplateC); // copy filtered H template dynCode.addCopyFile(codeTemplateH); // debugging: make BC verbose // dynCode.setFilterVariable("verbose", "true"); // Info<<"compile " << redirectType_ << " sha1: " // << context.sha1() << endl; // define Make/options dynCode.setMakeOptions ( "EXE_INC = -g \\\n" "-I$(LIB_SRC)/finiteVolume/lnInclude \\\n" + context.options() + "\n\nLIB_LIBS = \\\n" + " -lOpenFOAM \\\n" + " -lfiniteVolume \\\n" + context.libs() ); }
void Foam::codedFixedValueFvPatchField<Type>::createLibrary ( dynamicCode& dynCode, const dynamicCodeContext& context ) const { bool create = Pstream::master(); if (create) { // Write files for new library if (!dynCode.upToDate(context)) { // filter with this context dynCode.reset(context); // take no chances - typeName must be identical to redirectType_ dynCode.setFilterVariable("typeName", redirectType_); // set TemplateType and FieldType filter variables // (for fvPatchField) setFieldTemplates(dynCode); // compile filtered C template dynCode.addCompileFile(codeTemplateC); // copy filtered H template dynCode.addCopyFile(codeTemplateH); // debugging: make BC verbose // dynCode.setFilterVariable("verbose", "true"); // Info<<"compile " << redirectType_ << " sha1: " // << context.sha1() << endl; // define Make/options dynCode.setMakeOptions ( "EXE_INC = -g \\\n" "-I$(LIB_SRC)/finiteVolume/lnInclude \\\n" + context.options() + "\n\nLIB_LIBS = \\\n" + " -lOpenFOAM \\\n" + " -lfiniteVolume \\\n" + context.libs() ); if (!dynCode.copyOrCreateFiles(true)) { FatalIOErrorIn ( "codedFixedValueFvPatchField<Type>::createLibrary(..)", context.dict() ) << "Failed writing files for" << nl << dynCode.libRelPath() << nl << exit(FatalIOError); } } if (!dynCode.wmakeLibso()) { FatalIOErrorIn ( "codedFixedValueFvPatchField<Type>::createLibrary(..)", context.dict() ) << "Failed wmake " << dynCode.libRelPath() << nl << exit(FatalIOError); } } // all processes must wait for compile to finish reduce(create, orOp<bool>()); }