We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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
We are looking at the energy release rate in dynamic fracture now, and the dynamic J integral will be very crucial.
The formula for dynamic J integral looks clear, just adding the kinetic part compared to the static one: quasi-static:
$$ J = \int_\Gamma(Wn_1-t_i u_{i,1}) d\Gamma $$
dynamic:
$$ J = \int_\Gamma[ (W + \frac 1 2 \rho \dot{u}^2) n_1-t_i u_{i,1}] d\Gamma $$
Currently, I am just adding the density in the input params and add the dynamic energy density in the calculation:
#include "DynamicPhaseFieldJIntegral.h" registerMooseObject("raccoonApp", DynamicPhaseFieldJIntegral); InputParameters DynamicPhaseFieldJIntegral::validParams() { InputParameters params = SideIntegralPostprocessor::validParams(); params += BaseNameInterface::validParams(); params.addClassDescription("Compute the J integral for a phase-field model of fracture"); params.addRequiredParam<RealVectorValue>("J_direction", "direction of J integral"); params.addParam<MaterialPropertyName>("strain_energy_density", "psie" "Name of the strain energy density"); params.addRequiredCoupledVar( "displacements", "The displacements appropriate for the simulation geometry and coordinate system"); params.addParam<MaterialPropertyName>( "density", "density", "Name of material property containing density"); return params; } DynamicPhaseFieldJIntegral::DynamicPhaseFieldJIntegral(const InputParameters & parameters) : SideIntegralPostprocessor(parameters), BaseNameInterface(parameters), _stress(getADMaterialPropertyByName<RankTwoTensor>(prependBaseName("stress"))), _psie(getADMaterialProperty<Real>(prependBaseName("strain_energy_density"))), _ndisp(coupledComponents("displacements")), _grad_disp(coupledGradients("displacements")), _t(getParam<RealVectorValue>("J_direction")), _rho(getADMaterialProperty<Real>(prependBaseName("density", true))), _u_dots(coupledDots("displacements")) { // set unused dimensions to zero for (unsigned i = _ndisp; i < 3; ++i) { _grad_disp.push_back(&_grad_zero); _u_dots.push_back(&_zero); } } Real DynamicPhaseFieldJIntegral::computeQpIntegral() { // grad(u) and dot(u) auto H = RankTwoTensor::initializeFromRows( (*_grad_disp[0])[_qp], (*_grad_disp[1])[_qp], (*_grad_disp[2])[_qp]); RealVectorValue u_dot((*_u_dots[0])[_qp], (*_u_dots[1])[_qp], (*_u_dots[2])[_qp]); // kinetic energy density ADReal psik = 0.5 * raw_value(_rho[_qp]) * u_dot * u_dot; RankTwoTensor I2(RankTwoTensor::initIdentity); ADRankTwoTensor Sigma = (_psie[_qp] + psik) * I2 - H.transpose() * _stress[_qp]; RealVectorValue n = _normals[_qp]; return raw_value(_t * Sigma * n); }
The input block:
[DJint] type = DynamicPhaseFieldJIntegral J_direction = '1 0 0' strain_energy_density = psie displacements = 'disp_x disp_y' density = density boundary = 'left bottom right top' []
However this gave me unreasonable results, I got negative J integral values from a simple tensile test:
Here's the PF results and energies:
However the J-integral looks wrong:
Do you have any insights on what might be causing it?
The text was updated successfully, but these errors were encountered:
No branches or pull requests
Reason
We are looking at the energy release rate in dynamic fracture now, and the dynamic J integral will be very crucial.
Design
The formula for dynamic J integral looks clear, just adding the kinetic part compared to the static one:
quasi-static:
dynamic:
Some problems on the implementation
Currently, I am just adding the density in the input params and add the dynamic energy density in the calculation:
The input block:
However this gave me unreasonable results, I got negative J integral values from a simple tensile test:
![image](https://private-user-images.githubusercontent.com/20653957/336606297-ef40ce2c-7ba2-4355-80e8-2acee2cac7a8.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjA2MTczNjYsIm5iZiI6MTcyMDYxNzA2NiwicGF0aCI6Ii8yMDY1Mzk1Ny8zMzY2MDYyOTctZWY0MGNlMmMtN2JhMi00MzU1LTgwZTgtMmFjZWUyY2FjN2E4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzEwVDEzMTEwNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWViZTIzNDgzYzQ5ZTRhY2I0OWQwMWUwYWEwODBhZTc4ZjJkZjNlZWM1MjUzZjJmMDgzZGMyZGU1YmEwYjY3OTQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.FKNh0CtxZCVnLpaS9nFo8aX28MZKraz-Ps6x_YBjAno)
Here's the PF results and energies:
![image](https://private-user-images.githubusercontent.com/20653957/336606479-d22b04d9-8b20-4155-af02-a1940f4cf267.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjA2MTczNjYsIm5iZiI6MTcyMDYxNzA2NiwicGF0aCI6Ii8yMDY1Mzk1Ny8zMzY2MDY0NzktZDIyYjA0ZDktOGIyMC00MTU1LWFmMDItYTE5NDBmNGNmMjY3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzEwVDEzMTEwNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTZiOTcxZjQ1MTYwNWVhMDY1ZDM2MjkyZWVjNWVmZTA0M2Q1NTllZGFiODk4ZDg5ZDdjYjQ5ZmE2YjdjN2VhNGMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.x4duHVYhckR3A97btj14dn5DxJmpLSh14triv2PJqis)
![image](https://private-user-images.githubusercontent.com/20653957/336606527-a4efd679-0d04-45e9-b96b-3e84d0570ee5.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjA2MTczNjYsIm5iZiI6MTcyMDYxNzA2NiwicGF0aCI6Ii8yMDY1Mzk1Ny8zMzY2MDY1MjctYTRlZmQ2NzktMGQwNC00NWU5LWI5NmItM2U4NGQwNTcwZWU1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzEwVDEzMTEwNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTVhZmI1NGEyYmJkYmVlYmQzYTg1ZTEwNTFiY2MwMWYwNjRkOTAyMWU3MmQyMDJiN2Y4YTViMWY4M2M4MzNiMDUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.-OR8VCGH-Hd5ko0XoDxL0AzUak7sE0-aYx7P5x46UJ0)
However the J-integral looks wrong:
![image](https://private-user-images.githubusercontent.com/20653957/336606753-f1c1b5ef-3ede-40bf-aa2a-9815847304b7.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjA2MTczNjYsIm5iZiI6MTcyMDYxNzA2NiwicGF0aCI6Ii8yMDY1Mzk1Ny8zMzY2MDY3NTMtZjFjMWI1ZWYtM2VkZS00MGJmLWFhMmEtOTgxNTg0NzMwNGI3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzEwVDEzMTEwNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTgyNmEwZjA2YzZjN2JlYWUzOTI1OGQ5NjllN2U0M2NiZDNjYWMyYTdhNzU1YjUyNjMwMzc3YzE4ZWU2OGU3Y2UmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.OtE4LT9R_yfuqGSzFkBvR8mdb886_y1bVMoTGeDdX2o)
Do you have any insights on what might be causing it?
The text was updated successfully, but these errors were encountered: