Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/fsisphInterfaces #239

Merged
merged 26 commits into from
Dec 14, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
e6c849d
FSISPH: adding a simple pairwise yield implementation
jmpearl Aug 1, 2023
d6dbe79
might need to revert this
jmpearl Aug 14, 2023
b701d8e
FSI: bumping up inheritance to SPH from SolidSPH
jmpearl Aug 14, 2023
039999d
FSI half-baked commit to checkout other branch
jmpearl Aug 19, 2023
d398a94
FSI: bumping up inheritance GenericHydro from SPH
jmpearl Aug 20, 2023
2e71df2
adding new interface approach
jmpearl Sep 11, 2023
807c7a6
Pressure-based sum density method for interfaces
jmpearl Sep 22, 2023
abc408c
implementing interfacePmin, planeStrain, and updating constructors
jmpearl Sep 22, 2023
1309e43
FSISPH var name change
jmpearl Sep 22, 2023
18e9779
FSI updating Noh test scripts
jmpearl Sep 22, 2023
743f717
FSI updating tests
jmpearl Sep 22, 2023
734d4ae
FSI updating non ats tests for FSISPH update
jmpearl Sep 22, 2023
8316bb1
FSI check type issue for debug blueos
jmpearl Sep 23, 2023
91ddbbf
FSI update Noh outputs
jmpearl Sep 23, 2023
244cdcb
updating release notes for FSISPH updates
jmpearl Sep 23, 2023
4864957
ats ftw forgot to run newFieldList on mVolume
jmpearl Sep 23, 2023
cc8c0f9
removing pairwise yield
jmpearl Oct 16, 2023
5c9a8f0
merge develop
jmpearl Oct 31, 2023
ddda957
double spaces forever
jmpearl Nov 2, 2023
03291f1
Merge branch 'develop' into feature/FSISPHinterfaces
jmpearl Nov 14, 2023
d86680b
updates to policies and FSI yield
jmpearl Nov 28, 2023
ee11ead
renaming pressures
jmpearl Dec 2, 2023
89c3aa0
lingering python2 print statements
jmpearl Dec 2, 2023
5de1a21
Adding damagedPressure as acceptable pressure field name in the policy
jmpearl Dec 4, 2023
abd21b9
Merge branch 'develop' into feature/FSISPHinterfaces
jmpearl Dec 6, 2023
b82b619
Merge branch 'develop' into feature/FSISPHinterfaces
jmpearl Dec 13, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion RELEASE_NOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,12 @@ Notable changes include:
* Bug Fixes / improvements:
* Fixed melt behavior in Steinberg-Guinan strength model, which was ignoring melt for damaged material.
* Fixed range of dimensionless melt temperature for Johnson-Cook strength.

* FSISPH new features and modifications to method
* NOTE constructor inputs have changed
* strength implementation modified
* new features added including plane strain option and settable minP for interfaces
* new, more rigorous, interface and free surface tracking

Version v2023-06-0 -- Release date 2023-06-20
==============================================

Expand Down
1 change: 1 addition & 0 deletions src/DEM/DEMBase.cc
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
#include "DataBase/ReplaceFieldList.hh"
#include "DataBase/DataBase.hh"


#include "Field/FieldList.hh"
#include "Field/NodeIterators.hh"

Expand Down
4 changes: 3 additions & 1 deletion src/Damage/DamagedPressurePolicy.cc
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
//----------------------------------------------------------------------------//
#include "DamagedPressurePolicy.hh"
#include "Hydro/HydroFieldNames.hh"
#include "FSISPH/FSIFieldNames.hh"
#include "Strength/SolidFieldNames.hh"
#include "NodeList/SolidNodeList.hh"
#include "SolidMaterial/SolidEquationOfState.hh"
Expand Down Expand Up @@ -51,7 +52,8 @@ update(const KeyType& key,
const double dt) {
KeyType fieldKey, nodeListKey, Dkey;
StateBase<Dimension>::splitFieldKey(key, fieldKey, nodeListKey);
REQUIRE(fieldKey == HydroFieldNames::pressure and
REQUIRE((fieldKey == HydroFieldNames::pressure or
fieldKey == FSIFieldNames::damagedPressure) and
nodeListKey == UpdatePolicyBase<Dimension>::wildcard());
StateBase<Dimension>::buildFieldKey(SolidFieldNames::tensorDamage, nodeListKey);
auto pressure = state.fields(fieldKey, 0.0);
Expand Down
12 changes: 12 additions & 0 deletions src/Damage/TensorStrainPolicy.cc
Original file line number Diff line number Diff line change
Expand Up @@ -163,8 +163,20 @@ update(const KeyType& key,
}
}

//------------------------------------------------------------------------------------
// NOTE: this is a temporary fix to address the difference between Spheral's damaged
// pressure and the standard EOS pressure originally used by Benz and Asphaug.
// (1-D) is squared to counter-act the 1-D rolled into the pressure. Original
// code is commented out below. (This will enhance the deviatoric portion)
// -JMPearl 11/14/2023

//const auto fDs = 1.0 - D(i).eigenValues().maxElement();
//stateField(i) *= safeInvVar(max(0.0, fDs*fDs), tiny);

// Damage enhancement of the effective strain.
stateField(i) *= safeInvVar(max(0.0, 1.0 - D(i).Trace()/Dimension::nDim), tiny);
//------------------------------------------------------------------------------------


// Apply limiting to the effective strain.
stateField(i) = max(1.0e-7*max(1.0, std::abs(stateField(i).Trace())/Dimension::nDim), stateField(i));
Expand Down
3 changes: 3 additions & 0 deletions src/FSISPH/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
include_directories(.)

set(FSISPH_inst
SolidFSISPHHydroBase
computeFSISPHSumMassDensity
computeHWeightedFSISPHSumMassDensity
computeInterfacePressureCorrectedSumMassDensity
SlideSurface
)

Expand All @@ -18,6 +20,7 @@ set(FSISPH_headers
SolidFSISPHHydroBaseInline.hh
computeFSISPHSumMassDensity.hh
computeHWeightedFSISPHSumMassDensity.hh
computeInterfacePressureCorrectedSumMassDensity.hh
FSIFieldNames.hh
SlideSurface.hh
SlideSurfaceInline.hh
Expand Down
7 changes: 5 additions & 2 deletions src/FSISPH/FSIFieldNames.cc
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,14 @@

#include "FSIFieldNames.hh"

const std::string Spheral::FSIFieldNames::rawPressure = "raw eos pressure";
const std::string Spheral::FSIFieldNames::damagedPressure = "damaged pressure";
const std::string Spheral::FSIFieldNames::pressureGradient = "pressureGradient";
const std::string Spheral::FSIFieldNames::specificThermalEnergyGradient = "specificThermalEnergyGradient";
const std::string Spheral::FSIFieldNames::interfaceFlags = "interfaceFlags";
const std::string Spheral::FSIFieldNames::interfaceAreaVectors = "interfaceAreaVectors";
const std::string Spheral::FSIFieldNames::interfaceNormals = "interfaceNormals";
const std::string Spheral::FSIFieldNames::interfaceAngles = "interfaceAngles";
const std::string Spheral::FSIFieldNames::interfaceFraction = "interfaceFraction";
const std::string Spheral::FSIFieldNames::interfaceSmoothness = "interfaceSmoothness";
const std::string Spheral::FSIFieldNames::smoothedInterfaceNormals = "smoothedInterfaceNormals";
const std::string Spheral::FSIFieldNames::smoothnessNormalization = "smoothnessNormalization";
const std::string Spheral::FSIFieldNames::interfaceSmoothnessNormalization = "interfaceSmoothnessNormalization";
8 changes: 6 additions & 2 deletions src/FSISPH/FSIFieldNames.hh
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,18 @@
namespace Spheral {

struct FSIFieldNames {
static const std::string rawPressure;
static const std::string damagedPressure;
static const std::string pressureGradient;
static const std::string specificThermalEnergyGradient;
static const std::string interfaceFlags;
static const std::string interfaceAreaVectors;
static const std::string interfaceNormals;
static const std::string interfaceAngles;
static const std::string interfaceFraction;
static const std::string interfaceSmoothness;
static const std::string smoothedInterfaceNormals;
static const std::string smoothnessNormalization;
static const std::string interfaceSmoothnessNormalization;
//static const std::string inverseEquivalentDeviatoricStress;
};

}
Expand Down
24 changes: 10 additions & 14 deletions src/FSISPH/FSISPHHydros.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ def FSISPH(dataBase,
W,
Q = None,
slides=None,
filter = 0.0,
cfl = 0.35,
surfaceForceCoefficient=0.0,
densityStabilizationCoefficient=0.1,
Expand All @@ -19,12 +18,14 @@ def FSISPH(dataBase,
useVelocityMagnitudeForDt = False,
compatibleEnergyEvolution = True,
evolveTotalEnergy = False,
correctVelocityGradient = True,
linearCorrectGradients = True,
planeStrain = False,
interfacePmin = 0.0,
interfaceNeighborAngleThreshold=0.707,
HUpdate = IdealH,
densityUpdate = FSISumMassDensity,
epsTensile = 0.0,
nTensile = 4.0,
damageRelieveRubble = False,
strengthInDamage = False,
xmin = (-1e100, -1e100, -1e100),
xmax = ( 1e100, 1e100, 1e100),
ASPH = False,
Expand All @@ -38,9 +39,6 @@ def FSISPH(dataBase,
if compatibleEnergyEvolution and evolveTotalEnergy:
raise RuntimeError("compatibleEnergyEvolution and evolveTotalEnergy are incompatible")

if strengthInDamage and damageRelieveRubble:
raise RuntimeError("strengthInDamage and damageRelieveRubble are incompatible")

# create the map nodelist --> index
nodeLists = dataBase.nodeLists()
nodeListMap = {}
Expand Down Expand Up @@ -101,7 +99,6 @@ def FSISPH(dataBase,
"Q" : Q,
"slides" : slides,
"W" : W,
"filter" : filter,
"cfl" : cfl,
"surfaceForceCoefficient" : surfaceForceCoefficient,
"densityStabilizationCoefficient" : densityStabilizationCoefficient,
Expand All @@ -113,15 +110,14 @@ def FSISPH(dataBase,
"useVelocityMagnitudeForDt" : useVelocityMagnitudeForDt,
"compatibleEnergyEvolution" : compatibleEnergyEvolution,
"evolveTotalEnergy" : evolveTotalEnergy,
"gradhCorrection" : False,
"XSPH" : False,
"correctVelocityGradient" : correctVelocityGradient,
"densityUpdate" : IntegrateDensity,
"linearCorrectGradients" : linearCorrectGradients,
"planeStrain" : planeStrain,
"interfacePmin" : interfacePmin,
"interfaceNeighborAngleThreshold" : interfaceNeighborAngleThreshold,
"densityUpdate" : densityUpdate,
"HUpdate" : HUpdate,
"epsTensile" : epsTensile,
"nTensile" : nTensile,
"damageRelieveRubble" : damageRelieveRubble,
"strengthInDamage" : strengthInDamage,
"xmin" : eval("Vector%id(%g, %g, %g)" % xmin),
"xmax" : eval("Vector%id(%g, %g, %g)" % xmax)}

Expand Down
Loading