Commit 969e79a4 authored by Ondrej Szekely's avatar Ondrej Szekely
Browse files

MEAN CURVATURE FLOW - EXACT ALL DIMENSIONS, SEMI-IMPLICIT ALL DIMENSIONS

parent c3441a5e
Loading
Loading
Loading
Loading
+2 −17
Original line number Diff line number Diff line
INSTALL( FILES tnlBackwardFiniteDifference.h
					tnlBackwardFiniteDifference_impl.h
					tnlExactFlowDiffusion.h
					tnlExactFlowDiffusion_impl.h
					tnlForwardFiniteDifference.h
					tnlForwardFiniteDifference_impl.h
					tnl-mean-curvature-flow.cpp
INSTALL( FILES tnl-mean-curvature-flow.cpp
					tnl-mean-curvature-flow.h
					tnlMeanCurvatureFlowDiffusion.h
					tnlMeanCurvatureFlowDiffusion_impl.h
					tnl-mean-curvature-flow-eoc.cpp
					tnl-mean-curvature-flow-eoc.h
					tnlMeanCurvatureFlowEocProblem.h
					tnlMeanCurvatureFlowEocProblem_impl.h
					tnlMeanCurvatureFlowEocRhs.h
					tnlMeanCurvatureFlowEocRhs_impl.h
					tnlMeanCurvatureFlowProblem.h
					tnlMeanCurvatureFlowProblem_impl.h
					tnlOperatorQ.h
					tnlOperatorQ_impl.h
					tnl-run-mean-curvature-flow
					tnl-run-mean-curvature-flow-eoc-test
					Makefile
         DESTINATION share/tnl-${tnlVersion}/examples/mean-curvature-flow )
+3 −3
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@ TARGET = mean-curvature-flow-eoc
INSTALL_DIR = ${HOME}/local
CXX = g++
CUDA_CXX = nvcc
CXX_FLAGS = -std=gnu++0x -I$(TNL_INCLUDE_DIR)  -g -O0
CXX_FLAGS = -std=gnu++0x -I$(TNL_INCLUDE_DIR)   -O0 -g
LD_FLAGS = -L$(TNL_INSTALL_DIR) -ltnl-dbg-0.1

SOURCES = tnl-mean-curvature-flow-eoc.cpp
@@ -23,11 +23,11 @@ dist: $(DIST)

install: $(TARGET)
	cp $(TARGET) $(INSTALL_DIR)/bin
	cp $(INSTALL_DIR)/share/tnl-0.1/examples/mean-curvature-flow-eoc
	cp $(INSTALL_DIR)/share/tnl-0.1/examples/mean-curvature-flow

uninstall: $(TARGET)
	rm -f $(INSTALL_DIR)/bin/$(TARGET) 
	rm -f $(INSTALL_DIR)/share/tnl-0.1/examples/mean-curvature-flow-eoc
	rm -f $(INSTALL_DIR)/share/tnl-0.1/examples/mean-curvature-flow

$(TARGET): $(OBJECTS)
	$(CXX) -o $(TARGET) $(OBJECTS) $(LD_FLAGS)
+13 −7
Original line number Diff line number Diff line
@@ -24,10 +24,14 @@
#include <functions/tnlTestFunction.h>
#include <operators/tnlAnalyticDirichletBoundaryConditions.h>
#include <operators/tnlAnalyticNeumannBoundaryConditions.h>
#include "tnlMeanCurvatureFlowEocRhs.h"
#include "tnlMeanCurvatureFlowEocProblem.h"
#include "tnlExactFlowDiffusion.h"
#include "tnlMeanCurvatureFlowDiffusion.h"
#include <problems/tnlMeanCurvatureFlowEocRhs.h>
#include <problems/tnlMeanCurvatureFlowEocProblem.h>
#include <operators/diffusion/tnlExactNonlinearDiffusion.h>
#include <operators/diffusion/tnlNonlinearDiffusion.h>
#include <operators/operator-Q/tnlOneSideDiffOperatorQForGraph.h>
#include <operators/diffusion/tnlExactNonlinearDiffusion.h>
#include <operators/diffusion/nonlinear-diffusion-operators/tnlOneSideDiffNonlinearOperator.h>
#include <operators/operator-Q/tnlExactOperatorQ.h>

//typedef tnlDefaultConfigTag BuildConfig;
typedef tnlFastBuildConfig BuildConfig;
@@ -63,12 +67,14 @@ class meanCurvatureFlowEocSetter
   static bool run( const tnlParameterContainer& parameters )
   {
      enum { Dimensions = MeshType::Dimensions };
      typedef tnlMeanCurvatureFlowDiffusion< MeshType, Real, Index > ApproximateOperator;
      typedef tnlExactFlowDiffusion< Dimensions > ExactOperator;
      typedef tnlOneSideDiffOperatorQForGraph<MeshType, Real, Index, 0> OperatorQ;
      typedef tnlOneSideDiffNonlinearOperator<MeshType, OperatorQ, Real, Index > NonlinearOperator;
      typedef tnlNonlinearDiffusion< MeshType, NonlinearOperator, Real, Index > ApproximateOperator;
      typedef tnlExactNonlinearDiffusion< tnlExactOperatorQ<Dimensions>, Dimensions > ExactOperator;
      typedef tnlTestFunction< MeshType::Dimensions, Real, Device > TestFunction;
      typedef tnlMeanCurvatureFlowEocRhs< ExactOperator, TestFunction > RightHandSide;
      typedef tnlStaticVector < MeshType::Dimensions, Real > Vertex;
      typedef tnlAnalyticNeumannBoundaryConditions< MeshType, TestFunction, Real, Index > BoundaryConditions;
      typedef tnlAnalyticDirichletBoundaryConditions< MeshType, TestFunction, Real, Index > BoundaryConditions;
      typedef tnlMeanCurvatureFlowEocProblem< MeshType, BoundaryConditions, RightHandSide, ApproximateOperator > Solver;
      SolverStarter solverStarter;
      return solverStarter.template run< Solver >( parameters );
+7 −5
Original line number Diff line number Diff line
@@ -27,10 +27,10 @@
#include <operators/tnlAnalyticNeumannBoundaryConditions.h>
#include <operators/tnlNeumannBoundaryConditions.h>
#include <functions/tnlConstantFunction.h>
#include <problems/tnlHeatEquationProblem.h>

#include "tnlMeanCurvatureFlowProblem.h"
#include "tnlMeanCurvatureFlowDiffusion.h"
#include <problems/tnlMeanCurvatureFlowProblem.h>
#include <operators/diffusion/tnlNonlinearDiffusion.h>
#include <operators/operator-Q/tnlOneSideDiffOperatorQForGraph.h>
#include <operators/diffusion/nonlinear-diffusion-operators/tnlOneSideDiffNonlinearOperator.h>

//typedef tnlDefaultConfigTag BuildConfig;
typedef tnlFastBuildConfig BuildConfig;
@@ -71,7 +71,9 @@ class meanCurvatureFlowSetter
   static bool run( const tnlParameterContainer& parameters )
   {
      enum { Dimensions = MeshType::Dimensions };
      typedef tnlMeanCurvatureFlowDiffusion< MeshType, Real, Index > ApproximateOperator;
      typedef tnlOneSideDiffOperatorQForGraph<MeshType, Real, Index, 0> OperatorQ;
      typedef tnlOneSideDiffNonlinearOperator<MeshType, OperatorQ, Real, Index > NonlinearOperator;
      typedef tnlNonlinearDiffusion< MeshType, NonlinearOperator, Real, Index > ApproximateOperator;
      typedef tnlConstantFunction< Dimensions, Real > RightHandSide;
      typedef tnlStaticVector < MeshType::Dimensions, Real > Vertex;

+6 −6
Original line number Diff line number Diff line
@@ -2,10 +2,10 @@

device="host"
dimensions="2D"
sizes2D="16 32 64"
sizes2D="16 32"
testFunctions="sin-bumps"
snapshotPeriod=0.1
finalTime=1.0
finalTime=0.3
timeDependence="cosine"
solverName="mean-curvature-flow-eoc"
#solverName="gdb --args tnl-heat-equation-eoc-test-dbg"
@@ -83,12 +83,12 @@ solve()
                 --mesh mesh.tnl \
                 --initial-condition exact-u-00000.tnl \
                 --time-discretisation ${timeDiscretisation} \
                 --time-step 10 \
                 --time-step 1 \
                 --time-step-order 2 \
                 --discrete-solver ${discreteSolver} \
                 --merson-adaptivity 1.0e-7 \
                 --sor-omega 1.95 \
                 --gmres-restarting 10 \
                 --gmres-restarting 20 \
                 --min-iterations 20 \
                 --convergence-residue 1.0e-12 \
                 --test-function ${testFunction}\
@@ -168,8 +168,8 @@ runTest()
               echo "========================================================================="
               echo "===                   STARTING THE SOLVER                             ==="
               echo "========================================================================="
               solve explicit merson
               #solve semi-implicit gmres
               #solve explicit merson
               solve semi-implicit gmres
               mv computation-in-progress computation-done
            fi            
            echo "========================================================================="
Loading