00001 #ifndef ARCLENGTH_H
00002 #define ARCLENGTH_H
00003
00004
00005 #include "galias.h"
00006 #include "nonlinman.h"
00007 #include "gmatrix.h"
00008 #include "matrix.h"
00009 #include "vector.h"
00010 #include <stdio.h>
00011
00012
00013
00014
00015
00016
00017
00018 #define quadeqcoef_log() \
00019 {\
00020 fprintf (Out,"\n\n\n Check of quadratic equation");\
00021 fprintf (Out,"\n norfp %15.10le",norfp);\
00022 fprintf (Out,"\n norv %15.10le",norv);\
00023 fprintf (Out,"\n (ddr,v) %15.10le",norddrv);\
00024 fprintf (Out,"\n (ddr,ddr) %15.10le",norddr);\
00025 fprintf (Out,"\n dl %15.10le",dl);\
00026 fprintf (Out,"\n ddlambda %15.10le",ddlambda);\
00027 fprintf (Out,"\n psi %15.10le",psi);\
00028 fprintf (Out,"\n a2 %15.10le",a2);\
00029 fprintf (Out,"\n a1 %15.10le",a1);\
00030 fprintf (Out,"\n a0 %15.10le",a0);\
00031 fprintf (Out,"\n discrim %15.10le",a1*a1-4.0*a2*a0);\
00032 fprintf (Out,"\n\n");\
00033 }
00034
00035
00036
00037
00038
00039 double garclength(long lcid, nonlinman *nlman, double *ra, double *fa, double *fc, double *fp,
00040 double *flc, double *flp, long li, double ilambda, answertype outres);
00041
00042
00043 long assemble_stiffness_matrix (long lcid,long i,long j,long li);
00044
00045
00046 void seldofinit();
00047
00048
00049 double loadincr (double *fp, long n, double lambda, nonlinman *nlman);
00050
00051
00052 double displincr (double *dr1, double *dr2, long n, long lcid);
00053
00054
00055 double prdisplincr(long i, long lcid);
00056
00057
00058 void quadeqcoeff (double *ddr,double *v,long n,double ddlambda,double psi,double norfp,double dl,
00059 double &a0,double &a1,double &a2, long lcid);
00060
00061
00062 void determine_dlambda (double *ddr, double *u, double *v, double *ddrprev, long n,
00063 double ddlambda, double psi, double norfp, double dl,
00064 double &dlambda, long &stop, nonlinman *nlman, long lcid);
00065
00066
00067 void adapt_psi_coeff(long i, double ddlambda, double &ddlambda0, double &psi0, double &psi);
00068
00069 #endif