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

📄 elmt_library.c

📁 有限元程序
💻 C
📖 第 1 页 / 共 2 页
字号:
      if(sap->Iyy.dimen != NULL)         UnitsCopy( frame->eattr[n-1].work_section[1].dimen, sap->Iyy.dimen );      if(sap->Izz.dimen != NULL)         UnitsCopy( frame->eattr[n-1].work_section[2].dimen, sap->Izz.dimen );      if(sap->Ixy.dimen != NULL)         UnitsCopy( frame->eattr[n-1].work_section[3].dimen, sap->Ixy.dimen );      if(sap->Ixz.dimen != NULL)         UnitsCopy( frame->eattr[n-1].work_section[4].dimen, sap->Ixz.dimen );      if(sap->Iyz.dimen != NULL)         UnitsCopy( frame->eattr[n-1].work_section[5].dimen, sap->Iyz.dimen );      if(sap->weight.dimen != NULL)         UnitsCopy( frame->eattr[n-1].work_section[6].dimen, sap->weight.dimen );      if(sap->bf.dimen != NULL)         UnitsCopy( frame->eattr[n-1].work_section[7].dimen, sap->bf.dimen );      if(sap->tf.dimen != NULL)         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 );      ZeroUnits( frame->eattr[n-1].work_section[16].dimen );      break;      case OFF:      break;      default:      break;    }    /* store hash table data to frame */    if( !(strcmp(eap->elmt_type, "FIBER_2D"))  || !(strcmp(eap->elmt_type, "FIBER_3D"))     ||  !(strcmp(eap->elmt_type, "FIBER_2DS")) || !(strcmp(eap->elmt_type, "FIBER_3DS")) ) {       if( !(strcmp(eap->elmt_type, "FIBER_2D")) || !(strcmp(eap->elmt_type, "FIBER_3D")) ) {          fep->no_shear = 1;  /* global shear spring for each element in one direction */          total_fiber = fep->no_fiber + (frame->no_dimen-1)*fep->no_shear;          frame->eattr[n-1].work_fiber = (FIBER_ELMT *)MyCalloc(1,sizeof(FIBER_ELMT));          frame->eattr[n-1].work_fiber->no_fiber = fep->no_fiber;          frame->eattr[n-1].work_fiber->no_shear = fep->no_shear;          frame->eattr[n-1].work_fiber->fiber =              (FIBER_ATTR *)MyCalloc(total_fiber, sizeof(FIBER_ATTR));          for( i=0 ; i < total_fiber ; ++i ) {             if( i < fep->no_fiber ) {  /* flexual fibers */                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;                frame->eattr[n-1].work_fiber->fiber[i].Gs.value = 0.0;                frame->eattr[n-1].work_fiber->fiber[i].Gt.value = 0.0;                frame->eattr[n-1].work_fiber->fiber[i].fv.value = 0.0;             }             else {  /* shear spring */                frame->eattr[n-1].work_fiber->fiber[i].y.value  = 0.0;                frame->eattr[n-1].work_fiber->fiber[i].z.value  = 0.0;                frame->eattr[n-1].work_fiber->fiber[i].Gs.value = 0.0;                frame->eattr[n-1].work_fiber->fiber[i].Gt.value = 0.0;                frame->eattr[n-1].work_fiber->fiber[i].fv.value = 0.0;                if( sap->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 / sap->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) */                   if( map->E.value <= 0.0 )                      frame->eattr[n-1].work_fiber->fiber[i].Es.value                       = frame->eattr[n-1].work_fiber->fiber[0].Es.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->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 */                   if( map->fy.value <= 0.0 )                      frame->eattr[n-1].work_fiber->fiber[i].fy.value                       = frame->eattr[n-1].work_fiber->fiber[0].fy.value;                   else                      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) );                frame->eattr[n-1].work_fiber->fiber[i].Gs.dimen = (DIMENSIONS *) NULL;                frame->eattr[n-1].work_fiber->fiber[i].Gt.dimen = (DIMENSIONS *) NULL;                frame->eattr[n-1].work_fiber->fiber[i].fv.dimen = (DIMENSIONS *) NULL;                if( i < fep->no_fiber ) {  /* flexual fibers */                   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 {  /* shear spring */                   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 )                      if( map->E.value <= 0.0 )                         UnitsCopy( frame->eattr[n-1].work_fiber->fiber[i].Es.dimen,                                    frame->eattr[n-1].work_fiber->fiber[0].Es.dimen );                      else                         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.dimen );                   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 )                      if( map->fy.value <= 0.0 )                         UnitsCopy( frame->eattr[n-1].work_fiber->fiber[i].fy.dimen,                                    frame->eattr[n-1].work_fiber->fiber[0].fy.dimen );                      else                         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<total_fiber */       } /* FIBER_2D and FIBER_3D */       else {  /* FIBER_2DS and FIBER_3DS */          fep->no_shear = fep->no_fiber;  /* individual shear spring for each fiber in one direction */          frame->eattr[n-1].work_fiber = (FIBER_ELMT *)MyCalloc(1,sizeof(FIBER_ELMT));          frame->eattr[n-1].work_fiber->no_fiber = fep->no_fiber;          frame->eattr[n-1].work_fiber->no_shear = fep->no_shear;          frame->eattr[n-1].work_fiber->fiber =              (FIBER_ATTR *)MyCalloc(fep->no_fiber,sizeof(FIBER_ATTR));          for( i=0 ; i < fep->no_fiber ; ++i ) {             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;             frame->eattr[n-1].work_fiber->fiber[i].Gs.value = fep->fiber[i].Gs.value;             frame->eattr[n-1].work_fiber->fiber[i].Gt.value = fep->fiber[i].Gt.value;             frame->eattr[n-1].work_fiber->fiber[i].fv.value = fep->fiber[i].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) );                frame->eattr[n-1].work_fiber->fiber[i].Gs.dimen                 = (DIMENSIONS *)MyCalloc( 1, sizeof(DIMENSIONS) );                frame->eattr[n-1].work_fiber->fiber[i].Gt.dimen                 = (DIMENSIONS *)MyCalloc( 1, sizeof(DIMENSIONS) );                frame->eattr[n-1].work_fiber->fiber[i].fv.dimen                 = (DIMENSIONS *)MyCalloc( 1, sizeof(DIMENSIONS) );                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 );                UnitsCopy( frame->eattr[n-1].work_fiber->fiber[i].Gs.dimen, fep->fiber[i].Gs.dimen );                UnitsCopy( frame->eattr[n-1].work_fiber->fiber[i].Gt.dimen, fep->fiber[i].Gt.dimen );                UnitsCopy( frame->eattr[n-1].work_fiber->fiber[i].fv.dimen, fep->fiber[i].fv.dimen );             } /* UNIT_SWITCH == ON */          } /* i=0, i<fep->no_fiber */       } /* FIBER_2DS and FIBER_3DS */    } /* 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}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -