parflow / parflow

Parflow is an open-source parallel watershed flow model.
http://parflow.org
Other
163 stars 98 forks source link

Saturation: Segmentation Fault when freeing memory at the end of simulation #236

Closed xy124 closed 4 years ago

xy124 commented 4 years ago

Seems quite similar to #87 . I get the Following stacktrace:

Core was generated by `/p/home/jusers/friedemann1/juwels/tmp/parflow/build/install/bin/parflow rurlaf'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x000000000042fb72 in FreeSubvector (subvector=0x0) at /p/home/jusers/friedemann1/juwels/tmp/parflow/pfsimulator/parflow_lib/vector.c:634
634       if (subvector->allocated)
(gdb) bt full
#0  0x000000000042fb72 in FreeSubvector (subvector=0x0) at /p/home/jusers/friedemann1/juwels/tmp/parflow/pfsimulator/parflow_lib/vector.c:634
No locals.
#1  0x000000000042fc3b in FreeTempVector (vector=0x23077f0) at /p/home/jusers/friedemann1/juwels/tmp/parflow/pfsimulator/parflow_lib/vector.c:651
        i = 1
#2  0x000000000042fcc2 in FreeVector (vector=0x23077f0) at /p/home/jusers/friedemann1/juwels/tmp/parflow/pfsimulator/parflow_lib/vector.c:714
No locals.
#3  0x000000000057a5e8 in SaturationFreePublicXtra () at /p/home/jusers/friedemann1/juwels/tmp/parflow/pfsimulator/parflow_lib/problem_saturation.c:1102
        this_module = 0x1b2a230
        public_xtra = 0x1b2a2c0
        dummy0 = 0x4089c0 <_start>
        dummy1 = 0x1b2a390
        dummy2 = 0x0
        dummy3 = 0x0
        dummy4 = 0x40a84f <NA_FreeNameArray+190>
        dummy5 = 0x0
        num_regions = 0
        ir = 0
#4  0x00000000004d099a in FreeProblem (problem=0x1b27cc0, solver=2) at /p/home/jusers/friedemann1/juwels/tmp/parflow/pfsimulator/parflow_lib/problem.c:367
No locals.
#5  0x0000000000427f53 in SolverRichardsFreePublicXtra () at /p/home/jusers/friedemann1/juwels/tmp/parflow/pfsimulator/parflow_lib/solver_richards.c:5870
        this_module = 0x1b27300
        public_xtra = 0x1b27a00
#6  0x000000000040b187 in FreeSolver () at /p/home/jusers/friedemann1/juwels/tmp/parflow/pfsimulator/parflow_lib/solver.c:162
No locals.
#7  0x000000000040acd7 in Solve () at /p/home/jusers/friedemann1/juwels/tmp/parflow/pfsimulator/parflow_lib/solver.c:63
        solver = 0x1b2d9e0
#8  0x0000000000408db3 in main (argc=2, argv=0x7ffdb1c63fe8) at /p/home/jusers/friedemann1/juwels/tmp/parflow/pfsimulator/parflow_exe/main.c:314
        is_from_restart = 0
        restore_num = 0
        c = -1
        input_name = 0x7ffdb1c660dc "test"
        restart_read_dirname = 0x0
        non_opt_argc = 1
        file = 0x0
        log_file = 0x0
        wall_clock_time = 5161

The tcl file looks like this:


lappend auto_path $env(PARFLOW_DIR)/bin
package require parflow
namespace import Parflow::*

pfset FileVersion 4

pfset Process.Topology.P 6
pfset Process.Topology.Q 8
pfset Process.Topology.R 1
#
# try with 96 for memory issues? (getting segfault during solver...)
pfset Process.Topology.P 8
pfset Process.Topology.Q 12

pfset ComputationalGrid.Lower.X          0.0
pfset ComputationalGrid.Lower.Y          0.0
pfset ComputationalGrid.Lower.Z          0.0

pfset ComputationalGrid.DX           800.
pfset ComputationalGrid.DY               800.
pfset ComputationalGrid.DZ           2.00

pfset ComputationalGrid.NX           267
pfset ComputationalGrid.NY           302
pfset ComputationalGrid.NZ           50
pfset Domain.GeomName                            domain
pfset GeomInput.Names                        "domainin"
pfset GeomInput.domainin.InputType         Box
pfset GeomInput.domainin.GeomName          domain

pfset Geom.domain.Lower.X                     [pfget ComputationalGrid.Lower.X]
pfset Geom.domain.Lower.Y                     [pfget ComputationalGrid.Lower.Y]
pfset Geom.domain.Lower.Z                     [pfget ComputationalGrid.Lower.Z]

set DX                                        [pfget ComputationalGrid.DX]
set DY                                        [pfget ComputationalGrid.DY]
set NX                                        [pfget ComputationalGrid.NX]
set NY                                        [pfget ComputationalGrid.NY]

pfset Geom.domain.Upper.X                     [expr $NX*$DX]
pfset Geom.domain.Upper.Y                     [expr $NY*$DY]
pfset Geom.domain.Upper.Z                     100.0
pfset Geom.domain.Patches                   "x-lower x-upper y-lower y-upper z-lower z-upper"

pfset Solver.Nonlinear.VariableDz            True
pfset dzScale.GeomNames                      domain
pfset dzScale.Type                           nzList
pfset dzScale.nzListNumber                   [pfget ComputationalGrid.NZ]
pfset Cell.0.dzScale.Value                   4.00
pfset Cell.1.dzScale.Value                   3.50
pfset Cell.2.dzScale.Value                   2.50
pfset Cell.3.dzScale.Value                   2.50
pfset Cell.4.dzScale.Value                   2.50
pfset Cell.5.dzScale.Value                   2.50
pfset Cell.6.dzScale.Value                   2.50
pfset Cell.7.dzScale.Value                   2.50
pfset Cell.8.dzScale.Value                   1.50
pfset Cell.9.dzScale.Value                   1.50
pfset Cell.10.dzScale.Value                   1.50
pfset Cell.11.dzScale.Value                   1.50
pfset Cell.12.dzScale.Value                   1.50
pfset Cell.13.dzScale.Value                   1.00
pfset Cell.14.dzScale.Value                   1.00
pfset Cell.15.dzScale.Value                   1.00
pfset Cell.16.dzScale.Value                   1.00
pfset Cell.17.dzScale.Value                   1.00
pfset Cell.18.dzScale.Value                   0.75
pfset Cell.19.dzScale.Value                   0.75
pfset Cell.20.dzScale.Value                   0.75
pfset Cell.21.dzScale.Value                   0.75
pfset Cell.22.dzScale.Value                   0.75
pfset Cell.23.dzScale.Value                   0.75
pfset Cell.24.dzScale.Value                   0.75
pfset Cell.25.dzScale.Value                   0.75
pfset Cell.26.dzScale.Value                   0.75
pfset Cell.27.dzScale.Value                   0.75
pfset Cell.28.dzScale.Value                   0.50
pfset Cell.29.dzScale.Value                   0.50
pfset Cell.30.dzScale.Value                   0.50
pfset Cell.31.dzScale.Value                   0.50
pfset Cell.32.dzScale.Value                   0.50
pfset Cell.33.dzScale.Value                   0.50
pfset Cell.34.dzScale.Value                   0.50
pfset Cell.35.dzScale.Value                   0.50
pfset Cell.36.dzScale.Value                   0.50
pfset Cell.37.dzScale.Value                   0.50
pfset Cell.38.dzScale.Value                   0.50
pfset Cell.39.dzScale.Value                   0.50
pfset Cell.40.dzScale.Value                   0.50
pfset Cell.41.dzScale.Value                   0.35
pfset Cell.42.dzScale.Value                   0.25
pfset Cell.43.dzScale.Value                   0.15
pfset Cell.44.dzScale.Value                   0.10
pfset Cell.45.dzScale.Value                   0.065
pfset Cell.46.dzScale.Value                   0.035
pfset Cell.47.dzScale.Value                   0.025
pfset Cell.48.dzScale.Value                   0.015
pfset Cell.49.dzScale.Value                   0.01

pfset TimingInfo.BaseUnit        0.25
pfset TimingInfo.StartCount      2920
pfset TimingInfo.StartTime       0.0
pfset TimingInfo.StopTime        1.0
pfset TimeStep.Type          Constant
pfset TimeStep.Value             0.25
pfset TimingInfo.DumpInterval   -1
pfset Cycle.Names "constant"
pfset Cycle.constant.Names              "alltime"
pfset Cycle.constant.alltime.Length      1
pfset Cycle.constant.Repeat             -1

pfset Geom.Perm.Names            "domain"
pfset Geom.domain.Perm.Type              "PFBFile"
pfset Geom.domain.Perm.FileName      "$INPUT_BIN_DIR/ksat_.pfb"

pfset Perm.TensorType                    TensorByGeom
pfset Geom.Perm.TensorByGeom.Names       "domain"
pfset Geom.domain.Perm.TensorValX        1.0
pfset Geom.domain.Perm.TensorValY        1.0
pfset Geom.domain.Perm.TensorValZ        1.0

#-----------------------------------------------------------------------------
# Specific Storage
#-----------------------------------------------------------------------------
pfset SpecificStorage.Type                       Constant
pfset SpecificStorage.GeomNames                  "domain"
pfset Geom.domain.SpecificStorage.Value          1.0e-3

#-----------------------------------------------------------------------------
# Phases
#-----------------------------------------------------------------------------
pfset Phase.Names                        "water"
pfset Phase.water.Density.Type           Constant
pfset Phase.water.Density.Value          1.0
pfset Phase.water.Viscosity.Type         Constant
pfset Phase.water.Viscosity.Value        1.0

#-----------------------------------------------------------------------------
# Gravity
#-----------------------------------------------------------------------------
pfset Gravity                            1.0

#-----------------------------------------------------------------------------
# Contaminants
#-----------------------------------------------------------------------------
pfset Contaminants.Names                 ""

#-----------------------------------------------------------------------------
# Retardation
#-----------------------------------------------------------------------------
pfset Geom.Retardation.GeomNames         ""

#-----------------------------------------------------------------------------
# Porosity
#-----------------------------------------------------------------------------
pfset Geom.Porosity.GeomNames            "domain"
pfset Geom.domain.Porosity.Type          "PFBFile"
pfset Geom.domain.Porosity.FileName      "$INPUT_BIN_DIR/poro_.pfb"

pfset Phase.RelPerm.Type               VanGenuchten
pfset Phase.RelPerm.GeomNames            "domain"
pfset Phase.RelPerm.VanGenuchten.File  1
pfset Geom.domain.RelPerm.Alpha.Filename "$INPUT_BIN_DIR/alpha_.pfb"
pfset Geom.domain.RelPerm.N.Filename "$INPUT_BIN_DIR/nnn_.pfb"
pfset Geom.domain.RelPerm.NumSamplePoints   $VG_points
pfset Geom.domain.RelPerm.MinPressureHead   $VG_pmin

pfset Phase.Saturation.Type            VanGenuchten
pfset Phase.Saturation.GeomNames            "domain"
pfset Phase.Saturation.VanGenuchten.File  1
pfset Geom.domain.Saturation.Alpha.Filename "$INPUT_BIN_DIR/alpha_.pfb"
pfset Geom.domain.Saturation.N.Filename "$INPUT_BIN_DIR/nnn_.pfb"
pfset Geom.domain.Saturation.SRes.Filename "$INPUT_BIN_DIR/sres_.pfb"
pfset Geom.domain.Saturation.SSat.Filename "$INPUT_BIN_DIR/ssat_.pfb"

pfset Wells.Names                                ""

pfset BCPressure.PatchNames       [pfget Geom.domain.Patches]

pfset Patch.z-lower.BCPressure.Type                   FluxConst
pfset Patch.z-lower.BCPressure.Cycle                  "constant"
pfset Patch.z-lower.BCPressure.alltime.Value          0.0

pfset Patch.x-lower.BCPressure.Type                  FluxConst
pfset Patch.x-lower.BCPressure.Cycle                 "constant"
pfset Patch.x-lower.BCPressure.alltime.Value         0.0

pfset Patch.y-lower.BCPressure.Type                   FluxConst
pfset Patch.y-lower.BCPressure.Cycle                  "constant"
pfset Patch.y-lower.BCPressure.alltime.Value          0.0

pfset Patch.z-upper.BCPressure.Type                     OverlandFlow
pfset Patch.z-upper.BCPressure.Cycle                    "constant"
pfset Patch.z-upper.BCPressure.alltime.Value             0.0

pfset Patch.x-upper.BCPressure.Type                  FluxConst
pfset Patch.x-upper.BCPressure.Cycle                 "constant"
pfset Patch.x-upper.BCPressure.alltime.Value          0.0

pfset Patch.y-upper.BCPressure.Type               FluxConst
pfset Patch.y-upper.BCPressure.Cycle              "constant"
pfset Patch.y-upper.BCPressure.alltime.Value       0.0

pfset TopoSlopesX.Type "PFBFile"
pfset TopoSlopesX.GeomNames "domain"
pfset TopoSlopesX.FileName "$INPUT_BIN_DIR/xslope_800.pfb"
pfset TopoSlopesY.Type "PFBFile"
pfset TopoSlopesY.GeomNames "domain"
pfset TopoSlopesY.FileName "$INPUT_BIN_DIR/yslope_800.pfb"
pfset Mannings.Type                      "Constant"
pfset Mannings.GeomNames                 "domain"
pfset Mannings.Geom.domain.Value         5.52e-5

pfset ICPressure.Type                    "PFBFile"
pfset ICPressure.GeomNames               "domain"
pfset Geom.domain.ICPressure.FileName    "$INPUT_BIN_DIR/press_800.pfb"
pfset PhaseSources.water.Type                    Constant
pfset PhaseSources.water.GeomNames               domain
pfset PhaseSources.water.Geom.domain.Value       0.0

pfset KnownSolution                              NoKnownSolution

pfset Solver                                     Richards
pfset Solver.MaxIter                             1000000

pfset Solver.TerrainFollowingGrid                True

pfset Solver.Nonlinear.MaxIter                   150
pfset Solver.Nonlinear.ResidualTol               1E-7
pfset Solver.Nonlinear.EtaChoice                 Walker1
pfset Solver.Nonlinear.UseJacobian               True
pfset Solver.Nonlinear.StepTol                   1E-14
pfset Solver.Nonlinear.Globalization             LineSearch
pfset Solver.Linear.KrylovDimension              70
pfset Solver.Linear.MaxRestart                   12
pfset Solver.MaxConvergenceFailures              5

pfset Solver.Linear.Preconditioner                       PFMG
pfset Solver.PrintSubsurf                                False
pfset Solver.Drop                                        1E-14
pfset Solver.AbsTol                                      1E-10

pfset Solver.PrintSaturation                            True
pfset Solver.PrintSubsurf                               False
pfset Solver.PrintPressure                              True
pfset Solver.PrintMannings                              True
pfset Solver.PrintSubsurf                               False
pfset Solver.Nonlinear.PrintFlag                        LowVerbosity

pfset Solver.WriteSiloSubsurfData                       False
pfset Solver.WriteSiloPressure                          False
pfset Solver.WriteSiloSaturation                        False
pfset Solver.WriteSiloMask                              False
pfset Solver.WriteCLMBinary                             False
pfset Solver.WriteSiloEvapTrans                         False
pfset Solver.WriteSiloEvapTransSum                      False
pfset Solver.WriteSiloOverlandSum                       False
pfset Solver.WriteSiloMannings                          False
pfset Solver.WriteSiloSpecificStorage                   False

pfrun test
smithsg84 commented 4 years ago

Thanks for the bug report. I believe I have fixed the issue; there was a bug when using VanGenuchten and reading from a file.