> On 20. Sep 2017, at 19:05, Matthew Knepley <[email protected]> wrote:
> 
> On Wed, Sep 20, 2017 at 12:57 PM, Maximilian Hartig <[email protected] 
> <mailto:[email protected]>> wrote:
>> On 20. Sep 2017, at 18:17, Matthew Knepley <[email protected] 
>> <mailto:[email protected]>> wrote:
>> 
>> On Wed, Sep 20, 2017 at 11:46 AM, Maximilian Hartig 
>> <[email protected] <mailto:[email protected]>> wrote:
>> Hello,
>> 
>> I’m trying to implement plasticity using petscFE but I am quite stuck since 
>> a while. Here’s what I’m trying to do:
>> 
>> I have a TS which solves the following equation:
>> gradient(stress) +Forces = density*acceleration
>> where at the moment stress is a linear function of the strain and hence the 
>> gradient of the displacement. This works fine. Now I want to compare the 
>> stress to a reference value and if it lies above this yield stress, I have 
>> to reevaluate the stress at the respective location. Then I need to update 
>> the plastic strain / yield stress  at this location.
>> I tried doing that first by solving three fields at the same time: 
>> displacements, stresses and yield stress. This failed.
>> Then, I tried solving only for displacement increments, storing the 
>> displacements, stresses and yield stress from the past time step in an 
>> auxiliary field. The auxiliary fields are updated after each time step with 
>> a second SNES, using the displacement increments from the current, converged 
>> time step. This also failed.
>> In both cases the code had problems converging and when it did, I ended up 
>> with negative plastic strain. This is not possible and I don’t know how it 
>> happens because I explicitly only increment the plastic strain when the 
>> increment is positive.
>> 
>> I am sure there is an easy solution to how I can update the internal 
>> variables and determine the correct stress for the residual but I just 
>> cannot figure it out. I’d be thankful for any hints.
>> 
>> It looks like there are two problems above:
>> 
>> 1) Convergence
>> 
>> For any convergence question, we at minimum need to see the output of
>> 
>>   -snes_view -snes_converged_reason -snes_monitor -ksp_monitor_true_residual 
>> -snes_linesearch_monitor
>> 
>> However, this does not seem to be the main issue.
>> 
>> 2) Negative plastic strain
> 
> This is what I’m mainly concerned with.
>> 
>> If the system really converged (I cannot tell without other information), 
>> then the system formulation is wrong. Of course, its
>> really easy to check by just plugging your solution into the residual 
>> function too. I do not understand your explanation above
>> completely however. Do you solve for the plastic strain or the increment?
> 
> I am trying to find a formulation that works and I think there is a core 
> concept I am just not “getting”. 
> I want to solve for the displacements. 
> This works fine in an elastic case. When plasticity is involved, I need to 
> determine the actual stress for my residual evaluation and I have not found a 
> way to do that.
> All formulations for stress I found in literature use strain increments so I 
> tried to just solve for increments each timestep and then add them together 
> in tspoststep. But I still need to somehow evaluate the stress for my 
> displacement increment residuals. So currently, I have auxiliary fields with 
> the stress and the plastic strain.
> 
> First question: Don't you get stress by just applying a local operator, 
> rather than a solve?
That depends on the type of plasticity. For a linear hardening formulation it 
is correct that I could just apply a local operator. I’d be happy with that for 
now. But I’d still need to save stress state and plastic strain to determine 
whether or not I’m dealing with a plasticity. I don’t know how to do that 
inside the residual evaluation. Plus DMProjectField seems to have problems 
evaluating the gradient when boundary conditions are imposed.

Thanks,
Max
> 
>   Thanks,
> 
>      Matt
>  
> I evaluate the current trial stress by adding a stress increment assuming 
> elastic behaviour. If the trial stress lies beyond the yield stress I 
> calculate the corrected stress to evaluate my residual for the displacements. 
> But now I somehow need to update my plastic strain and the stress in the 
> auxiliary fields. So in tspoststep I created another SNES to now calculate 
> the stress and plastic strain while the displacement is the auxiliary field. 
> 
> I’m sure there’s an elegant solution on how to update internal variables but 
> I have not found it.
> 
> Thanks,
> Max
>> 
>>   Thanks,
>> 
>>      Matt
>>  
>> Thanks,
>> Max
>> 
>> 
>> 
>> -- 
>> What most experimenters take for granted before they begin their experiments 
>> is infinitely more interesting than any results to which their experiments 
>> lead.
>> -- Norbert Wiener
>> 
>> http://www.caam.rice.edu/~mk51/ <http://www.caam.rice.edu/~mk51/>
> 
> 
> 
> -- 
> What most experimenters take for granted before they begin their experiments 
> is infinitely more interesting than any results to which their experiments 
> lead.
> -- Norbert Wiener
> 
> http://www.caam.rice.edu/~mk51/ <http://www.caam.rice.edu/~mk51/>

Reply via email to