00001 #include "crsec3dbeam.h"
00002 #include "global.h"
00003 #include "stochdriver.h"
00004
00005 crsec3dbeam::crsec3dbeam (void)
00006 {
00007 a=0.0; ix=0.0; iy=0.0; iz=0.0; shearcoeffy=0.0; shearcoeffz=0.0; rho=0.0;
00008 allocv(3, lcs);
00009 fillv(0.0, lcs);
00010 }
00011 crsec3dbeam::~crsec3dbeam (void)
00012 {
00013
00014 }
00015
00016
00017
00018
00019
00020
00021 void crsec3dbeam::read (XFILE *in)
00022 {
00023 switch (Mp->tprob){
00024 case linear_statics:{
00025 xfscanf (in,"%lf %lf %lf %lf %lf %lf",&a,&ix,&iy,&iz,&shearcoeffy,&shearcoeffz);
00026 readv(in, lcs);
00027 break;
00028 }
00029 case eigen_dynamics:{
00030 xfscanf (in,"%lf %lf %lf %lf %lf %lf %lf",&a,&ix,&iy,&iz,&shearcoeffy,&shearcoeffz,&rho);
00031 readv(in, lcs);
00032 break;
00033 }
00034 case forced_dynamics:{
00035 xfscanf (in,"%lf %lf %lf %lf %lf %lf %lf",&a,&ix,&iy,&iz,&shearcoeffy,&shearcoeffz,&rho);
00036 readv(in, lcs);
00037 break;
00038 }
00039 case growing_mech_structure:
00040 case mech_timedependent_prob:{
00041 xfscanf (in,"%lf %lf %lf %lf %lf %lf",&a,&ix,&iy,&iz,&shearcoeffy,&shearcoeffz);
00042 readv(in, lcs);
00043 break;
00044 }
00045 case earth_pressure:{
00046 xfscanf (in,"%lf %lf %lf %lf %lf %lf",&a,&ix,&iy,&iz,&shearcoeffy,&shearcoeffz);
00047 readv(in, lcs);
00048 break;
00049 }
00050 default:{
00051 fprintf (stderr,"\n\n unknown problem type is required in function");
00052 fprintf (stderr,"\n crsec3dbeam::read (%s, line %d).\n",__FILE__,__LINE__);
00053 }
00054 }
00055 }
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065 void crsec3dbeam::print (FILE *out)
00066 {
00067 switch (Mp->tprob){
00068 case linear_statics:{
00069 fprintf (out,"\n %le %le %le %le %le %le",a,ix,iy,iz,shearcoeffy,shearcoeffz);
00070 printv(out, lcs);
00071 break;
00072 }
00073 case eigen_dynamics:{
00074 fprintf (out,"\n %le %le %le %le %le %le %le",a,ix,iy,iz,shearcoeffy,shearcoeffz,rho);
00075 printv(out, lcs);
00076 break;
00077 }
00078 case forced_dynamics:{
00079 fprintf (out,"\n %le %le %le %le %le %le %le",a,ix,iy,iz,shearcoeffy,shearcoeffz,rho);
00080 printv(out, lcs);
00081 break;
00082 }
00083 case growing_mech_structure:
00084 case mech_timedependent_prob:{
00085 fprintf (out,"\n %le %le %le %le %le %le",a,ix,iy,iz,shearcoeffy,shearcoeffz);
00086 printv(out, lcs);
00087 break;
00088 }
00089 case earth_pressure:{
00090 fprintf (out,"\n %le %le %le %le %le %le",a,ix,iy,iz,shearcoeffy,shearcoeffz);
00091 printv(out, lcs);
00092 break;
00093 }
00094 default:{
00095 fprintf (stderr,"\n\n unknown problem type is required in function");
00096 fprintf (stderr,"\n crsec3dbeam::read (%s, line %d).\n",__FILE__,__LINE__);
00097 }
00098 }
00099 }
00100
00101 double crsec3dbeam::give_area ()
00102 {
00103 return a;
00104 }
00105
00106 void crsec3dbeam::give_moments (double *i)
00107 {
00108 i[0]=ix;
00109 i[1]=iy;
00110 i[2]=iz;
00111 }
00112
00113 void crsec3dbeam::give_shearcoeff (double *sc)
00114 {
00115 sc[0]=shearcoeffy;
00116 sc[1]=shearcoeffz;
00117 }
00118
00119 double crsec3dbeam::give_density ()
00120 {
00121 return rho;
00122 }
00123
00124 void crsec3dbeam::changeparam (atsel &atcs,vector &val)
00125 {
00126 long i;
00127
00128 for (i=0;i<atcs.num;i++){
00129 switch (atcs.atrib[i]){
00130 case 0:{
00131 a=val[i];
00132 break;
00133 }
00134 case 1:{
00135 ix=val[i];
00136 break;
00137 }
00138 case 2:{
00139 iy=val[i];
00140 break;
00141 }
00142 case 3:{
00143 iz=val[i];
00144 break;
00145 }
00146 case 4:{
00147 shearcoeffy=val[i];
00148 break;
00149 }
00150 case 5:{
00151 shearcoeffz=val[i];
00152 break;
00153 }
00154 case 6:{
00155 rho=val[i];
00156 break;
00157 }
00158 default:{
00159 fprintf (stderr,"\n\n wrong number of atribute in function changeparam (%s, line %d).\n",__FILE__,__LINE__);
00160 }
00161 }
00162 }
00163 }