The selection of alpha in penalty method

Forum for OpenSees users to post questions, comments, etc. on the use of the OpenSees interpreter, OpenSees.exe

Moderators: silvia, selimgunay, Moderators

Post Reply
Guest

The selection of alpha in penalty method

Post by Guest » Tue Mar 08, 2005 6:18 pm

I found the result is kind of sensitive to the alpha value in penalty method. Any suggestions? Thanks a lot.

silvia
Posts: 3909
Joined: Tue Jan 11, 2005 7:44 am
Location: Degenkolb Engineers
Contact:

Post by silvia » Wed Mar 09, 2005 12:18 pm

this is what i put in the manual, which I got from the cook book:
"Guideline for choice of alpha: If computer words carry approximately p decimal digits, experience has shown that alpha should not exceed 10^(p/2)" (cook)
Silvia Mazzoni, PhD
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104

Boris
Posts: 95
Joined: Mon Jun 14, 2004 3:57 pm
Location: UC Davis

machine epsilon

Post by Boris » Fri Mar 11, 2005 10:48 am

Hello There,

even less than sqrt(1/macheps) is probably more advisable,

For x86 based machines (intel, amd...) all three floating precissions (float, double and long double) get promoted to long double, which has machine epsilon (machine precission) of about 1.08420217248550443401e-19 while they should actually be (from float.h as specified in standard include files):

#define FLT_EPSILON 1.19209290e-07F
#define DBL_EPSILON 2.2204460492503131e-16
#define LDBL_EPSILON 1.08420217248550443401e-19L
(see more in IEEE standard 754 on floating point numbers)

You can test some of those if you look into math_tst.cpp in SRC/nDarray in OpenSees source repository...


A book by Dennis and Schnabel:

@book{ Schnabel83,
author = { Dennis, Jr., J. E. and
Schnabel, Robert B. },
year = { 1983 },
title = { Numerical Methods for Unconstrained Optimization
and Nonlinear Equations },
publisher = { Prentice Hall , Engelwood Cliffs, New Jersey 07632. },
note = { },
napomena = { local CS01 ; QA 402.5.D44 1983 ISBN 0--13-627216-9 },
}


has some good suggestions what to do so that the system is still solvable with decent accuracy.

Simply put it:
Sqrt[1.08420217248550443401e-19] =
3.2927225399135962334e-10 or actually 1 over that
3.0370004999760496924e9

is too large for penalty spring so you might want to trim couple orders from that, so you can for example use machine precission to the power of 1/3 so that you get a penalty spring stiffness of about 10^6 to 10^7...

Make a simple example and play with it...

Boris

Post Reply