PenaltyMP_FE::getResidual

For developers writing C++, Fortran, Java, code who have questions or comments to make.

Moderators: silvia, selimgunay, Moderators

Post Reply
denavit
Posts: 15
Joined: Mon Nov 13, 2006 1:33 pm
Location: University of Tennessee, Knoxville

PenaltyMP_FE::getResidual

Post by denavit »

Why does the multiple point penalty not return a redisual like the single point penalty does?

It seems to cause problems when I use the NormUnbalance test, like in the script below.

wipe
model BasicBuilder -ndm 1 -ndf 1
node 1 0.0
node 2 1.0
node 3 2.0
fix 1 1
uniaxialMaterial Elastic 1 1000
element truss 1 1 2 1.0 1
element truss 2 2 3 1.0 1
pattern Plain 1 Linear {
load 3 1
}

equalDOF 3 2 1
#rigidLink bar 2 3

system FullGeneral
constraints Penalty 1.0e12 1.0e12
#constraints Transformation
integrator LoadControl 1.0
test NormUnbalance 1.0e-6 10 4
#test NormDispIncr 1.0e-6 10 4
algorithm Newton
numberer Plain
analysis Static
set ok [analyze 1]
if {$ok == 0} {
puts "node 1 [nodeDisp 1 1]"
puts "node 2 [nodeDisp 3 1]"
puts "node 3 [nodeDisp 3 1]"
}


Which gave me these results where it seems like the force in the penalty constraint element is not included when forming the residual.

CTestNormUnbalance::test() - iteration: 1 current Norm: 1.41421 (max: 1e-006)
Norm deltaX: 0.00141421, Norm deltaR: 1.41421
deltaX: 1e-012 0.001 0.001
deltaR: 0 -1 1
CTestNormUnbalance::test() - iteration: 2 current Norm: 1.41421 (max: 1e-006)
Norm deltaX: 3.60555e-012, Norm deltaR: 1.41421
deltaX: 2e-021 2e-012 3e-012
deltaR: 0 -1 1
CTestNormUnbalance::test() - iteration: 3 current Norm: 1.41421 (max: 1e-006)
Norm deltaX: 1e-012, Norm deltaR: 1.41421
deltaX: -2.52819e-029 -2.52819e-020 1e-012
deltaR: 0 -1 1
CTestNormUnbalance::test() - iteration: 4 current Norm: 1.41421 (max: 1e-006)
Norm deltaX: 1e-012, Norm deltaR: 1.41421
deltaX: -2.42819e-029 -2.42819e-020 1e-012
deltaR: 0 -1 1
CTestNormUnbalance::test() - iteration: 5 current Norm: 1.41421 (max: 1e-006)
Norm deltaX: 1e-012, Norm deltaR: 1.41421
deltaX: -2.32819e-029 -2.32819e-020 1e-012
deltaR: 0 -1 1
CTestNormUnbalance::test() - iteration: 6 current Norm: 1.41421 (max: 1e-006)
Norm deltaX: 1e-012, Norm deltaR: 1.41421
deltaX: -2.22819e-029 -2.22819e-020 1e-012
deltaR: 0 -1 1
CTestNormUnbalance::test() - iteration: 7 current Norm: 1.41421 (max: 1e-006)
Norm deltaX: 1e-012, Norm deltaR: 1.41421
deltaX: -2.12819e-029 -2.12819e-020 1e-012
deltaR: 0 -1 1
CTestNormUnbalance::test() - iteration: 8 current Norm: 1.41421 (max: 1e-006)
Norm deltaX: 1e-012, Norm deltaR: 1.41421
deltaX: -2.02819e-029 -2.02819e-020 1e-012
deltaR: 0 -1 1
CTestNormUnbalance::test() - iteration: 9 current Norm: 1.41421 (max: 1e-006)
Norm deltaX: 1e-012, Norm deltaR: 1.41421
deltaX: -1.92819e-029 -1.92819e-020 1e-012
deltaR: 0 -1 1
CTestNormUnbalance::test() - iteration: 10 current Norm: 1.41421 (max: 1e-006)
Norm deltaX: 1e-012, Norm deltaR: 1.41421
deltaX: -1.82819e-029 -1.82819e-020 1e-012
deltaR: 0 -1 1
WARNING: CTestNormUnbalance::test() - failed to converge
after: 10 iterations
NewtnRaphson::solveCurrentStep() -the ConvergenceTest object failed in test()
StaticAnalysis::analyze() - the Algorithm failed at iteration: 0 with domain at load factor 1
OpenSees > analyze failed, returned: -3 error flag


Any help would be appreciated, thanks

Mark Denavit
fmk
Site Admin
Posts: 5884
Joined: Fri Jun 11, 2004 2:33 pm
Location: UC Berkeley
Contact:

Post by fmk »

the reason is that the constraint equation

Code: Select all

CD=Q
for the case of all OpenSees MP constraints has Q = 0.

the equi equation (see Cook, Melkus & Plesha for example)

Code: Select all

[K + alpha C^C]U = [R + alpha C^Q]
for our case becomes:

Code: Select all

[K + alpha C^C]U = [R]
there is 0 added to the RHS.

b.t.w. you cannot use NormUnbalance when using the Penalty method. it is emphasised in the manual.
Post Reply