[Gmsh] Fwd: Max number of fields
Max Orok
morok at mevex.com
Fri Oct 26 18:01:32 CEST 2018
Hello Alessandro,
I tried to add fields to an empty model using the attached program.
I think your main problem would be with the time needed to insert in a map.
Here are some rough timings from adding the "Box" size field.
1 min - 50,000
4 min - 90,000
5 min - 100,000
6.5 min - 110,000
12 min - 150,000
For really large numbers (millions, etc.), you might need preallocation
instead of adding one-by-one.
I don't think this is possible with the current SDK.
The SDK C++ header's add function "only" has an int return value, so around
4 billion is nominally the front-end limit.
If the header was ever modified, I think the background meshes are tracked
with a pointer map (from BackgroundMeshManager.h):
static std::map<GEntity *, BGMBase *> data;
Using the max_size map method I got around 3.8e17.
The real number is probably much lower than that because of allocation
problems etc.
Sincerely,
Max
On Fri, Oct 26, 2018 at 6:01 AM, Alessandro Vicini <
alessandro.vicini at sitael.com> wrote:
>
>
> Hello Gmsh users, is there some limitation whatsoever to the number of
> fields that can be defined for mesh size control? I think I might need a
> “huge” number of fields for some automatic adaptive grid refinement…
>
>
>
> A.
>
>
>
>
>
> _______________________________________________
> gmsh mailing list
> gmsh at onelab.info
> http://onelab.info/mailman/listinfo/gmsh
>
>
--
Max Orok
Contractor
www.mevex.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://onelab.info/pipermail/gmsh/attachments/20181026/26564a54/attachment.html>
-------------- next part --------------
#include "gmsh.h"
#include <iostream>
int main() {
gmsh::initialize();
int i {0};
std::string fieldType {"Box"};
try {
while(true) {
gmsh::model::mesh::field::add(fieldType);
if (!(i % 10000)) {
std::cout << i << std::endl;
}
i++;
}
}
catch(...){
std::cout << "exception thrown" << std::endl;
}
std::cout << "max number of " << fieldType << " fields is " << i << std::endl;
gmsh::finalize();
}
More information about the gmsh
mailing list