Skip to content

Commit

Permalink
Simplify the default behavior in timestep initialization
Browse files Browse the repository at this point in the history
  • Loading branch information
raback committed Dec 11, 2023
1 parent fe8913a commit 1f5be3a
Showing 1 changed file with 14 additions and 10 deletions.
24 changes: 14 additions & 10 deletions fem/src/SolverUtils.F90
Original file line number Diff line number Diff line change
Expand Up @@ -9663,13 +9663,14 @@ SUBROUTINE InitializeTimestep( Solver )
ndofs = Solver % Matrix % NumberOfRows
Var => Solver % Variable

eFact = 0.0_dp
ExtrapolateInTime = ListGetLogical(CurrentModel % Simulation, &
'Timestep extrapolation', GotIt )

eFact = ListGetCReal(CurrentModel % Simulation, &
'Timestep extrapolation factor', GotIt )
IF(.NOT.GotIt) THEN
IF(ExtrapolateInTime) eFact = 1._dp
IF( ExtrapolateInTime ) THEN
eFact = ListGetCReal(CurrentModel % Simulation, &
'Timestep extrapolation factor', GotIt )
IF(.NOT.GotIt) eFact = 1._dp
ALLOCATE(NewVals(SIZE(Var % Values)))
END IF

IF ( Solver % TimeOrder>1 .OR. method/='bdf') THEN
Expand Down Expand Up @@ -9707,8 +9708,9 @@ SUBROUTINE InitializeTimestep( Solver )
END DO

IF( ExtrapolateInTime ) THEN
Var % Values = (1+eFact)*Var % Values-eFact*Var % PrevValues(:,1)
Var % PrevValues(:,1) = (Var % Values+eFact*Var % PrevValues(:,1))/(1+eFact)
NewVals = (1+eFact)*Var % Values-eFact*Var % PrevValues(:,1)
Var % PrevValues(:,1) = Var % Values
Var % Values = NewVals
ELSE
Var % PrevValues(:,1) = Var % Values
END IF
Expand All @@ -9728,14 +9730,16 @@ SUBROUTINE InitializeTimestep( Solver )
END DO

IF( ExtrapolateInTime ) THEN
Var % Values = (1+eFact)*Var % Values - eFact*Var % PrevValues(:,1)
Var % PrevValues(:,1) = (Var % Values+eFact*Var % PrevValues(:,1))/(1+eFact)
NewVals = (1+eFact)*Var % Values-eFact*Var % PrevValues(:,1)
Var % PrevValues(:,1) = Var % Values
Var % Values = NewVals
ELSE
Var % PrevValues(:,1) = Var % Values
END IF
END IF


IF( ExtrapolateInTime ) DEALLOCATE(NewVals)

IF( ListGetLogical( Solver % Values,'Nonlinear Timestepping', GotIt ) ) THEN
IF( Solver % DoneTime > 1 ) THEN
A => Solver % Matrix
Expand Down

0 comments on commit 1f5be3a

Please sign in to comment.