From e913835a8a0b9eb94df230bd0589f54eab192020 Mon Sep 17 00:00:00 2001 From: James E McClure Date: Thu, 20 Sep 2018 16:51:53 -0400 Subject: [PATCH 1/3] w+n MF to TwoPhase analysis --- analysis/TwoPhase.cpp | 71 ++++++++++++++++++++++++++++++++++++++++--- analysis/TwoPhase.h | 7 +++++ 2 files changed, 73 insertions(+), 5 deletions(-) diff --git a/analysis/TwoPhase.cpp b/analysis/TwoPhase.cpp index 71ca8f08..a9299aff 100644 --- a/analysis/TwoPhase.cpp +++ b/analysis/TwoPhase.cpp @@ -97,6 +97,10 @@ TwoPhase::TwoPhase(std::shared_ptr dm): Vel_x.resize(Nx,Ny,Nz); Vel_x.fill(0); // Gradient of the phase indicator field Vel_y.resize(Nx,Ny,Nz); Vel_y.fill(0); Vel_z.resize(Nx,Ny,Nz); Vel_z.fill(0); + + wet_morph = Minkowski(Dm); + nonwet_morph = Minkowski(Dm); + //......................................... // Allocate cube storage space CubeValues.resize(2,2,2); @@ -150,7 +154,8 @@ TwoPhase::TwoPhase(std::shared_ptr dm): fprintf(TIMELOG,"Gnsxx Gnsyy Gnszz Gnsxy Gnsxz Gnsyz "); fprintf(TIMELOG,"trawn trJwn trRwn "); //trimmed curvature, fprintf(TIMELOG,"wwndnw wwnsdnwn Jwnwwndnw "); //kinematic quantities, - fprintf(TIMELOG,"Euler Kn Jn An\n"); //miknowski measures, + fprintf(TIMELOG,"Vw Jw Aw Xw "); //miknowski measures, + fprintf(TIMELOG,"Vn Jn An Xn\n"); //miknowski measures, } NWPLOG = fopen("components.NWP.tcat","a+"); @@ -179,8 +184,9 @@ TwoPhase::TwoPhase(std::shared_ptr dm): fprintf(TIMELOG,"Gnsxx Gnsyy Gnszz Gnsxy Gnsxz Gnsyz "); fprintf(TIMELOG,"trawn trJwn trRwn "); //trimmed curvature, fprintf(TIMELOG,"wwndnw wwnsdnwn Jwnwwndnw "); //kinematic quantities, - fprintf(TIMELOG,"Euler Kn Jn An\n"); //miknowski measures, - } + fprintf(TIMELOG,"Vw Jw Aw Xw "); //miknowski measures, + fprintf(TIMELOG,"Vn Jn An Xn\n"); //miknowski measures, + } } @@ -542,6 +548,56 @@ void TwoPhase::ComputeLocal() } } } + + Array phase_label(Nx,Ny,Nz); + Array phase_distance(Nx,Ny,Nz); + // Analyze the wetting fluid + for (k=0; kid[n] > 0)){ + // Solid phase + phase_label(i,j,k) = 0; + } + else if (SDn(i,j,k) < 0.0){ + // wetting phase + phase_label(i,j,k) = 1; + } + else { + // non-wetting phase + phase_label(i,j,k) = 0; + } + phase_distance(i,j,k) =2.0*double(phase_label(i,j,k))-1.0; + } + } + } + CalcDist(phase_distance,phase_label,*Dm); + wet_morph.ComputeScalar(phase_distance,0.f); + + // Analyze the wetting fluid + for (k=0; kid[n] > 0)){ + // Solid phase + phase_label(i,j,k) = 0; + } + else if (SDn(i,j,k) < 0.0){ + // wetting phase + phase_label(i,j,k) = 0; + } + else { + // non-wetting phase + phase_label(i,j,k) = 1; + } + phase_distance(i,j,k) =2.0*double(phase_label(i,j,k))-1.0; + } + } + } + CalcDist(phase_distance,phase_label,*Dm); + nonwet_morph.ComputeScalar(phase_distance,0.f); } @@ -1244,7 +1300,10 @@ void TwoPhase::PrintAll(int timestep) Gws_global(0),Gws_global(1),Gws_global(2),Gws_global(3),Gws_global(4),Gws_global(5)); // orientation of ws interface fprintf(TIMELOG,"%.5g %.5g %.5g ",trawn_global, trJwn_global, trRwn_global); // Trimmed curvature fprintf(TIMELOG,"%.5g %.5g %.5g ",wwndnw_global, wwnsdnwn_global, Jwnwwndnw_global); // kinematic quantities - fprintf(TIMELOG,"%.5g %.5g %.5g %.5g\n",euler_global, Kn_global, Jn_global, An_global); // minkowski measures + fprintf(TIMELOG,"%.5g %.5g %.5g %.5g ", wet_morph.Vi_global, wet_morph.Ji_global, wet_morph.Ai_global, wet_morph.Xi_global); // minkowski measures + fprintf(TIMELOG,"%.5g %.5g %.5g %.5g\n", nonwet_morph.Vi_global, nonwet_morph.Ji_global, nonwet_morph.Ai_global, nonwet_morph.Xi_global); // minkowski measures + + fflush(TIMELOG); } else{ @@ -1269,7 +1328,9 @@ void TwoPhase::PrintAll(int timestep) Gws(0),Gws(1),Gws(2),Gws(3),Gws(4),Gws(5)); // orientation of ws interface fprintf(TIMELOG,"%.5g %.5g %.5g ",trawn, trJwn, trRwn); // Trimmed curvature fprintf(TIMELOG,"%.5g %.5g %.5g ",wwndnw, wwnsdnwn, Jwnwwndnw); // kinematic quantities - fprintf(TIMELOG,"%.5g %.5g %.5g %.5g\n",euler, Kn, Jn, An); // minkowski measures + fprintf(TIMELOG,"%.5g %.5g %.5g %.5g ", wet_morph.Vi, wet_morph.Ji, wet_morph.Ai, wet_morph.Xi); // minkowski measures + fprintf(TIMELOG,"%.5g %.5g %.5g %.5g\n", nonwet_morph.Vi, nonwet_morph.Ji, nonwet_morph.Ai, nonwet_morph.Xi); // minkowski measures + fflush(TIMELOG); } diff --git a/analysis/TwoPhase.h b/analysis/TwoPhase.h index 5213246d..5e4889ba 100644 --- a/analysis/TwoPhase.h +++ b/analysis/TwoPhase.h @@ -8,6 +8,8 @@ #include "common/Domain.h" #include "common/Communication.h" #include "analysis/analysis.h" +#include "analysis/distance.h" +#include "analysis/Minkowski.h" #include "shared_ptr.h" #include "common/Utilities.h" @@ -141,6 +143,11 @@ public: DoubleArray Vel_x; // Velocity DoubleArray Vel_y; DoubleArray Vel_z; + DoubleArray PhaseDistance; + + Minkowski wet_morph; + Minkowski nonwet_morph; + // Container for averages; DoubleArray ComponentAverages_WP; DoubleArray ComponentAverages_NWP; From 521dfebc3f555622b8e0a044c7fc3f8118d440c6 Mon Sep 17 00:00:00 2001 From: James E McClure Date: Thu, 20 Sep 2018 16:55:22 -0400 Subject: [PATCH 2/3] null constructor for MF --- analysis/Minkowski.h | 1 + 1 file changed, 1 insertion(+) diff --git a/analysis/Minkowski.h b/analysis/Minkowski.h index 7527d62f..e2905174 100644 --- a/analysis/Minkowski.h +++ b/analysis/Minkowski.h @@ -46,6 +46,7 @@ public: double X(); //........................................................................... + Minkowski(){}; Minkowski(std::shared_ptr Dm); ~Minkowski(); void ComputeScalar(const DoubleArray& Field, const double isovalue); From e97a1de357d4bb35a48655a0e9bb96e97c7a5dfd Mon Sep 17 00:00:00 2001 From: James E McClure Date: Thu, 20 Sep 2018 18:46:55 -0400 Subject: [PATCH 3/3] fixed double free in MF --- analysis/Minkowski.cpp | 9 ++++++++- analysis/Minkowski.h | 2 +- sample_scripts/configure_desktop | 10 +++++----- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/analysis/Minkowski.cpp b/analysis/Minkowski.cpp index 650d30dc..9414e02c 100644 --- a/analysis/Minkowski.cpp +++ b/analysis/Minkowski.cpp @@ -17,6 +17,13 @@ #define PI 3.14159265359 // Constructor + +Minkowski::Minkowski(): + kstart(0), kfinish(0), isovalue(0), Volume(0), + LOGFILE(NULL), Dm(NULL), Vi(0), Vi_global(0) +{ +} + Minkowski::Minkowski(std::shared_ptr dm): kstart(0), kfinish(0), isovalue(0), Volume(0), LOGFILE(NULL), Dm(dm), Vi(0), Vi_global(0) @@ -39,7 +46,7 @@ Minkowski::Minkowski(std::shared_ptr dm): // Destructor Minkowski::~Minkowski() { - if ( LOGFILE!=NULL ) { fclose(LOGFILE); } + // if ( LOGFILE!=NULL ) { fclose(LOGFILE); } } double Minkowski::V(){ diff --git a/analysis/Minkowski.h b/analysis/Minkowski.h index e2905174..778e4ee0 100644 --- a/analysis/Minkowski.h +++ b/analysis/Minkowski.h @@ -46,7 +46,7 @@ public: double X(); //........................................................................... - Minkowski(){}; + Minkowski(); Minkowski(std::shared_ptr Dm); ~Minkowski(); void ComputeScalar(const DoubleArray& Field, const double isovalue); diff --git a/sample_scripts/configure_desktop b/sample_scripts/configure_desktop index d4e5fb5f..3a853517 100755 --- a/sample_scripts/configure_desktop +++ b/sample_scripts/configure_desktop @@ -6,7 +6,7 @@ cmake \ -D CMAKE_CXX_COMPILER:PATH=mpicxx \ -D CMAKE_C_FLAGS="-g " \ -D CMAKE_CXX_FLAGS="-g " \ - -D CXX_STD=11 \ + -D CMAKE_CXX_STANDARD=14 \ -D MPI_COMPILER:BOOL=TRUE \ -D MPIEXEC=mpirun \ -D USE_EXT_MPI_FOR_SERIAL_TESTS:BOOL=TRUE \ @@ -14,10 +14,10 @@ cmake \ -D CUDA_FLAGS="-arch sm_35" \ -D CUDA_HOST_COMPILER="/usr/bin/gcc" \ -D USE_NETCDF=0 \ - -D HDF5_DIRECTORY="/home/mcclurej/TPL/hdf5/" \ - -D HDF5_LIB="/home/mcclurej/TPL/hdf5/lib/libhdf5.a" \ - -D SILO_LIB="/home/mcclurej/TPL/silo/lib/libsiloh5.a" \ - -D SILO_DIRECTORY="/home/mcclurej/TPL/silo/" \ + -D HDF5_DIRECTORY="/opt/apps/hdf5/" \ + -D HDF5_LIB="/opt/apps/hdf5/lib/libhdf5.a" \ + -D SILO_LIB="/opt/apps/silo/lib/libsiloh5.a" \ + -D SILO_DIRECTORY="/opt/apps/silo/" \ -D NETCDF_DIRECTORY="/apps/netcdf/" \ -D USE_SILO=1 \ -D USE_CUDA=0 \