⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 elmt_library.c

📁 有限元分析源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
         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 + -