📄 elmt_library.c
字号:
UnitsCopy( frame->eattr[n-1].work_section[8].dimen, sap->tf.dimen ); if(sap->depth.dimen != NULL) UnitsCopy( frame->eattr[n-1].work_section[9].dimen, sap->depth.dimen ); if(sap->area.value != 0.0) { if(sap->area.dimen != NULL) UnitsCopy( frame->eattr[n-1].work_section[10].dimen, sap->area.dimen ); } else { if(sap->depth.dimen != NULL && sap->bf.dimen !=NULL) UnitsMultRep( frame->eattr[n-1].work_section[10].dimen, sap->bf.dimen , sap->depth.dimen ); else if(sap->depth.dimen != NULL && sap->width.dimen !=NULL) UnitsMultRep( frame->eattr[n-1].work_section[10].dimen, sap->width.dimen , sap->depth.dimen ); } if(sap->plate_thickness.dimen != NULL) UnitsCopy( frame->eattr[n-1].work_section[11].dimen, sap->plate_thickness.dimen ); if(sap->tor_const.dimen != NULL) UnitsCopy( frame->eattr[n-1].work_section[12].dimen, sap->tor_const.dimen ); if(sap->rT.dimen != NULL) UnitsCopy( frame->eattr[n-1].work_section[13].dimen, sap->rT.dimen ); if(sap->width.dimen != NULL) UnitsCopy( frame->eattr[n-1].work_section[14].dimen, sap->width.dimen ); if(sap->tw.dimen != NULL) UnitsCopy( frame->eattr[n-1].work_section[15].dimen, sap->tw.dimen ); break; case OFF: break; default: break; } if( !(strcmp(eap->elmt_type, "FIBER")) ) { /* store hash table data to frame */ frame->eattr[n-1].work_fiber = (FIBER_ELMT *)MyCalloc(1,sizeof(FIBER_ELMT)); frame->eattr[n-1].work_fiber->no_fiber = fep->no_fiber+2; /* default: 2 shear spring */ frame->eattr[n-1].work_fiber->fiber = (FIBER_ATTR *)MyCalloc(fep->no_fiber+2,sizeof(FIBER_ATTR)); for( i=0 ; i < fep->no_fiber+2 ; ++i ) { if( i < fep->no_fiber ) { frame->eattr[n-1].work_fiber->fiber[i].y.value = fep->fiber[i].y.value; frame->eattr[n-1].work_fiber->fiber[i].z.value = fep->fiber[i].z.value; frame->eattr[n-1].work_fiber->fiber[i].area.value = fep->fiber[i].area.value; frame->eattr[n-1].work_fiber->fiber[i].Es.value = fep->fiber[i].Es.value; frame->eattr[n-1].work_fiber->fiber[i].Et.value = fep->fiber[i].Et.value; frame->eattr[n-1].work_fiber->fiber[i].fy.value = fep->fiber[i].fy.value; } else { frame->eattr[n-1].work_fiber->fiber[i].y.value = 0.0; frame->eattr[n-1].work_fiber->fiber[i].z.value = 0.0; if( map->ks <= 0.0 ) /* default shear correction factor ks = 1.2 */ frame->eattr[n-1].work_fiber->fiber[i].area.value = frame->eattr[n-1].work_section[10].value / 1.2; else frame->eattr[n-1].work_fiber->fiber[i].area.value = frame->eattr[n-1].work_section[10].value / map->ks; if( map->nu <= 0.0 ) /* default nu = 0.3 */ frame->eattr[n-1].work_material[4].value = 0.3; if( map->G.value <= 0.0 ) /* G = E/2/(1+nu) */ frame->eattr[n-1].work_fiber->fiber[i].Es.value = map->E.value/2.0/(1.0+frame->eattr[n-1].work_material[4].value); else frame->eattr[n-1].work_fiber->fiber[i].Es.value = map->G.value; if( map->Gt.value <= 0.0 ) { if( map->ET.value <= 0.0 ) /* Et not exist, assume always linear, Et=Es */ frame->eattr[n-1].work_fiber->fiber[i].Et.value = frame->eattr[n-1].work_fiber->fiber[i].Es.value; else frame->eattr[n-1].work_fiber->fiber[i].Et.value = map->ET.value/2.0/(1.0+frame->eattr[n-1].work_material[4].value); } else frame->eattr[n-1].work_fiber->fiber[i].Et.value = map->Gt.value; if( map->fv.value <= 0.0 ) /* use fy as shear yielding stress */ frame->eattr[n-1].work_fiber->fiber[i].fy.value = map->fy.value; else frame->eattr[n-1].work_fiber->fiber[i].fy.value = map->fv.value; } if(UNITS_SWITCH == ON) { frame->eattr[n-1].work_fiber->fiber[i].y.dimen = (DIMENSIONS *)MyCalloc( 1, sizeof(DIMENSIONS) ); frame->eattr[n-1].work_fiber->fiber[i].z.dimen = (DIMENSIONS *)MyCalloc( 1, sizeof(DIMENSIONS) ); frame->eattr[n-1].work_fiber->fiber[i].area.dimen = (DIMENSIONS *)MyCalloc( 1, sizeof(DIMENSIONS) ); frame->eattr[n-1].work_fiber->fiber[i].Es.dimen = (DIMENSIONS *)MyCalloc( 1, sizeof(DIMENSIONS) ); frame->eattr[n-1].work_fiber->fiber[i].Et.dimen = (DIMENSIONS *)MyCalloc( 1, sizeof(DIMENSIONS) ); frame->eattr[n-1].work_fiber->fiber[i].fy.dimen = (DIMENSIONS *)MyCalloc( 1, sizeof(DIMENSIONS) ); if( i < fep->no_fiber ) { UnitsCopy( frame->eattr[n-1].work_fiber->fiber[i].y.dimen, fep->fiber[i].y.dimen ); UnitsCopy( frame->eattr[n-1].work_fiber->fiber[i].z.dimen, fep->fiber[i].z.dimen ); /* UnitsCopy( frame->eattr[n-1].work_fiber->fiber[i].area.dimen, fep->fiber[i].area.dimen ); UnitsCopy( frame->eattr[n-1].work_fiber->fiber[i].Es.dimen, fep->fiber[i].Es.dimen ); UnitsCopy( frame->eattr[n-1].work_fiber->fiber[i].Et.dimen, fep->fiber[i].Et.dimen ); UnitsCopy( frame->eattr[n-1].work_fiber->fiber[i].fy.dimen, fep->fiber[i].fy.dimen ); */ } else { UnitsCopy( frame->eattr[n-1].work_fiber->fiber[i].y.dimen, fep->fiber[0].y.dimen ); UnitsCopy( frame->eattr[n-1].work_fiber->fiber[i].z.dimen, fep->fiber[0].z.dimen ); /* UnitsCopy( frame->eattr[n-1].work_fiber->fiber[i].area.dimen, frame->eattr[n-1].work_section[10].dimen ); if( map->G.value <= 0.0 ) UnitsCopy( frame->eattr[n-1].work_fiber->fiber[i].Es.dimen, map->E.dimen ); else UnitsCopy( frame->eattr[n-1].work_fiber->fiber[i].Es.dimen, map->G.value ); if( map->Gt.value <= 0.0 ) { if( map->ET.value <= 0.0 ) UnitsCopy( frame->eattr[n-1].work_fiber->fiber[i].Et.dimen, frame->eattr[n-1].work_fiber->fiber[i].Es.dimen ); else UnitsCopy( frame->eattr[n-1].work_fiber->fiber[i].Et.dimen, map->ET.dimen ); } else UnitsCopy( frame->eattr[n-1].work_fiber->fiber[i].Et.dimen, map->Gt.dimen ); if( map->fv.value <= 0.0 ) UnitsCopy( frame->eattr[n-1].work_fiber->fiber[i].fy.dimen, map->fy.dimen ); else UnitsCopy( frame->eattr[n-1].work_fiber->fiber[i].fy.dimen, map->fv.dimen ); */ } } /* UNIT_SWITCH == ON */ } /* i=0, i<fep->no_fiber+2 */ } /* eap->elmt_type == FIBER */ /* DOF of nodes in a elment */ FLAG = FALSE; for (i = 0; i <= NO_ELEMENTS_IN_LIBRARY ; i++) { if((elmt_library[i].name) != NULL && Streq(frame->eattr[n-1].elmt_type, elmt_library[i].name)) { no_dof = elmt_library[i].no_dof; FLAG = TRUE; break; } } if(FLAG == FALSE) { printf(">>FATAL ERROR: In assign_properties():\n"); printf(">> : In file elmt.h : elmemt type %s is not defined \n", frame->eattr[n-1].elmt_type); exit(1); } for(i = 1; i <= no_dof; i++) { frame->eattr[n-1].map_ldof_to_gdof[i-1] = eap->map_ldof_to_gdof[i-1]; } return(frame);#ifdef DEBUG printf("*** Leave assign_properties()\n");#endif}#ifdef __STDC__void print_property(EFRAME *frp, int i)#elsevoid print_property(frp, i)EFRAME *frp;int i; /* elmt_attr_no */#endif{int UNITS_SWITCH;ELEMENT_ATTR *eap;#ifdef DEBUG printf("*** Enter print_property()\n");#endif UNITS_SWITCH = CheckUnits(); eap = &frp->eattr[i-1]; if(frp->no_dof == 3 || frp->no_dof == 2) { printf(" "); printf(" : gdof [0] = %4d : gdof[1] = %4d : gdof[2] = %4d\n", eap->map_ldof_to_gdof[0], eap->map_ldof_to_gdof[1], eap->map_ldof_to_gdof[2]); } if(frp->no_dof == 6) { /* 3d analysis */ printf(" "); printf(" : dof-mapping : gdof[0] = %4d : gdof[1] = %4d : gdof[2] = %4d\n", eap->map_ldof_to_gdof[0], eap->map_ldof_to_gdof[1], eap->map_ldof_to_gdof[2]); printf(" "); printf(" gdof[3] = %4d : gdof[4] = %4d : gdof[5] = %4d\n", eap->map_ldof_to_gdof[3], eap->map_ldof_to_gdof[4], eap->map_ldof_to_gdof[5]); } switch(UNITS_SWITCH) { case ON: UnitsSimplify( eap->work_material[0].dimen ); UnitsSimplify( eap->work_material[2].dimen ); UnitsSimplify( eap->work_material[5].dimen ); UnitsSimplify( eap->work_section[2].dimen ); UnitsSimplify( eap->work_section[10].dimen ); if( eap->work_material[0].dimen->units_name != NULL ) { printf(" "); printf(" : Young's Modulus = E = %16.3e %s\n", eap->work_material[0].value/eap->work_material[0].dimen->scale_factor, eap->work_material[0].dimen->units_name); } if( eap->work_material[4].value != 0.0 ) { printf(" "); printf(" : Poisson's ratio = nu = %16.3e \n", eap->work_material[4].value); } if( eap->work_material[2].dimen->units_name != NULL ) { printf(" "); printf(" : Yielding Stress = fy = %16.3e %s\n", eap->work_material[2].value/eap->work_material[2].dimen->scale_factor, eap->work_material[2].dimen->units_name); } if( eap->work_material[5].dimen->units_name != NULL ) { printf(" "); printf(" : Density = %16.3e %s\n", eap->work_material[5].value/eap->work_material[5].dimen->scale_factor, eap->work_material[5].dimen->units_name); } if( eap->work_section[2].dimen->units_name != NULL ) { printf(" "); printf(" : Inertia Izz = %16.3e %s\n", eap->work_section[2].value/eap->work_section[2].dimen->scale_factor, eap->work_section[2].dimen->units_name); } if( eap->work_section[10].dimen->units_name != NULL ) { printf(" "); printf(" : Area = %16.3e %s\n", eap->work_section[10].value/eap->work_section[10].dimen->scale_factor, eap->work_section[10].dimen->units_name); } break; case OFF: printf(" "); printf(" : Young's Modulus = E = %16.3e\n", eap->work_material[0].value); printf(" "); printf(" : Yielding Stress = fy = %16.3e\n", eap->work_material[2].value); printf(" "); printf(" : Poisson's ratio = nu = %16.3e \n", eap->work_material[4].value); printf(" "); printf(" : Density = %16.3e\n", eap->work_material[5].value); printf(" "); printf(" : Inertia Izz = %16.3e\n", eap->work_section[2].value); printf(" "); printf(" : Area = %16.3e\n", eap->work_section[10].value); break; default: break; }#ifdef DEBUG printf("*** Leave print_property()\n");#endif}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -