📄 fe_profile.c
字号:
printf("Enter Assign_p_Array() : elmt = %4d : task = %4d\n", elmt_no, task);#endif UNITS_SWITCH = CheckUnits(); slp = lookup("InPlaneIntegPts"); /* number of integration pts in plane/surface */ if(slp == NULL ){ iInPlaneIntegPts = UNIT_IN_PLANE_INTEG_PTS; /* 2x2 as default */ } else { iInPlaneIntegPts = (int) slp->u.q->value; } slp = lookup("ThicknessIntegPts"); /* number of integration pts in thickness direction*/ if(slp == NULL){ iThicknessIntegPts = UNIT_INTEG_PTS; /* 2 as default */ } else { iThicknessIntegPts = (int) slp->u.q->value; } iNO_INTEG_pts = iInPlaneIntegPts*iThicknessIntegPts; slp = lookup("GaussIntegPts"); /* number of integration pts in thickness direction*/ if(slp == NULL){ p->integ_ptr->integ_pts = UNIT_INTEG_PTS; /* 2 as default */ } else { p->integ_ptr->integ_pts = (int) slp->u.q->value; } el = &frp->element[elmt_no-1]; /* element ptr */ elmt_attr_no = el->elmt_attr_no; eap = &frp->eattr[elmt_attr_no -1]; p->elmt_state = el->esp->state; for (i = 0; i <= NO_ELEMENTS_IN_LIBRARY; i++) { if(!strcmp(elmt_library[i].name, eap->elmt_type)) { n = i; break; } } if(task != PROPTY) { if(p->elmt_no != elmt_no) { /* check if already values assigned */ p->elmt_no = elmt_no; p->elmt_attr_no = elmt_attr_no; p->dof_per_node = elmt_library[n].no_dof; p->no_dimen = elmt_library[n].no_dimen; p->elmt_type = elmt_library[n].name; p->nodes_per_elmt = (int) MIN(frp->no_nodes_per_elmt, elmt_library[n].no_node_per_elmt); p->size_of_stiff = p->nodes_per_elmt* p->dof_per_node; free((char *) p->material_name); p->material_name = SaveString( frp->eattr[elmt_attr_no-1].material ); /* p->work_section[] = working arrary of section properties for element */ /* p->work_material[] = working arrary of material properties for element */ for(i = 1; i <= UNIT_MATERIAL_ATTR; i++) { if( eap->work_material[i-1].value != 0 ) { p->work_material[i-1].value = eap->work_material[i-1].value; if( UNITS_SWITCH == ON ) UnitsCopy( p->work_material[i-1].dimen, eap->work_material[i-1].dimen ); } } for(i = 1; i <= UNIT_SECTION_ATTR; i++) { if( eap->work_section[i-1].value != 0 ) { p->work_section[i-1].value = eap->work_section[i-1].value; if( UNITS_SWITCH == ON ) UnitsCopy( p->work_section[i-1].dimen, eap->work_section[i-1].dimen ); } } if(el->LC_ptr->name != (char *)NULL){ free((char *) p->LC_ptr->name); p->LC_ptr->name = SaveString(el->LC_ptr->name); p->LC_ptr->n = el->LC_ptr->n; p->LC_ptr->alpha = el->LC_ptr->alpha; p->LC_ptr->beta = el->LC_ptr->beta; } else{ free((char *) p->LC_ptr->name); p->LC_ptr->name = (char *)NULL; p->LC_ptr->n = 0.0; p->LC_ptr->alpha = 0.0; p->LC_ptr->beta = 0.0; } p->LC_ptr->ialph = el->LC_ptr->ialph; p->LC_ptr->pen = el->LC_ptr->pen; p->LC_ptr->load[0] = el->LC_ptr->load[0]; p->LC_ptr->load[1] = el->LC_ptr->load[1]; p->LC_ptr->load[2] = el->LC_ptr->load[2]; p->LC_ptr->load[3] = el->LC_ptr->load[3]; p->LC_ptr->load[4] = el->LC_ptr->load[4]; p->LC_ptr->load[5] = el->LC_ptr->load[5]; for(j = 1; j <= iNO_INTEG_pts; j++) { p->LC_ptr->R[j-1] = el->LC_ptr->R[j-1]; p->LC_ptr->H[j-1] = el->LC_ptr->H[j-1]; for(i = 1; i <= 6; i++) p->LC_ptr->back_stress[i-1][j-1] = el->LC_ptr->back_stress[i-1][j-1]; } } }/* * ================================================================== * Check Allocation of elmt arrays & load values : depends on 'task' * ================================================================== */ if(p->size_of_stiff > max_size_of_stiff) { /* Stiffness Matrix */ MatrixFreeIndirect(p->stiff); p->stiff = MatrixAllocIndirect("stiff/mass",DOUBLE_ARRAY, p->size_of_stiff, p->size_of_stiff); if(UNITS_SWITCH == ON ) { /* Applied Nodal Loads */ for( i=1 ; i <= max_size_of_stiff ; i++ ) { free((char *) p->nodal_loads[i-1].dimen->units_name); free((char *) p->nodal_loads[i-1].dimen); } } free((char *) p->nodal_loads); p->nodal_loads = (QUANTITY *) MyCalloc(p->size_of_stiff, sizeof(QUANTITY)); if( UNITS_SWITCH == ON ) { for (i = 1; i <= p->size_of_stiff; i++) p->nodal_loads[i-1].dimen =(DIMENSIONS *) MyCalloc(1,sizeof(DIMENSIONS)); } MatrixFreeIndirect( p->equiv_nodal_load ); p->equiv_nodal_load = MatrixAllocIndirect("equiv_nodal_loads", DOUBLE_ARRAY,p->size_of_stiff,1); max_size_of_stiff = p->size_of_stiff; } if( p->nodes_per_elmt > max_nodes_per_elmt ) { if(p->no_dimen > max_no_dimen ) { for(i=1 ; i<=max_no_dimen ; i++ ) { if(UNITS_SWITCH == ON ) { for(j=1 ; j<= max_nodes_per_elmt ; j++ ) { free((char *) p->coord[i-1][j-1].dimen->units_name); free((char *) p->coord[i-1][j-1].dimen); free((char *) p->nodal_traction[i-1][j-1].dimen->units_name); free((char *) p->nodal_traction[i-1][j-1].dimen); } } free((char *) p->coord[i-1]); free((char *) p->nodal_traction[i-1]); } free((char *) p->coord); free((char *) p->nodal_traction); p->coord = (QUANTITY **) MyCalloc(p->no_dimen, sizeof(QUANTITY *)); p->nodal_traction =(QUANTITY **) MyCalloc(p->no_dimen,sizeof(QUANTITY *)); for(i = 1; i <= p->no_dimen; i++) { p->coord[i-1] = (QUANTITY *) MyCalloc(p->nodes_per_elmt, sizeof(QUANTITY)); p->nodal_traction[i-1] = (QUANTITY *) MyCalloc(p->nodes_per_elmt, sizeof(QUANTITY)); if(UNITS_SWITCH == ON ) { for(j = 1; j <= p->nodes_per_elmt; j++) { p->coord[i-1][j-1].dimen = (DIMENSIONS *) MyCalloc(1,sizeof(DIMENSIONS)); p->nodal_traction[i-1][j-1].dimen = (DIMENSIONS *) MyCalloc(1,sizeof(DIMENSIONS)); } } } max_no_dimen = p->no_dimen; } else { /* p->no_dimen <= max_no_dimen && */ /* p->nodes_per_elmt > max_nodes_per_elmt */ for( i=1 ; i<=max_no_dimen ; i++ ) { if(UNITS_SWITCH == ON ) { for(j=1 ; j<= max_nodes_per_elmt ; j++ ) { free((char *) p->coord[i-1][j-1].dimen->units_name); free((char *) p->coord[i-1][j-1].dimen); free((char *) p->nodal_traction[i-1][j-1].dimen->units_name); free((char *) p->nodal_traction[i-1][j-1].dimen); } } free((char *) p->coord[i-1]); free((char *) p->nodal_traction[i-1]); } for(i = 1; i <= max_no_dimen; i++) { p->coord[i-1] = (QUANTITY *) MyCalloc(p->nodes_per_elmt, sizeof(QUANTITY)); p->nodal_traction[i-1] = (QUANTITY *) MyCalloc(p->nodes_per_elmt, sizeof(QUANTITY)); if( UNITS_SWITCH == ON ) { for (j = 1; j <= p->nodes_per_elmt; j++) { p->coord[i-1][j-1].dimen = (DIMENSIONS *) MyCalloc(1,sizeof(DIMENSIONS)); p->nodal_traction[i-1][j-1].dimen = (DIMENSIONS *) MyCalloc(1,sizeof(DIMENSIONS)); } } } } if( p->dof_per_node > max_no_dof ) { MatrixFreeIndirect( p->displ ); p->displ = MatrixAllocIndirect("displacement", DOUBLE_ARRAY, p->dof_per_node, p->nodes_per_elmt); for(i=1 ; i<=max_no_dof ; i++ ) { if(UNITS_SWITCH == ON ) { for(j=1 ; j<= max_nodes_per_elmt ; j++ ) { free((char *) p->nodal_body_force[i-1][j-1].dimen->units_name); free((char *) p->nodal_body_force[i-1][j-1].dimen); } } free((char *) p->nodal_body_force[i-1]); } free((char *) p->nodal_body_force); p->nodal_body_force = (QUANTITY **) MyCalloc(p->dof_per_node, sizeof(QUANTITY *)); for(i = 1; i <= p->dof_per_node; i++) { p->nodal_body_force[i-1] = (QUANTITY *) MyCalloc(p->nodes_per_elmt, sizeof(QUANTITY)); if( UNITS_SWITCH == ON ) { for(j = 1; j <= p->nodes_per_elmt; j++) p->nodal_body_force[i-1][j-1].dimen = (DIMENSIONS *) MyCalloc(1,sizeof(DIMENSIONS)); } } MatrixFreeIndirectDouble( p->nodal_init_strain, max_no_dof ); p->nodal_init_strain = (double **) MatrixAllocIndirectDouble(p->dof_per_node, p->nodes_per_elmt); for( i=1 ; i<=max_no_dof ; i++ ) { if(UNITS_SWITCH == ON ) { for(j=1 ; j<= max_nodes_per_elmt ; j++ ) { free((char *)p->nodal_init_stress[i-1][j-1].dimen->units_name); free((char *)p->nodal_init_stress[i-1][j-1].dimen); } } free((char *) p->nodal_init_stress[i-1]); } free((char *) p->nodal_init_stress); p->nodal_init_stress = (QUANTITY **) MyCalloc(p->dof_per_node, sizeof(QUANTITY *)); for(i = 1; i <= p->dof_per_node; i++) { p->nodal_init_stress[i-1] = (QUANTITY *) MyCalloc(p->nodes_per_elmt, sizeof(QUANTITY)); if( UNITS_SWITCH == ON ) { for(j = 1; j <= p->nodes_per_elmt; j++) p->nodal_init_stress[i-1][j-1].dimen = (DIMENSIONS *) MyCalloc(1,sizeof(DIMENSIONS)); } } if( UNITS_SWITCH == ON ) { for( j=1 ; j<= max_no_dof ; j++ ) { free((char *) p->nodal_temp[j-1].dimen->units_name); free((char *) p->nodal_temp[j-1].dimen); } } free((char *) p->nodal_temp); p->nodal_temp = (QUANTITY *) MyCalloc(p->dof_per_node, sizeof(QUANTITY)); if( UNITS_SWITCH == ON ) { for (i = 1; i <= p->dof_per_node; i++) p->nodal_temp[i-1].dimen = (DIMENSIONS *) MyCalloc(1,sizeof(DIMENSIONS)); } max_no_dof = p->dof_per_node; } else { /* p->dof_per_node <= max_no_dof && */ /* p->nodes_per_elmt > max_nodes_per_elmt */ MatrixFreeIndirect( p->displ ); p->displ = MatrixAllocIndirect("displacement", DOUBLE_ARRAY, max_no_dof, p->nodes_per_elmt); for( i=1 ; i <= max_no_dof ; i++ ) { if( UNITS_SWITCH == ON ) { for( j=1 ; j<= max_nodes_per_elmt ; j++ ) { free((char *)p->nodal_body_force[i-1][j-1].dimen->units_name); free((char *)p->nodal_body_force[i-1][j-1].dimen); } } free((char *) p->nodal_body_force[i-1]); } for (i = 1; i <= max_no_dof; i++) { p->nodal_body_force[i-1] = (QUANTITY *) MyCalloc(p->nodes_per_elmt, sizeof(QUANTITY)); if( UNITS_SWITCH == ON ) { for(j = 1; j <= p->nodes_per_elmt; j++) p->nodal_body_force[i-1][j-1].dimen = (DIMENSIONS *) MyCalloc(1,sizeof(DIMENSIONS)); } } for( i=1; i <= max_no_dof; i++ ) { free((char *) p->nodal_init_strain[i-1] ); p->nodal_init_strain[i-1] = (double *)MyCalloc(p->nodes_per_elmt, sizeof(double)); } for( i=1 ; i<=max_no_dof ; i++ ) { if( UNITS_SWITCH == ON ) { for( j=1 ; j<= max_nodes_per_elmt ; j++ ) { free((char *)p->nodal_init_stress[i-1][j-1].dimen->units_name); free((char *)p->nodal_init_stress[i-1][j-1].dimen); } } free((char *) p->nodal_init_stress[i-1]); } for(i = 1; i <= max_no_dof; i++) { p->nodal_init_stress[i-1] = (QUANTITY *) MyCalloc(p->nodes_per_elmt, sizeof(QUANTITY)); if( UNITS_SWITCH == ON ) { for(j = 1; j <= p->nodes_per_elmt; j++) p->nodal_init_stress[i-1][j-1].dimen = (DIMENSIONS *) MyCalloc(1,sizeof(DIMENSIONS)); } } } free((char *) p->node_connect); p->node_connect = iVectorAlloc(p->nodes_per_elmt); max_nodes_per_elmt = p->nodes_per_elmt; } else { /* p->nodes_per_elmt <= max_nodes_per_elmt */ if( p->no_dimen > max_no_dimen ) { for( i=1 ; i<=max_no_dimen ; i++ ) { if( UNITS_SWITCH == ON ) { for( j=1 ; j<= max_nodes_per_elmt ; j++ ) { free((char *) p->coord[i-1][j-1].dimen->units_name);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -