Passive condition
Posted: 25 Jan 2018, 14:12
Hello,
Dirichlet conditions for passive elements (set with the keywords VarName Condition Passive = Logical in Body Forces) are not taken into account anymore due to changes in how Dirichlet conditions are set.
Lines 4700 to 4728 of SolverUtils.F90 take care of the matrix entries for the passive elements and enforce the previous values as Dirichlet conditions; However, Dirichlet conditions in the body forces are set before this;
To my understanding, the lines 4714-4719
are a test to check if a node belonging to a passive element, is either:
- also belonging to an active element
- already had Dirichlet conditions applied within the body forces with the keyword VarName Condition Passive = Logical
However, this test will not work anymore in case Dirichlet conditions have been already set as the matrix values for dirichlet conditions are now applied after this.
I think that adding the test:
line 4722, just before
will solve the issue; but there is maybe other subtilities.
fabien
Dirichlet conditions for passive elements (set with the keywords VarName Condition Passive = Logical in Body Forces) are not taken into account anymore due to changes in how Dirichlet conditions are set.
Lines 4700 to 4728 of SolverUtils.F90 take care of the matrix entries for the passive elements and enforce the previous values as Dirichlet conditions; However, Dirichlet conditions in the body forces are set before this;
To my understanding, the lines 4714-4719
Code: Select all
s=0._dp
DO l=1,NDOFs
m=NDOFs*(k-1)+l
s=s+ABS(A % Values(A % Diag(m)))
END DO
IF (s>EPSILON(s)) CYCLE
- also belonging to an active element
- already had Dirichlet conditions applied within the body forces with the keyword VarName Condition Passive = Logical
However, this test will not work anymore in case Dirichlet conditions have been already set as the matrix values for dirichlet conditions are now applied after this.
I think that adding the test:
Code: Select all
IF (A % ConstrainedDOF(m)) CYCLE
Code: Select all
CALL SetSinglePoint(k,l,Solver % Variable % Values(m),.FALSE.)
fabien