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

📄 mechprint.cpp

📁 Finite element program for mechanical problem. It can solve various problem in solid problem
💻 CPP
📖 第 1 页 / 共 5 页
字号:
                sig = "w";                break;              case 2:                sig = "phi";                break;              default :                fprintf(stderr, "\n\n Error - unknown direction of strain");                fprintf(stderr, "\n in function  write_gid_elemscalar, file %s, line %d\n", __FILE__, __LINE__);            }            break;          case planestress:          case planestrain:             switch (dir)            {              case 0:                sig = "eps_e_x";                break;              case 1:                sig = "eps_e_y";                break;              case 2:                sig = "eps_e_xy";                break;              case 3:                sig = "eps_e_z";                break;              default :                fprintf(stderr, "\n\n Error - unknown direction of strain");                fprintf(stderr, "\n in function write_gid_elemscalar, file %s, line %d\n", __FILE__, __LINE__);        	    }            break;          case axisymm:            switch (dir)            {              case 0:                sig = "eps_e_r";                break;              case 1:                sig = "eps_e_z";                break;              case 2:                sig = "eps_e_phi";                break;              case 3:                sig = "eps_e_rz";                break;              default :                fprintf(stderr, "\n\n Error - unknown direction of strain");                fprintf(stderr, "\n in function write_gid_elemscalar, file %s, line %d\n", __FILE__, __LINE__);        	    }            break;          case spacestress:            switch (dir)            {              case 0:                sig = "eps_e_x";                break;              case 1:                sig = "eps_e_y";                break;              case 2:                sig = "eps_e_z";                break;              case 3:                sig = "eps_e_yz";                break;              case 4:                sig = "eps_e_xz";                break;              case 5:                sig = "eps_e_xy";                break;              default :                fprintf(stderr, "\n\n Error - unknown direction of strain");                fprintf(stderr, "\n in function  write_gid_elemscalar, file %s, line %d\n", __FILE__, __LINE__);            }            break;          default:            fprintf(stderr, "\n\n Error - unknown stress/strain state is required");            fprintf(stderr, "\n in function  write_gid_elemscalar, file %s, line %d\n", __FILE__, __LINE__);        }      }      switch (te)      {        case bar2d :        case bar3d :        case beam2d :        case beam3d :        case subsoilbeam :          sprintf(gpname, "Lin_1D");          break;        case barq2d :          sprintf(gpname, "Quad_1D");          break;        default :          sprintf(gpname, "%d", te);      }      if (scal == other)        fprintf(out, "\nResult \"other_e_%ld\" \"%ld\" %s Scalar OnGaussPoints \"%s\"\n", dir+1, lcid, desclcid, gpname);      else             fprintf(out, "\nResult \"%s\" \"%ld\" %s Scalar OnGaussPoints \"%s\"\n", sig, lcid, desclcid, gpname);      fprintf(out, "Values\n");      print_header = 0;    }    switch (scal)    {      case stress :        fprintf(out, "%7ld", i+Outdm->ide1);        for (j = 0; j < tnip; j++)        {          ipp = Mt->elements[i].ipp[0][0]+j;          ncompstr = Mm->ip[ipp].ncompstr;          if (j == 0)            fprintf(out, " % e\n", Mm->ip[ipp].stress[ncompstr*lcid+dir]);          else            fprintf(out, "%7c % e\n", ' ', Mm->ip[ipp].stress[ncompstr*lcid+dir]);        }        fprintf(out, "\n");        break;      case strain :        fprintf(out, "%7ld", i+Outdm->ide1);        for (j = 0; j < tnip; j++)        {          ipp = Mt->elements[i].ipp[0][0]+j;          ncompstr = Mm->ip[ipp].ncompstr;          if (j == 0){            fprintf(out, " % e\n", Mm->ip[ipp].strain[ncompstr*lcid+dir]);	    //fprintf (Out,"\n ipp %ld   ncompstr %ld  lcid %ld  dir %ld  [] %ld",ipp,ncompstr,lcid,dir,ncompstr*lcid+dir);	  }          else            fprintf(out, "%7c % e\n", ' ', Mm->ip[ipp].strain[ncompstr*lcid+dir]);        }        fprintf(out, "\n");        break;      case other :        fprintf(out, "%7ld", i+Outdm->ide1);        for (j = 0; j < tnip; j++)        {          ipp = Mt->elements[i].ipp[0][0]+j;          ncompother = Mm->ip[ipp].ncompeqother;          if (j == 0)            fprintf(out, " % e\n", Mm->ip[ipp].eqother[ncompother*lcid+dir]);          else            fprintf(out, "%7c % e\n", ' ', Mm->ip[ipp].eqother[ncompother*lcid+dir]);        }        fprintf(out, "\n");        break;      default :        fprintf(stderr, "\n\n Error - unknown value type in function write_gid_elemscalar()\n");        fprintf(stderr, "  in file %s, line %d\n", __FILE__, __LINE__);    }  }  if (print_header == 0)    fprintf(out, "End Values\n");}void export_femcad(FILE *out){  write_nodes(out);  write_elements(out);}void write_nodes(FILE *out){  long i;  fprintf(out, "\nNODES\n");  for (i=0; i < Gtm->nn; i++)    fprintf(out, "%ld %e %e %e\n", i, Gtm->gnodes[i].x, Gtm->gnodes[i].y, Gtm->gnodes[i].z);}void write_elements(FILE *out){  long i,j;  fprintf(out, "\nELEMENTS\n");  for (i = 0; i < Mt->ne; i++)  {    if (Gtm->leso[i]==0)      continue;    switch (Mt->elements[i].te)    {      case bar2d :      case bar3d :      case beam2d :      case beam3d :      case subsoilbeam :/*        fprintf(out, "%ld %d", i, ISOLinear1D);        for (j = 0; j < Gtm->gelements[i].nne; j++)          fprintf(out, " %ld", Gtm->gelements[i].nodes[j]);*/        break;          case barq2d :/*        fprintf(out, "%ld %d", i, ISOQuadratic1D);        for (j = 0; j < Gtm->gelements[i].nne; j++)          fprintf(out, " %ld", Gtm->gelements[i].nodes[j]);*/        break;          case spring_1 :      case spring_2 :      case spring_3 :      case spring_4 :      case spring_5 :      case spring_6 :        break;      case cctel :      case dktel:      case dstel:      case subsoilplatetr:      case planeelementlt :      case planeelementrotlt :        fprintf(out, "%ld %d", i, TriangleLinear);        for (j = 0; j < Gtm->gelements[i].nne; j++)          fprintf(out, " %ld", Gtm->gelements[i].nodes[j]);        break;      case planeelementqt :        fprintf(out, "%ld %d", i, TriangleQuadratic);        for (j = 0; j < Gtm->gelements[i].nne; j++)          fprintf(out, " %ld", Gtm->gelements[i].nodes[j]);        break;      case planeelementlq :      case planeelementrotlq :      case q4plateel:      case subsoilplateq:        fprintf(out, "%ld %d", i, ISOLinear2D);        for (j = 0; j < Gtm->gelements[i].nne; j++)          fprintf(out, " %ld", Gtm->gelements[i].nodes[j]);        break;      case planeelementqq :        fprintf(out, "%ld %d", i, ISOQuadratic2D);        for (j = 0; j < Gtm->gelements[i].nne; j++)          fprintf(out, " %ld", Gtm->gelements[i].nodes[j]);        break;      case linearhex :        fprintf(out, "%ld %d", i, ISOLinear2D);        for (j = 0; j < 4; j++)          fprintf(out, " %ld", Gtm->gelements[i].nodes[4+j]);        break;      default :        fprintf(stderr, "\n\n Error - unsupported element type is required in function\n");        fprintf(stderr, "  write_elements(), file %s, line %d\n", __FILE__, __LINE__);    }    fprintf(out, "\n");  }}void write_nodes_prep(FILE *out, siftop *st){  long i;  fprintf(out, "\nNODES\n");  for (i=0; i < st->nodes; i++)    fprintf(out, "%ld %e %e %e\n", i, st->N[i].x, st->N[i].y, st->N[i].z);}void write_elements_prep(FILE *out, siftop *st){  long i,j;  fprintf(out, "\nELEMENTS\n");  for (i = 0; i < st->elements; i++)  {    fprintf(out, "%ld %d", i, TriangleLinear);    for (j = 0; j < st->E[i].size; j++)      fprintf(out, " %ld", st->E[i].node[j]-1);    fprintf(out, "\n");  }}void write_displ(FILE *out, long lcid, char *desclcid){  long i, j;  double *r;  fprintf (out,"\nVALUES");  fprintf (out,"\nVECTOR3D NODES DEFORMATION %s\n", desclcid);  for (i=0; i < Mt->nn; i++)  {    r = new double [Gtm->gnodes[i].ndofn];    noddispl (lcid, r, i);    fprintf(out, "%ld", i);    for (j = 0; j < Gtm->gnodes[i].ndofn; j++)      fprintf(out, " % e", r[j]);    fprintf(out, "  0.0 \n");    delete [] r;  }}void write_nodscalar(FILE *out, strastre scal, long lcid, long dir, char *desclcid){  char *sig = "";  long i, ncompstr, ncompother;  fprintf(out, "\nVALUES\nSCALAR NODES ");  if (scal == stress)  {    if (Mt->nodes[0].ncompstr < 6)    {      switch (dir)      {        case 0:          sig = "sig_x";          break;        case 1:          sig = "sig_y";          break;        case 2:          sig = "tau_xy";          break;        case 3:          sig = "sig_z";          break;        default :          fprintf(stderr, "\n\n Error - unknown direction of stress");          fprintf(stderr, "\n in function wr_nodscalar, file %s, line %d\n", __FILE__, __LINE__);      }    }    if (Mt->nodes[0].ncompstr == 6)    {      switch (dir)      {        case 0:          sig = "sig_x";          break;        case 1:          sig = "sig_y";          break;        case 2:          sig = "sig_z";          break;        case 3:          sig = "tau_yz";          break;        case 4:          sig = "tau_xz";          break;        case 5:          sig = "tau_xy";          break;        default :          fprintf(stderr, "\n\n Error - unknown direction of stress");          fprintf(stderr, "\n in function wr_nodscalar, file %s, line %d\n", __FILE__, __LINE__);      }    }  }  if (scal == strain)  {    if (Mt->nodes[0].ncompstr < 6)    {      switch (dir)      {        case 0:          sig = "eps_x";          break;        case 1:          sig = "eps_y";          break;        case 2:          sig = "eps_xy";          break;        case 3:          sig = "eps_z";          break;        default :          fprintf(stderr, "\n\n Error - unknown direction of strain");          fprintf(stderr, "\n in function wr_nodscalar, file %s, line %d\n", __FILE__, __LINE__);      }    }    if (Mt->nodes[0].ncompstr == 6)    {      switch (dir)      {        case 0:          sig = "eps_x";          break;        case 1:          sig = "eps_y";          break;        case 2:          sig = "eps_z";          break;        case 3:          sig = "eps_yz";          break;        case 4:          sig = "eps_xz";          break;        case 5:          sig = "eps_xy";          break;        default :          fprintf(stderr, "\n\n Error - unknown direction of strain");          fprintf(stderr, "\n in function wr_nodscalar, file %s, line %d\n", __FILE__, __LINE__);      }    }  }  switch (scal)  {    case stress :      fprintf(out, "%s %s\n", sig, desclcid);      for (i = 0; i < Mt->nn; i++)      {        ncompstr = Mt->nodes[i].ncompstr;        fprintf(out, "%ld % e\n", i, Mt->nodes[i].stress[ncompstr*lcid+dir]);      }      break;    case strain :      fprintf(out, "%s %s\n", sig, desclcid);      for (i = 0; i < Mt->nn; i++)      {        ncompstr = Mt->nodes[i].ncompstr;        fprintf(out, "%ld % e\n", i, Mt->nodes[i].strain[ncompstr*lcid+dir]);      }      break;    case other :      fprintf(out, "other_n%ld %s\n", dir, desclcid);      for (i = 0; i < Mt->nn; i++)      {        ncompother = Mt->nodes[i].ncompother;        fprintf(out, "%ld % e\n", i, Mt->nodes[i].other[ncompother*lcid+dir]);      }      break;    default :      fprintf(stderr, "\n\n Error - unknown value type in function write_scalar()\n");      fprintf(stderr, "  in file %s, line %d\n", __FILE__, __LINE__);  }}void write_elemscalar(FILE *out, strastre scal, long lcid, long dir, char * desclcid){  char *sig = "";  long i, ipp,ncompstr,ncompother;  fprintf(out, "\nVALUES\nSCALAR ELEMENTS ");  if (scal == stress)  {    if (Mm->ip[0].ncompstr < 6)    {      switch (dir)      {        case 0:          sig = "sig_x";          break;        case 1:          sig = "sig_y";          break;        case 2:          sig = "tau_xy";          break;        case 3:          sig = "sig_z";          break;        default :          fprintf(stderr, "\n\n Error - unknown direction of stress");          fprintf(stderr, "\n in function wr_nodscalar, file %s, line %d\n", __F

⌨️ 快捷键说明

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