00001 #include "crsec2dbeam.h"
00002 #include "global.h"
00003 #include "stochdriver.h"
00004
00005
00006
00007
00008
00009
00010
00011
00012 crsec2dbeam::crsec2dbeam (void)
00013 {
00014 a=0.0; iy=0.0; shearcoeff=0.0; rho=0.0; t=0.0;
00015 }
00016
00017
00018
00019
00020
00021
00022
00023
00024 crsec2dbeam::~crsec2dbeam (void)
00025 {
00026
00027 }
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 void crsec2dbeam::read (XFILE *in)
00042 {
00043 switch (Mp->tprob){
00044 case linear_statics:{
00045 xfscanf (in,"%lf %lf %lf",&a,&iy,&shearcoeff);
00046 break;
00047 }
00048 case mech_timedependent_prob:{
00049 xfscanf (in,"%lf %lf %lf",&a,&iy,&shearcoeff);
00050 break;
00051 }
00052 case mat_nonlinear_statics:{
00053 xfscanf (in,"%lf %lf %lf",&a,&iy,&shearcoeff);
00054 break;
00055 }
00056 case eigen_dynamics:{
00057 xfscanf (in,"%lf %lf %lf %lf",&a,&iy,&shearcoeff,&rho);
00058 break;
00059 }
00060 case forced_dynamics:{
00061 xfscanf (in,"%lf %lf %lf %lf",&a,&iy,&shearcoeff,&rho);
00062 break;
00063 }
00064 case earth_pressure:{
00065 xfscanf (in,"%lf %lf %lf",&a,&iy,&shearcoeff);
00066 break;
00067 }
00068 case layered_linear_statics:{
00069 xfscanf (in,"%lf %lf %lf %lf",&a,&iy,&shearcoeff,&t);
00070 break;
00071 }
00072 case growing_mech_structure:{
00073 xfscanf (in,"%lf %lf %lf",&a,&iy,&shearcoeff);
00074 break;
00075 }
00076 default:{
00077 print_err("unknown problem type is required", __FILE__, __LINE__, __func__);
00078 }
00079 }
00080 }
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092 void crsec2dbeam::print (FILE *out)
00093 {
00094 switch (Mp->tprob){
00095 case linear_statics:{
00096 fprintf (out,"\n %le %le %le",a,iy,shearcoeff);
00097 break;
00098 }
00099 case mech_timedependent_prob:{
00100 fprintf (out,"\n %le %le %le",a,iy,shearcoeff);
00101 break;
00102 }
00103 case mat_nonlinear_statics:{
00104 fprintf (out,"\n %le %le %le",a,iy,shearcoeff);
00105 break;
00106 }
00107 case eigen_dynamics:{
00108 fprintf (out,"\n %le %le %le %le",a,iy,shearcoeff,rho);
00109 break;
00110 }
00111 case forced_dynamics:{
00112 fprintf (out,"\n %le %le %le %le",a,iy,shearcoeff,rho);
00113 break;
00114 }
00115 case earth_pressure:{
00116 fprintf (out,"\n %le %le %le",a,iy,shearcoeff);
00117 break;
00118 }
00119 case layered_linear_statics:{
00120 fprintf (out,"\n %le %le %le %le",a,iy,shearcoeff,t);
00121 break;
00122 }
00123 case growing_mech_structure:{
00124 fprintf (out,"\n %le %le %le",a,iy,shearcoeff);
00125 break;
00126 }
00127 default:{
00128 print_err("unknown problem type is required", __FILE__, __LINE__, __func__);
00129 }
00130 }
00131 }
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142 double crsec2dbeam::give_area ()
00143 {
00144 return a;
00145 }
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158 void crsec2dbeam::give_moments (double *i)
00159 {
00160 i[0]=iy;
00161 }
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174 void crsec2dbeam::give_shearcoeff (double *sc)
00175 {
00176 sc[0]=shearcoeff;
00177 }
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188 double crsec2dbeam::give_density ()
00189 {
00190 return rho;
00191 }
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206 void crsec2dbeam::changeparam (atsel &atcs,vector &val)
00207 {
00208 long i;
00209
00210 for (i=0;i<atcs.num;i++){
00211 switch (atcs.atrib[i]){
00212 case 0:{
00213 a=val[i];
00214 break;
00215 }
00216 case 1:{
00217 iy=val[i];
00218 break;
00219 }
00220 case 2:{
00221 shearcoeff=val[i];
00222 break;
00223 }
00224 case 3:{
00225 rho=val[i];
00226 break;
00227 }
00228 default:
00229 print_err("wrong number of atribute", __FILE__, __LINE__, __func__);
00230 }
00231 }
00232 }