From 2d407097dbb24422c4a02c3fb30d6d8b58dcdb73 Mon Sep 17 00:00:00 2001 From: "jakob.schratter" Date: Wed, 28 Jan 2026 08:52:12 +0100 Subject: [PATCH] fixed visualization --- mgrid_2/geom.cpp | 1 + solid-cpp/CMakeLists.txt | 36 +++++++++++++++----------- solid-cpp/ascii_read_meshvector.m | 43 +++++++++++++++++++++++++++++++ solid-cpp/ownSolver.cpp | 17 +++++++----- 4 files changed, 76 insertions(+), 21 deletions(-) create mode 100644 solid-cpp/ascii_read_meshvector.m diff --git a/mgrid_2/geom.cpp b/mgrid_2/geom.cpp index 793be7a..1f8cd3a 100644 --- a/mgrid_2/geom.cpp +++ b/mgrid_2/geom.cpp @@ -314,6 +314,7 @@ void Mesh::Visualize_matlab(vector const &v) const //const string exec_m("matlab -nosplash < visualize_results.m"); // Matlab //const string exec_m("octave --no-window-system --no-gui visualize_results.m"); // Octave //const string exec_m("flatpak run org.octave.Octave visualize_results.m"); // Octave (flatpak): desktop GH + const string exec_m("octave visualize_results.m"); const string fname("uv.txt"); diff --git a/solid-cpp/CMakeLists.txt b/solid-cpp/CMakeLists.txt index 487eb25..adbc6ca 100644 --- a/solid-cpp/CMakeLists.txt +++ b/solid-cpp/CMakeLists.txt @@ -2,20 +2,22 @@ CMAKE_MINIMUM_REQUIRED(VERSION 3.10.2) SET(TARGET "ownSolver") PROJECT(${TARGET} LANGUAGES CXX DESCRIPTION "ownSolver") -# The ownSolver requires c++17 -SET(CMAKE_CXX_STANDARD 17) -SET(CMAKE_CXX_EXTENSIONS OFF) -SET(CMAKE_CXX_STANDARD_REQUIRED ON) -file(GLOB MGRID_2_SOURCES - ../mgrid_2/binaryIO.cpp - ../mgrid_2/cuthill_mckee_ordering.cpp - ../mgrid_2/elements.cpp - ../mgrid_2/geom.cpp - ../mgrid_2/getmatrix.cpp - ../mgrid_2/jacsolve.cpp - ../mgrid_2/userset.cpp - ../mgrid_2/vdop.cpp) +add_library(mgrid_2_library + ../mgrid_2/binaryIO.cpp + ../mgrid_2/cuthill_mckee_ordering.cpp + ../mgrid_2/elements.cpp + ../mgrid_2/geom.cpp + ../mgrid_2/getmatrix.cpp + ../mgrid_2/jacsolve.cpp + ../mgrid_2/userset.cpp + ../mgrid_2/vdop.cpp +) + +target_include_directories(mgrid_2_library PUBLIC + ${CMAKE_CURRENT_LIST_DIR}/../mgrid_2 +) + FIND_PACKAGE(precice 3.0 REQUIRED CONFIG) @@ -23,8 +25,12 @@ FIND_PACKAGE(OpenMP REQUIRED) ADD_EXECUTABLE( ${TARGET} ${TARGET}.cpp - ${MGRID_2_SOURCES} ) +target_compile_features(mgrid_2_library PUBLIC cxx_std_17) +target_compile_features(${TARGET} PUBLIC cxx_std_17) + TARGET_LINK_LIBRARIES(${TARGET} PRIVATE precice::precice - OpenMP::OpenMP_CXX) + OpenMP::OpenMP_CXX + PRIVATE mgrid_2_library +) diff --git a/solid-cpp/ascii_read_meshvector.m b/solid-cpp/ascii_read_meshvector.m new file mode 100644 index 0000000..03119db --- /dev/null +++ b/solid-cpp/ascii_read_meshvector.m @@ -0,0 +1,43 @@ +function [ xc, ia, v ] = ascii_read_meshvector( fname ) +% +% Loads the 2D triangular mesh (coordinates, vertex connectivity) +% together with values on its vertices from an ASCII file. +% Matlab indexing is stored (starts with 1). +% +% The input file format is compatible +% with Mesh_2d_3_matlab:Write_ascii_matlab(..) in jacobi_oo_stl/geom.h +% +% +% IN: fname - filename +% OUT: xc - coordinates +% ia - mesh connectivity +% v - solution vector + +DELIMETER = ' '; + +fprintf('Read file %s\n',fname) + +% Read mesh constants +nn = dlmread(fname,DELIMETER,[0 0 0 3]); %% row_1, col_1, row_2, col_2 in C indexing!!! +nnode = nn(1); +ndim = nn(2); +nelem = nn(3); +nvert = nn(4); + +% Read coordinates +row_start = 0+1; +row_end = 0+nnode; +xc = dlmread(fname,DELIMETER,[row_start 0 row_end ndim-1]); + +% Read connectivity +row_start = row_end+1; +row_end = row_end+nelem; +ia = dlmread(fname,DELIMETER,[row_start 0 row_end nvert-1]); + +% Read solution +row_start = row_end+1; +row_end = row_end+nnode; +v = dlmread(fname,DELIMETER,[row_start 0 row_end 0]); +end + + diff --git a/solid-cpp/ownSolver.cpp b/solid-cpp/ownSolver.cpp index dda9596..819224d 100644 --- a/solid-cpp/ownSolver.cpp +++ b/solid-cpp/ownSolver.cpp @@ -1,8 +1,13 @@ -#include "../mgrid_2/geom.h" -#include "../mgrid_2/getmatrix.h" -#include "../mgrid_2/jacsolve.h" -#include "../mgrid_2/userset.h" -#include "../mgrid_2/vdop.h" +// #include "../mgrid_2/geom.h" +// #include "../mgrid_2/getmatrix.h" +// #include "../mgrid_2/jacsolve.h" +// #include "../mgrid_2/userset.h" +// #include "../mgrid_2/vdop.h" +#include "geom.h" +#include "getmatrix.h" +#include "jacsolve.h" +#include "userset.h" +#include "vdop.h" #include #include // timing @@ -166,7 +171,7 @@ int main(int argc, char **argv ) int nodeIndex = wetNodes[i]; uv[nodeIndex] = temperature[i] - 273.15; } - mesh_c.Visualize(uv); + //mesh_c.Visualize(uv); // ----- solve time step -----