I am studying th el2p test example to see if it is possible to use it without modifications to the geomechanics/el2p/model in order to validate the code with a well known published example of the Mandel problem (Sangnimnuan 2018). My question is whether the el2p model can be used without further modifications for these boundary conditions.
The code for the initialization has no problem whatsoever when modifying the fixed parameters (Young Modulus, Poisson ratio, porosity, permeability rock density). But when I modify the boundary conditions from Dirichlet to Neumann to allow an external force to be applied on the top boundary and expansion on the left boundary, the Newton method does not converge on the first step. IOW: void boundaryTypesAtPos(BoundaryTypes &values, const GlobalPosition& globalPos) const { values.setAllNeumann(); // The solid displacement normal to the lateral boundaries is fixed. if(globalPos[0] < eps_ || globalPos[0] > this->bBoxMax()[0]-eps_) { values.setDirichlet(uxIdx); if(initializationRun_ == false) { values.setDirichlet(pressureIdx); values.setDirichlet(saturationIdx); } } // The solid displacement normal to the lateral boundaries is fixed. // Only for 3 d if (dim == 3) { if(globalPos[1] < eps_ || globalPos[1] > this->bBoxMax()[1]-eps_) { values.setDirichlet(uyIdx); if(initializationRun_ == false) { values.setDirichlet(pressureIdx); values.setDirichlet(saturationIdx); } }} // Lower boundary closed for brine and CO2 flux, uz is fixed. if(globalPos[dimWorld-1] < eps_) { if(dim == 2) values.setDirichlet(uyIdx); if(dim == 3) values.setDirichlet(uzIdx); } #define SANGNIMNUAN #ifdef SANGNIMNUAN // right side if(globalPos[0] > this->bBoxMax()[0]-eps_) { values.setNeumann(uxIdx); values.setNeumann(uyIdx); } // top side if(globalPos[1] > this->bBoxMax()[1]-eps_){ values.setNeumann(uxIdx); values.setNeumann(uyIdx); } #endif // for the initialization run the pressure and saturation // values are only given at the top boundary. if(globalPos[dimWorld-1] > this->bBoxMax()[dimWorld-1]-eps_) { values.setDirichlet(pressureIdx); values.setDirichlet(saturationIdx); } } void neumannAtPos(PrimaryVariables &values, const GlobalPosition& globalPos) const { values = 0; #ifdef SANGNIMNUAN // right side if(globalPos[0] > this->bBoxMax()[0]-eps_) { // no force } // top side if(globalPos[1] > this->bBoxMax()[1]-eps_){ // assuming area of 1 and load of 616 psi. P=F/A values[uyIdx] = 4.2472e+6; // Newtons // no force in ux } #endif if(globalPos[1] < eps_ || globalPos[1] > this->bBoxMax()[1]-eps_){ // assuming area of 1 and load of 616 psi. P=F/A //values[uyIdx] = 4.2472e+6; // Newtons } } I am assuming that the el2p model, as is, will not suffice to run a simple Mandel problem without some deep modifications. Yes? best regards, Edscott _______________________________________________ Dumux mailing list Dumux@listserv.uni-stuttgart.de https://listserv.uni-stuttgart.de/mailman/listinfo/dumux