📄 fe_profile.c
字号:
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;
}
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++ ) {
if(p->nodal_init_stress[i-1][j-1].dimen != NULL &&
p->nodal_init_stress[i-1][j-1].dimen->units_name != NULL)
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;
}
}
switch (task) {
case PROPTY:
for(i = 1; i <= UNIT_SECTION_ATTR; i++) {
p->work_section[i-1].value
= frp->eattr[elmt_attr_no-1].work_section[i-1].value;
}
if(UNITS_SWITCH == ON ){
for(i = 1; i <= UNIT_SECTION_ATTR; i++)
UnitsCopy( p->work_section[i-1].dimen,
frp->eattr[elmt_attr_no-1].work_section[i-1].dimen );
}
for(i = 1; i <= UNIT_MATERIAL_ATTR; i++) {
p->work_material[i-1].value
= frp->eattr[elmt_attr_no-1].work_material[i-1].value;
if(UNITS_SWITCH == ON )
UnitsCopy( p->work_material[i-1].dimen,
frp->eattr[elmt_attr_no-1].work_material[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];
}
break;
case STIFF:
case MASS_MATRIX:
if(task == MASS_MATRIX)
for(i = 1;i <= p->size_of_stiff; i++) {
p->nodal_loads[i-1].value = 0.0;
if( UNITS_SWITCH == ON )
ZeroUnits( p->nodal_loads[i-1].dimen );
}
/* p->node_connect[] = list of nodal connectivities */
for(j = 1; j <= p->nodes_per_elmt;j++)
p->node_connect[j-1] = el->node_connect[j-1];
for(j = 1; j <= iNO_INTEG_pts; j++) {
p->effect_pl_strain[j-1] = el->rp->effect_pl_strain[j-1];
p->eff_pl_strain_incr[j-1] = 0.0;
for(i = 1; i <= 9; i++){
p->stress->uMatrix.daa[i-1][j-1]
= el->rp->stress->uMatrix.daa[i-1][j-1];
p->strain_pl->uMatrix.daa[i-1][j-1]
= el->rp->strain_pl->uMatrix.daa[i-1][j-1];
p->strain_pl_incr->uMatrix.daa[i-1][j-1]
= 0.0;
}
}
for(j = 1; j <= frp->no_nodes_per_elmt; j++) {
node_no = el->node_connect[j-1];
if(node_no != 0) {
for(i=1;i <= p->no_dimen; i++) {
p->coord[i-1][j-1].value
= frp->node[node_no -1].coord[i-1].value;
if(UNITS_SWITCH == ON )
UnitsCopy( p->coord[i-1][j-1].dimen,
frp->node[node_no -1].coord[i-1].dimen );
}
}
}
/* initialize and Transfer Element Displacements */
if( UNITS_SWITCH == ON ) {
for(i = 1; i <= p->dof_per_node; i++) {
ZeroUnits( &(p->displ->spRowUnits[i-1]) );
}
for(i = 1; i <= p->nodes_per_elmt; i++) {
ZeroUnits( &(p->displ->spColUnits[i-1]) );
}
}
for(i=1; i <= p->dof_per_node; i++) {
for(j=1; j <= p->nodes_per_elmt; j++) {
p->displ->uMatrix.daa[i-1][j-1] = el->rp->displ->uMatrix.daa[i-1][j-1];
p->displ_incr->uMatrix.daa[i-1][j-1] = 0.0;
}
}
break;
case LOAD_MATRIX:
case EQUIV_NODAL_LOAD:
for(i = 1; i <= p->size_of_stiff; i++)
p->nodal_loads[i-1].value = 0.0;
if(UNITS_SWITCH == ON ) {
for(i = 1; i <= p->size_of_stiff; i++) {
ZeroUnits( &(p->equiv_nodal_load->spRowUnits[i-1]) );
ZeroUnits( p->nodal_loads[i-1].dimen );
}
ZeroUnits( &(p->equiv_nodal_load->spColUnits[0]) );
}
dof_per_elmt = p->nodes_per_elmt*p->dof_per_node;
for(j = 1; j <= dof_per_elmt; j++) {
p->equiv_nodal_load->uMatrix.daa[j-1][0] = 0.0;
}
for(j = 1; j <= p->nodes_per_elmt; j++) {
p->nodal_temp[j-1].value = frp->eforces->elib_ptr[j-1].temp_change.value;
if(UNITS_SWITCH == ON )
UnitsCopy( p->nodal_temp[j-1].dimen,
frp->eforces->elib_ptr[j-1].temp_change.dimen );
for( i = 1; i <= p->no_dimen; i++) {
/*== subjected to change later ==*/
p->nodal_traction[i-1][j-1].value = 0.0;
if(UNITS_SWITCH == ON )
ZeroUnits( p->nodal_traction[i-1][j-1].dimen );
if(frp->eforces->elib_ptr[j-1].body_force != NULL) {
p->nodal_body_force[i-1][j-1].value
= frp->eforces->elib_ptr[j-1].body_force[i-1].value;
if( UNITS_SWITCH == ON )
UnitsCopy( p->nodal_body_force[i-1][j-1].dimen,
frp->eforces->elib_ptr[j-1].body_force[i-1].dimen );
}
else {
p->nodal_body_force[i-1][j-1].value = 0.0;
if(UNITS_SWITCH == ON )
ZeroUnits( p->nodal_body_force[i-1][j-1].dimen );
}
}
}
for(j = 1; j <= p->nodes_per_elmt; j++) {
for( i = 1; i <= p->dof_per_node; i++) {
if(frp->eforces->elib_ptr[j-1].init_strain != NULL)
p->nodal_init_strain[i-1][j-1]
= frp->eforces->elib_ptr[j-1].init_strain[i-1];
else
p->nodal_init_strain[i-1][j-1] = 0.0;
if(frp->eforces->elib_ptr[j-1].init_stress != NULL) {
p->nodal_init_stress[i-1][j-1].value
= frp->eforces->elib_ptr[j-1].init_stress[i-1].value;
if( UNITS_SWITCH == ON )
UnitsCopy( p->nodal_init_stress[i-1][j-1].dimen,
frp->eforces->elib_ptr[j-1].init_stress[i-1].dimen );
}
else {
p->nodal_init_stress[i-1][j-1].value = 0.0;
if(UNITS_SWITCH == ON )
ZeroUnits( p->nodal_init_stress[i-1][j-1].dimen );
}
}
}
for(j=1;j <= p->nodes_per_elmt;j++) {
node_no = el->node_connect[j-1];
if(node_no != 0){
for(i=1;i<=p->no_dimen;i++) {
p->coord[i-1][j-1].value
= frp->node[node_no -1].coord[i-1].value;
if( UNITS_SWITCH == ON )
UnitsCopy( p->coord[i-1][j-1].dimen,
frp->node[node_no -1].coord[i-1].dimen );
}
}
}
/* Assign the nodal load and stress in previous step to p->nodal Load */
for(k = 1; k <= p->size_of_stiff; k++)
p->nodal_loads[k-1].value = 0.0;
for(j = 1; j <= iNO_INTEG_pts; j++) {
p->effect_pl_strain[j-1] = el->rp->effect_pl_strain[j-1];
p->eff_pl_strain_incr[j-1] = 0.0;
for(i = 1; i <= 9; i++){
p->stress->uMatrix.daa[i-1][j-1]
= el->rp->stress->uMatrix.daa[i-1][j-1];
p->strain_pl->uMatrix.daa[i-1][j-1]
= el->rp->strain_pl->uMatrix.daa[i-1][j-1];
p->strain_pl_incr->uMatrix.daa[i-1][j-1]
= 0.0;
}
}
for(i=1; i <= p->dof_per_node; i++) {
for(j=1; j <= p->nodes_per_elmt; j++) {
p->displ->uMatrix.daa[i-1][j-1] = el->rp->displ->uMatrix.daa[i-1][j-1];
p->displ_incr->uMatrix.daa[i-1][j-1] = 0.0;
}
}
break;
case PRESSLD:
case STRESS_LOAD:
for(i=1;i<=p->size_of_stiff ;i++){
p->nodal_loads[i-1].value = 0.0;
if( UNITS_SWITCH == ON )
ZeroUnits( p->nodal_loads[i-1].dimen );
}
for(j = 1; j <= iNO_INTEG_pts; j++){
p->effect_pl_strain[j-1] = el->rp->effect_pl_strain[j-1];
p->eff_pl_strain_incr[j-1] = 0.0;
for(i = 1; i <= 9; i++){
p->stress->uMatrix.daa[i-1][j-1]
= el->rp->stress->uMatrix.daa[i-1][j-1];
p->strain_pl->uMatrix.daa[i-1][j-1]
= el->rp->strain_pl->uMatrix.daa[i-1][j-1];
p->strain_pl_incr->uMatrix.daa[i-1][j-1]
= 0.0;
}
}
for(i=1; i <= p->dof_per_node; i++) {
for(j=1; j <= p->nodes_per_elmt; j++) {
p->displ->uMatrix.daa[i-1][j-1] = el->rp->displ->uMatrix.daa[i-1][j-1];
p->displ_incr->uMatrix.daa[i-1][j-1] = 0.0;
}
}
for(j=1;j<= p->nodes_per_elmt ;j++) {
node_no = el->node_connect[j-1];
if(node_no != 0){
for(i=1;i<=p->no_dimen;i++) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -