openfoam issueshttps://develop.openfoam.com/Development/openfoam/-/issues2023-08-19T21:13:19Zhttps://develop.openfoam.com/Development/openfoam/-/issues/12Documentation/BUG: Volume point smoothing2023-08-19T21:13:19ZPrashant SonakarDocumentation/BUG: Volume point smoothingIs it possible to have nSmoothInternal > nSmoothPatch?
Documentation says it can't. But present version can allow this.
Please fix either of these! :)
@andy Is it possible to have nSmoothInternal > nSmoothPatch?
Documentation says it can't. But present version can allow this.
Please fix either of these! :)
@andy Functionality migration from internal development lineMattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comMattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comhttps://develop.openfoam.com/Development/openfoam/-/issues/22Discussion: patchProbes compatibility with fixedLocations2016-11-07T14:27:03ZPrashant SonakarDiscussion: patchProbes compatibility with fixedLocationsStandard probes FO has additional entry
// Optional: do not recalculate cells if mesh moves
fixedLocations false;
Is this also applicable for patchProbes?
@andy Standard probes FO has additional entry
// Optional: do not recalculate cells if mesh moves
fixedLocations false;
Is this also applicable for patchProbes?
@andy Functionality migration from internal development lineMattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comMattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comhttps://develop.openfoam.com/Development/openfoam/-/issues/23Discussion: FO output : blendingFactor2015-12-15T07:07:16ZPrashant SonakarDiscussion: FO output : blendingFactorIs it OK to have two output statements per iteration?
blendingFactor blendingFactor1 output:
scheme 1 cells : 106634
scheme 2 cells : 0
blended cells : 0
blendingFactor blendingFactor1 output:
writing fi...Is it OK to have two output statements per iteration?
blendingFactor blendingFactor1 output:
scheme 1 cells : 106634
scheme 2 cells : 0
blended cells : 0
blendingFactor blendingFactor1 output:
writing field blendingFactor1:U
/home/alex2/prashant/QA/UNIT_TESTS/FO-tests/compressible/motorBike/log.rhoPimpleFoam.blendingFactor
@Mattijs Functionality migration from internal development lineMattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comMattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comhttps://develop.openfoam.com/Development/openfoam/-/issues/73No repository for Dockerfile2020-10-20T15:23:29ZAdminNo repository for DockerfileThere should be one, that's linked to Docker Hub. I would like to make some improvements to the Docker ecosystem.There should be one, that's linked to Docker Hub. I would like to make some improvements to the Docker ecosystem.Pawan GhildiyalPawan Ghildiyalhttps://develop.openfoam.com/Development/openfoam/-/issues/195Need means of distinguishing between openfoam versions for user-coding2016-12-23T12:44:52ZMark OLESENNeed means of distinguishing between openfoam versions for user-codingWhen migrating user code between versions, there are some changes in OpenFOAM that may require alteration in the user code.
If this code exists in a codeStream, for example, it may not be possible to run the same case with slightly diff...When migrating user code between versions, there are some changes in OpenFOAM that may require alteration in the user code.
If this code exists in a codeStream, for example, it may not be possible to run the same case with slightly different OpenFOAM versions.
It is proposed to supply a pre-processor define to reflect the current base-level compatibility. This type of define could also be used to distinguish between OpenFOAM+ and other variants. This type of definition would also greatly simplify other third-party applications that may be built for various OpenFOAM versions.
For example,
#ifdef OPENFOAM_PLUS
...
#endif
The `OPENFOAM_PLUS` define would have a numerical value corresponding to the newly introduced version numbers (eg, `1606`) since these provide a simple, consistent, linear numbering without any additional effort.
#ifdef OPENFOAM_PLUS
#if (OPENFOAM_PLUS >= 1612)
...
#endif
#endif
This type of code naturally becomes quite cluttered and thus should only be used when strictly necessary.
It remains at the discretion of the developers to bump the number between release cycles, to indicate a newer functionality. Finer granularity than one month is not intended.
Version v1612Mark OLESENMark OLESENhttps://develop.openfoam.com/Development/openfoam/-/issues/322objectRegistry functionality2018-10-17T15:39:55ZMark OLESENobjectRegistry functionalityWhile attempting to use the subRegistry functionality to add extra information onto the mesh obr, I noticed some odd behaviour.
Delving into the code, it seems to be related to how the lookupObject works. It implicitly includes a upwards...While attempting to use the subRegistry functionality to add extra information onto the mesh obr, I noticed some odd behaviour.
Delving into the code, it seems to be related to how the lookupObject works. It implicitly includes a upwards recursion into the parent registry, only stopping when it hits Time. This means that adding subRegistry2("name=abc") to subRegistry1 will fail if the _parent_ of subRegistry1 already contained an objectRegistry with the name "abc". [Test-objectRegistry.C](/uploads/a900bca5989288cf211d5cefd70cefef/Test-objectRegistry.C)
I think we need to make this recursion an optional parameter (default = true for compatibility) to at least a few methods. It would also be a nice time to add this, for symmetry with dictionary lookupEntryPtr:
//- Lookup and return pointer to the object of the given Type,
// return nullptr if the object was not found or had the incorrect type
template<class Type>
const Type* lookupObjectPtr(const word& name, bool recursive=true) const;
//- Lookup and return the object of the given Type,
// return nullptr if the object was not found or had the incorrect type
template<class Type>
Type* lookupObjectPtr(const word& name, bool recursive=true) const;
Then use like this:
volScalarField* fieldPtr = mesh().lookupObjectPtr<volScalarField>("foo");
if (fieldPtr)
{
volScalarField& fld = *fieldPtr;
...
}
Instead of
if (mesh().foundObject<volScalarField>("foo"))
{
volScalarField& fld = const_cast<volScalarField&>(mesh().lookupObject<volScalarField>("foo"));
...
}
@andyVersion v1612Mark OLESENMark OLESENhttps://develop.openfoam.com/Development/openfoam/-/issues/352cleanup noFunctionObjects vs withFunctionObjects etc2018-08-09T10:21:58ZMark OLESENcleanup noFunctionObjects vs withFunctionObjects etcpotentialFoam is the only solver or application to use `-withFunctionObjects`, all others have an implicit `-noFunctionObjects`. This exception does make sense, but opens questions about the general handling of function-objects. There ar...potentialFoam is the only solver or application to use `-withFunctionObjects`, all others have an implicit `-noFunctionObjects`. This exception does make sense, but opens questions about the general handling of function-objects. There are a number of utilities (conversion, blockMesh, etc) without a time-loop and thus it doesn't make much sense to even provide a `-noFunctionObjects` option for them.
Propose adding a argList::noFunctionObjects() method - similar to the argList::noParallel() method - to remove the availability of the `-noFunctionObjects` option and adjust Time accordingly.
Currently:
functionObjects_
(
*this,
argList::validOptions.found("withFunctionObjects")
? args.optionFound("withFunctionObjects")
: !args.optionFound("noFunctionObjects")
)
Proposed:
functionObjects_
(
*this,
argList::validOptions.found("withFunctionObjects")
? args.optionFound("withFunctionObjects")
: argList::validOptions.found("noFunctionObjects")
? !args.optionFound("noFunctionObjects")
: false
)
For potentialFoam it also doesn't make sense to provide the `-noFunctionObjects` option at all. It adds clutter and will always be ignored anyhow.
@andy @Mattijs @PrashantVersion v1706Mark OLESENMark OLESENhttps://develop.openfoam.com/Development/openfoam/-/issues/429Support dictionary scoping as lvalue2017-12-18T23:19:00ZMark OLESENSupport dictionary scoping as lvalueCurrently can use `${:subdict.name}` as rvalue substitution - using the `:` to denote an absolute location, but it is not possible to use this type of notation as a lvalue. For example `:subdict.name` as a name, since `:` is a punctuatio...Currently can use `${:subdict.name}` as rvalue substitution - using the `:` to denote an absolute location, but it is not possible to use this type of notation as a lvalue. For example `:subdict.name` as a name, since `:` is a punctuation token. It might be possible to add additional quoting etc, but could also make sense just to allow another character for denoting an absolute location. I would propose allowing `^` as an absolute position anchor. This is a one-line change in dictionary::lookupScopedEntryPtr()
if (keyword[0] == ':' || keyword[0] == '^')
Once this is in place, I could rework the `removeEntry` function entry to handle scoped names and eliminate the current restriction:
> The removal only occurs in the current context.
> Removing sub-entries or parent entries is not supported.
@andy @Mattijsv1712Mark OLESENMark OLESENhttps://develop.openfoam.com/Development/openfoam/-/issues/444use of FOAM_INST_DIR is outdated2018-12-21T18:08:49ZMark OLESENuse of FOAM_INST_DIR is outdatedFrom previous versions, had FOAM_INST_DIR to avoid a manual edit of the bashrc,cshrc files.
With the newer logic (`BASH_SOURCE`, `lsof`) this will now be largely ignored, except as a hard-coded fallback value within bashrc,cshrc.
Propos...From previous versions, had FOAM_INST_DIR to avoid a manual edit of the bashrc,cshrc files.
With the newer logic (`BASH_SOURCE`, `lsof`) this will now be largely ignored, except as a hard-coded fallback value within bashrc,cshrc.
Propose renaming it in bashrc,cshrc (perhaps back to foamInstall), and removing it from foamExec, foamJob, wmakeScheduler*
Opinions? @andy @PrashantMark OLESENMark OLESENhttps://develop.openfoam.com/Development/openfoam/-/issues/595simplify/extend List, DynamicList2021-01-26T20:22:11ZMark OLESENsimplify/extend List, DynamicListInspired by some of Franjo's @Juretic work, I've started looking into how to incorporate the short list optimization into the standard DynamicList as well as other methods and possible optimizations. I'd like some feedback on some of the...Inspired by some of Franjo's @Juretic work, I've started looking into how to incorporate the short list optimization into the standard DynamicList as well as other methods and possible optimizations. I'd like some feedback on some of these ideas @andy @Mattijs
The static allocation size needs to be templated but the number of parameters for DynamicList is growing too much. My current thought is to remove the SizeInc,SizeMult,SizeDiv from templates and replace with a run-time sizing policy that we can combine with templated factory methods for some compile-time safety.
Eg,
template<class T, unsigned StaticSize = 16>
class DynamicList
{
...
//-
inline void setSizingPolicy(const sizingPolicy& policy);
};
In use this would mean something like this:
DynamicList<label> lst;
lst.setSizingPolicy(sizingPolicy::increment<10>());
lst.setSizingPolicy(sizingPolicy::factor<2>());
lst.setSizingPolicy(sizingPolicy::factor<3,2>());
lst.setSizingPolicy(sizingPolicy::general<10,3,2>());
This is still a long way from handling allocations with an allocator, but I think it is an improvement.
To accommodate some other routines, I've tentatively added in these methods:
UList
//- Find index of the first occurence of the value.
// Linear search.
// \return -1 if not found.
label find(const T& val, const label start=0) const;
//- True if the value if found in the list. Linear search.
inline bool found(const T& val, const label start=0) const;
//- Move element to the first position.
void moveFirst(const label i);
//- Move element to the last position.
void moveLast(const label i);
//- Swap with the first element. Fatal on an empty list.
void swapFirst(const label i);
//- Swap with the last element. Fatal on an empty list.
void swapLast(const label i);
DynamicList
//- Remove and return the last element. Fatal on an empty list.
inline T remove();
//- Remove and return the specified element. Fatal on an empty list.
// With fast=true (default), the removed element is replaced with
// the last one in the list.
// With fast=false, the elements are copied down in the list.
inline T remove(const label i, const bool fast=true);v1712Mark OLESENMark OLESENhttps://develop.openfoam.com/Development/openfoam/-/issues/655UOPstream does not zero padding (placeholder)2021-07-06T11:31:22ZMattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comUOPstream does not zero padding (placeholder)UOPstream enforces alignment of individual blocks. It does not fill the added padding with zero. This shows up when running e.g. valgrind.
- Not a bug since we also don't read the padded data.
- Avoid by using setSize(xxx, 0) instead of...UOPstream enforces alignment of individual blocks. It does not fill the added padding with zero. This shows up when running e.g. valgrind.
- Not a bug since we also don't read the padded data.
- Avoid by using setSize(xxx, 0) instead of setSize(xxx)Mark OLESENMark OLESENhttps://develop.openfoam.com/Development/openfoam/-/issues/698checkMesh does not report on processor patches2023-06-26T13:01:00ZMattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comcheckMesh does not report on processor patchesWe currently suppress info on processor patches. I would like to change this to only suppress -if running parallel- so we can use
checkMesh -case processorXXX
to find out number of points/edges on the processor patches.We currently suppress info on processor patches. I would like to change this to only suppress -if running parallel- so we can use
checkMesh -case processorXXX
to find out number of points/edges on the processor patches.Mattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comMattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comhttps://develop.openfoam.com/Development/openfoam/-/issues/755faceSet and cellSet also in topoSet, setSet2020-06-18T21:27:38ZMattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comfaceSet and cellSet also in topoSet, setSetIntegrate the checkMesh -writeSets functionality into topoSet, setSet. Especially the parallel reconstruction is very useful. (or have parallel set handling inside paraFoam)Integrate the checkMesh -writeSets functionality into topoSet, setSet. Especially the parallel reconstruction is very useful. (or have parallel set handling inside paraFoam)https://develop.openfoam.com/Development/openfoam/-/issues/784wmkdep runs out of open file descriptors2023-12-07T19:03:27ZMattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comwmkdep runs out of open file descriptorswmkdep.l runs out of open file descriptors, especially when using the -q option on wmake.wmkdep.l runs out of open file descriptors, especially when using the -q option on wmake.Mark OLESENMark OLESENhttps://develop.openfoam.com/Development/openfoam/-/issues/822Function1 could use faster searching in input is sorted2020-01-06T10:30:33ZPrashant SonakarFunction1 could use faster searching in input is sortedIf the table is sorted in increasing order we could use a binary search (e.g. ListOps::findLower) to speed up interpolation.If the table is sorted in increasing order we could use a binary search (e.g. ListOps::findLower) to speed up interpolation.https://develop.openfoam.com/Development/openfoam/-/issues/837PackedBoolList/bitSet has no ::set(const labelUList&)2018-06-07T05:57:54ZMattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comPackedBoolList/bitSet has no ::set(const labelUList&)This has been renamed to 'setMany'. Is there a problem with ::set? Is there a clear distinction with single element setting?This has been renamed to 'setMany'. Is there a problem with ::set? Is there a clear distinction with single element setting?Mark OLESENMark OLESENhttps://develop.openfoam.com/Development/openfoam/-/issues/860foamLog extract min, max, avg2021-07-06T12:57:16ZMark OLESENfoamLog extract min, max, avg- can currently only extract min value (EP 690), and foamLog is not sophisticated enough to handle arbitrary parsing.
- adjust AMI reporting as `min = ... max = ...` instead of `min/max/average = ...` for easier parsing.
@Prashant- can currently only extract min value (EP 690), and foamLog is not sophisticated enough to handle arbitrary parsing.
- adjust AMI reporting as `min = ... max = ...` instead of `min/max/average = ...` for easier parsing.
@Prashantv1806Mark OLESENMark OLESENhttps://develop.openfoam.com/Development/openfoam/-/issues/870distanceSurface is very picky2018-07-02T09:34:41ZMattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comdistanceSurface is very pickyIf
- the surface is open
- and the nearest point on the surface is on one of the open edges
the distanceSurface seems to pick up the 'wrong' normal. What is the normal on an open edge?
Workaround is to always make sure your surface is ...If
- the surface is open
- and the nearest point on the surface is on one of the open edges
the distanceSurface seems to pick up the 'wrong' normal. What is the normal on an open edge?
Workaround is to always make sure your surface is big enough so all mesh points project onto its interior.Mark OLESENMark OLESENhttps://develop.openfoam.com/Development/openfoam/-/issues/873setFields - discussion2024-01-11T07:04:26ZPrashant SonakarsetFields - discussiondefaultValues specified in the setFieldsDict are used to setup only internal field.
-if they should force any boundary field values to be updated?
(just a point for discussion)
@Mattijs @andy @mark @SergiodefaultValues specified in the setFieldsDict are used to setup only internal field.
-if they should force any boundary field values to be updated?
(just a point for discussion)
@Mattijs @andy @mark @Sergiohttps://develop.openfoam.com/Development/openfoam/-/issues/893Need stderr or equivalent alternative to Info2020-05-23T11:04:36ZMark OLESENNeed stderr or equivalent alternative to InfoIn some situations informative output gets in the way of desired output (eg, foamDictionary output - EP702).
We can avoid some of this output with `argList::noBanner()`. In the .org version they have replace this with a dedicated InfoHe...In some situations informative output gets in the way of desired output (eg, foamDictionary output - EP702).
We can avoid some of this output with `argList::noBanner()`. In the .org version they have replace this with a dedicated InfoHeader message stream, which handles the same problem. However, we may also to have a more general solution (cf. #881).
In similar cases it could also be helpful to have a Serr that only outputs on the master.
With dynamic code generation (eg `#calc`) the process generated copious quantities of output, all of which land on stdout.
Perhaps we need a version of `system()` with a `dup2()` to redirect.
@Mattijsv1812Mark OLESENMark OLESEN