MCPcopy Create free account
hub / github.com/NGSolve/ngsolve / NGS_DLL_HEADER ExportNgcomp

Function NGS_DLL_HEADER ExportNgcomp

comp/python_comp.cpp:188–4928  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

186void ExportReadAnsys (py::module &m);
187
188void NGS_DLL_HEADER ExportNgcomp(py::module &m)
189{
190
191 ExportNgcompMesh(m);
192 ExportReadAnsys(m);
193 //////////////////////////////////////////////////////////////////////////////////////////
194
195 static size_t global_heapsize =
196 (sizeof(size_t) == 8) ? 100000000 : 10000000;
197 // static LocalHeap glh(global_heapsize, "python-comp lh", true);
198
199 // the global variable glh should be replaced by LocalHeapProvider
200 static LocalHeap glh(10*1000*1000, "python-comp lh", true);
201
202 class LocalHeapProvider
203 {
204 Array<LocalHeap*> heaps;
205 std::mutex m;
206
207 class BorrowedLocalHeap
208 {
209 LocalHeap * lh;
210 LocalHeapProvider * provider;
211 public:
212 BorrowedLocalHeap (LocalHeap * alh, LocalHeapProvider * aprovider)
213 : lh(alh), provider(aprovider) { }
214
215 ~BorrowedLocalHeap()
216 {
217 // cout << "returns lh to provider" << endl;
218 provider -> ReturnLH(lh);
219 }
220
221 LocalHeap & LH() { return *lh; }
222 operator LocalHeap& () { return *lh; }
223 };
224
225
226 public:
227 BorrowedLocalHeap GetLH()
228 {
229 std::lock_guard lock(m);
230 if (heaps.Size())
231 {
232 auto tmp = heaps.Last();
233 heaps.SetSize(heaps.Size()-1);
234 // cout << "reuse existing lh" << endl;
235 return BorrowedLocalHeap (tmp, this);
236 }
237
238 // cout << "create new lh" << endl;
239 return BorrowedLocalHeap(new LocalHeap(global_heapsize, "python-comp lh", true), this);
240 }
241
242 void ReturnLH (LocalHeap * lh)
243 {
244 std::lock_guard lock(m);
245 heaps.Append (lh);

Callers

nothing calls this directly

Calls 15

ExportNgcompMeshFunction · 0.85
ExportReadAnsysFunction · 0.85
docu_stringFunction · 0.85
argFunction · 0.85
MakePyListFunction · 0.85
DummyArgumentClass · 0.85
connect_auto_updateFunction · 0.85
ToStringFunction · 0.85
MakePyTupleFunction · 0.85
MakeProxyFunctionFunction · 0.85
Transfer2TPMeshFunction · 0.85

Tested by

no test coverage detected