mirror of
https://github.com/NGSolve/netgen.git
synced 2024-12-24 21:10:33 +05:00
Merge remote-tracking branch 'origin/master' into memory_tracing
This commit is contained in:
commit
916eb09f1e
@ -418,12 +418,12 @@ endif(USE_CGNS)
|
|||||||
|
|
||||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/netgen_version.hpp ${CMAKE_CURRENT_BINARY_DIR}/netgen_config.hpp DESTINATION ${NG_INSTALL_DIR_INCLUDE}/include COMPONENT netgen_devel)
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/netgen_version.hpp ${CMAKE_CURRENT_BINARY_DIR}/netgen_config.hpp DESTINATION ${NG_INSTALL_DIR_INCLUDE}/include COMPONENT netgen_devel)
|
||||||
|
|
||||||
|
add_subdirectory(windows)
|
||||||
add_subdirectory(libsrc)
|
add_subdirectory(libsrc)
|
||||||
add_subdirectory(ng)
|
add_subdirectory(ng)
|
||||||
add_subdirectory(tutorials)
|
add_subdirectory(tutorials)
|
||||||
add_subdirectory(py_tutorials)
|
add_subdirectory(py_tutorials)
|
||||||
add_subdirectory(doc)
|
add_subdirectory(doc)
|
||||||
add_subdirectory(windows)
|
|
||||||
add_subdirectory(nglib)
|
add_subdirectory(nglib)
|
||||||
if (USE_PYTHON)
|
if (USE_PYTHON)
|
||||||
add_subdirectory(python)
|
add_subdirectory(python)
|
||||||
|
@ -411,6 +411,10 @@ namespace netgen
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BitArray fixed_points(np+1);
|
||||||
|
fixed_points.Clear();
|
||||||
|
BitArray moveboundarypoint(np+1);
|
||||||
|
moveboundarypoint.Clear();
|
||||||
for(SurfaceElementIndex si = 0; si < nse; si++)
|
for(SurfaceElementIndex si = 0; si < nse; si++)
|
||||||
{
|
{
|
||||||
// copy because surfaceels array will be resized!
|
// copy because surfaceels array will be resized!
|
||||||
@ -439,10 +443,29 @@ namespace netgen
|
|||||||
newel.SetIndex(si_map[sel.GetIndex()]);
|
newel.SetIndex(si_map[sel.GetIndex()]);
|
||||||
mesh.AddSurfaceElement(newel);
|
mesh.AddSurfaceElement(newel);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
bool has_moved = false;
|
||||||
|
for(auto p : sel.PNums())
|
||||||
|
if(mapto[p].Size())
|
||||||
|
has_moved = true;
|
||||||
|
if(has_moved)
|
||||||
|
for(auto p : sel.PNums())
|
||||||
|
{
|
||||||
|
if(!mapto[p].Size())
|
||||||
|
{
|
||||||
|
fixed_points.SetBit(p);
|
||||||
|
if(move_boundaries.Test(sel.GetIndex()))
|
||||||
|
moveboundarypoint.SetBit(p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if(move_boundaries.Test(sel.GetIndex()))
|
if(move_boundaries.Test(sel.GetIndex()))
|
||||||
for(auto& p : mesh[si].PNums())
|
{
|
||||||
if(mapto[p].Size())
|
for(auto& p : mesh[si].PNums())
|
||||||
p = mapto[p].Last();
|
if(mapto[p].Size())
|
||||||
|
p = mapto[p].Last();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for(SegmentIndex sei = 0; sei < nseg; sei++)
|
for(SegmentIndex sei = 0; sei < nseg; sei++)
|
||||||
@ -456,13 +479,85 @@ namespace netgen
|
|||||||
|
|
||||||
for(ElementIndex ei = 0; ei < ne; ei++)
|
for(ElementIndex ei = 0; ei < ne; ei++)
|
||||||
{
|
{
|
||||||
auto& el = mesh[ei];
|
auto el = mesh[ei];
|
||||||
if(!domains[el.GetIndex()])
|
ArrayMem<PointIndex,4> fixed;
|
||||||
|
ArrayMem<PointIndex,4> moved;
|
||||||
|
bool moved_bnd = false;
|
||||||
|
for(const auto& p : el.PNums())
|
||||||
{
|
{
|
||||||
for(auto& p : el.PNums())
|
if(fixed_points.Test(p))
|
||||||
|
fixed.Append(p);
|
||||||
|
if(mapto[p].Size())
|
||||||
|
moved.Append(p);
|
||||||
|
if(moveboundarypoint.Test(p))
|
||||||
|
moved_bnd = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool do_move, do_insert;
|
||||||
|
if(domains.Test(el.GetIndex()))
|
||||||
|
{
|
||||||
|
do_move = fixed.Size() && moved_bnd;
|
||||||
|
do_insert = do_move;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
do_move = !fixed.Size() || moved_bnd;
|
||||||
|
do_insert = !do_move;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(do_move)
|
||||||
|
{
|
||||||
|
for(auto& p : mesh[ei].PNums())
|
||||||
if(mapto[p].Size())
|
if(mapto[p].Size())
|
||||||
p = mapto[p].Last();
|
p = mapto[p].Last();
|
||||||
}
|
}
|
||||||
|
if(do_insert)
|
||||||
|
{
|
||||||
|
if(el.GetType() != TET)
|
||||||
|
throw Exception("Boundarylayer only implemented for tets outside yet!");
|
||||||
|
if(moved.Size() == 2)
|
||||||
|
{
|
||||||
|
if(fixed.Size() == 2)
|
||||||
|
throw Exception("This should not be possible!");
|
||||||
|
PointIndex p1 = moved[0];
|
||||||
|
PointIndex p2 = moved[1];
|
||||||
|
for(auto i : Range(blp.heights))
|
||||||
|
{
|
||||||
|
PointIndex p3 = mapto[moved[1]][i];
|
||||||
|
PointIndex p4 = mapto[moved[0]][i];
|
||||||
|
Element nel(PYRAMID);
|
||||||
|
nel[0] = p1;
|
||||||
|
nel[1] = p2;
|
||||||
|
nel[2] = p3;
|
||||||
|
nel[3] = p4;
|
||||||
|
nel[4] = el[0] + el[1] + el[2] + el[3] - fixed[0] - moved[0] - moved[1];
|
||||||
|
if(Cross(mesh[p2]-mesh[p1], mesh[p4]-mesh[p1]) * (mesh[nel[4]]-mesh[nel[1]]) > 0)
|
||||||
|
Swap(nel[1], nel[3]);
|
||||||
|
nel.SetIndex(el.GetIndex());
|
||||||
|
mesh.AddVolumeElement(nel);
|
||||||
|
p1 = p4;
|
||||||
|
p2 = p3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(moved.Size() == 1 && fixed.Size() == 1)
|
||||||
|
{
|
||||||
|
PointIndex p1 = moved[0];
|
||||||
|
for(auto i : Range(blp.heights))
|
||||||
|
{
|
||||||
|
Element nel = el;
|
||||||
|
PointIndex p2 = mapto[moved[0]][i];
|
||||||
|
for(auto& p : nel.PNums())
|
||||||
|
{
|
||||||
|
if(p == moved[0])
|
||||||
|
p = p1;
|
||||||
|
else if(p == fixed[0])
|
||||||
|
p = p2;
|
||||||
|
}
|
||||||
|
p1 = p2;
|
||||||
|
mesh.AddVolumeElement(nel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for(auto i : Range(1, fd_old+1))
|
for(auto i : Range(1, fd_old+1))
|
||||||
|
@ -4,13 +4,11 @@ else()
|
|||||||
add_definitions(-DINTERNAL_TCL_DEFAULT=0)
|
add_definitions(-DINTERNAL_TCL_DEFAULT=0)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(netgen_sources ngappinit.cpp onetcl.cpp)
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
# add icon to netgen executable
|
# add icon and version info to netgen executable
|
||||||
enable_language(RC)
|
enable_language(RC)
|
||||||
set(netgen_sources ${netgen_sources} ../windows/netgen.rc)
|
# Don't use ccache here due to incompatibility with the resource compiler
|
||||||
# Don't use ccache here due to incompatibility with the resource compiler
|
set_directory_properties(PROPERTIES RULE_LAUNCH_COMPILE "")
|
||||||
set_directory_properties(PROPERTIES RULE_LAUNCH_COMPILE "")
|
|
||||||
endif(WIN32)
|
endif(WIN32)
|
||||||
|
|
||||||
if(USE_GUI)
|
if(USE_GUI)
|
||||||
@ -23,6 +21,9 @@ if(USE_GUI)
|
|||||||
)
|
)
|
||||||
|
|
||||||
add_executable(netgen ngappinit.cpp)
|
add_executable(netgen ngappinit.cpp)
|
||||||
|
if(WIN32)
|
||||||
|
target_sources(netgen PRIVATE ../windows/netgen.rc)
|
||||||
|
endif(WIN32)
|
||||||
|
|
||||||
target_link_libraries( gui PUBLIC nglib )
|
target_link_libraries( gui PUBLIC nglib )
|
||||||
target_link_libraries( gui PRIVATE ${LIBTOGL} ${ZLIB_LIBRARIES} ${JPEG_LIBRARIES} ${FFMPEG_LIBRARIES} ${X11_Xmu_LIB} ${X11_X11_LIB} ${OCC_LIBRARIES} )
|
target_link_libraries( gui PRIVATE ${LIBTOGL} ${ZLIB_LIBRARIES} ${JPEG_LIBRARIES} ${FFMPEG_LIBRARIES} ${X11_Xmu_LIB} ${X11_X11_LIB} ${OCC_LIBRARIES} )
|
||||||
|
@ -92,3 +92,18 @@ def test_splitted_surface():
|
|||||||
mesh = ngs.Mesh(mesh)
|
mesh = ngs.Mesh(mesh)
|
||||||
assert ngs.Integrate(1, mesh) == pytest.approx(1)
|
assert ngs.Integrate(1, mesh) == pytest.approx(1)
|
||||||
assert ngs.Integrate(1, mesh.Materials("slot")) == pytest.approx(0.4)
|
assert ngs.Integrate(1, mesh.Materials("slot")) == pytest.approx(0.4)
|
||||||
|
|
||||||
|
@pytest.mark.parametrize("outside", [True, False])
|
||||||
|
def test_pyramids(outside):
|
||||||
|
geo = CSGeometry()
|
||||||
|
box = OrthoBrick((0,0,0), (1,1,1))
|
||||||
|
plate = OrthoBrick((0.3,0.3,0.4),(0.7,0.7,1)) * Plane((0,0,0.6), (0,0,1)).bc("top")
|
||||||
|
geo.Add((box-plate).mat("air"))
|
||||||
|
geo.Add(plate.mat("plate"))
|
||||||
|
mesh = geo.GenerateMesh()
|
||||||
|
mesh.BoundaryLayer("top", [0.01], "layer", "plate", outside=outside)
|
||||||
|
ngs = pytest.importorskip("ngsolve")
|
||||||
|
mesh = ngs.Mesh(mesh)
|
||||||
|
assert ngs.Integrate(1, mesh.Materials("plate")) == pytest.approx(0.032 if outside else 0.0304)
|
||||||
|
assert ngs.Integrate(1, mesh.Materials("layer")) == pytest.approx(0.0016)
|
||||||
|
assert ngs.Integrate(1, mesh.Materials("air")) == pytest.approx(0.9664 if outside else 0.968)
|
||||||
|
1
windows/.gitignore
vendored
Normal file
1
windows/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
netgen.rc
|
@ -0,0 +1,4 @@
|
|||||||
|
configure_file(
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/netgen.rc.template"
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/netgen.rc"
|
||||||
|
IMMEDIATE @ONLY)
|
@ -7,7 +7,7 @@
|
|||||||
//
|
//
|
||||||
// Generated from the TEXTINCLUDE 2 resource.
|
// Generated from the TEXTINCLUDE 2 resource.
|
||||||
//
|
//
|
||||||
#include "afxres.h"
|
#include <windows.h>
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
#undef APSTUDIO_READONLY_SYMBOLS
|
#undef APSTUDIO_READONLY_SYMBOLS
|
||||||
|
|
||||||
@ -35,8 +35,8 @@ LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
|
|||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 5,1,0,0
|
FILEVERSION @NETGEN_VERSION_MAJOR@,@NETGEN_VERSION_MINOR@,@NETGEN_VERSION_PATCH@,@NETGEN_VERSION_TWEAK@
|
||||||
PRODUCTVERSION 5,1,0,0
|
PRODUCTVERSION @NETGEN_VERSION_MAJOR@,@NETGEN_VERSION_MINOR@,@NETGEN_VERSION_PATCH@,@NETGEN_VERSION_TWEAK@
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x3L
|
FILEFLAGS 0x3L
|
||||||
@ -51,14 +51,14 @@ BEGIN
|
|||||||
BEGIN
|
BEGIN
|
||||||
BLOCK "040904b0"
|
BLOCK "040904b0"
|
||||||
BEGIN
|
BEGIN
|
||||||
VALUE "CompanyName", "Vienna UT"
|
VALUE "CompanyName", "TU Wien"
|
||||||
VALUE "FileDescription", "Netgen Meshing Software"
|
VALUE "FileDescription", "Netgen Meshing Software"
|
||||||
VALUE "FileVersion", "5.1-dev"
|
VALUE "FileVersion", "@NETGEN_VERSION@"
|
||||||
VALUE "InternalName", "Netgen"
|
VALUE "InternalName", "Netgen"
|
||||||
VALUE "LegalCopyright", "GNU Public License (GPL)"
|
VALUE "LegalCopyright", "GNU Lesser General Public License (LGPL)"
|
||||||
VALUE "OriginalFilename", "Netgen.exe"
|
VALUE "OriginalFilename", "Netgen.exe"
|
||||||
VALUE "ProductName", "Netgen"
|
VALUE "ProductName", "Netgen"
|
||||||
VALUE "ProductVersion", "5.1-dev"
|
VALUE "ProductVersion", "@NETGEN_VERSION@"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
Loading…
Reference in New Issue
Block a user