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

📄 mechprint.cpp

📁 Finite element program for mechanical problem. It can solve various problem in solid problem
💻 CPP
📖 第 1 页 / 共 5 页
字号:
          break;        default :          fprintf(stderr, "\n\n Error - unknown direction of strain");          fprintf(stderr, "\n in function write_gid_nodscalar, file %s, line %d\n", __FILE__, __LINE__);      }    }    if (Mt->nodes[0].ncompstr == 6)    {      switch (dir)      {        case 0:          sig = "eps_n_x";          break;        case 1:          sig = "eps_n_y";          break;        case 2:          sig = "eps_n_z";          break;        case 3:          sig = "eps_n_yz";          break;        case 4:          sig = "eps_n_xz";          break;        case 5:          sig = "eps_n_xy";          break;        default :          fprintf(stderr, "\n\n Error - unknown direction of strain");          fprintf(stderr, "\n in function write_gid_nodscalar, file %s, line %d\n", __FILE__, __LINE__);      }    }  }  if (scal == pstress)  {    switch (dir)    {      case 0:        sig = "psig_n_1";        break;      case 1:        sig = "psig_n_2";        break;      case 2:        sig = "psig_n_3";        break;      case 3:        sig = "tau_n_max";        break;      default:        fprintf(stderr, "\n\n Error - unknown direction of principal stress");        fprintf(stderr, "\n in function write_gid_nodscalar, file %s, line %d\n", __FILE__, __LINE__);    }  }  if (scal == pstrain)  {    switch (dir)    {      case 0:        sig = "peps_n_1";        break;      case 1:        sig = "peps_n_2";        break;      case 3:        sig = "peps_n_3";        break;      default:        fprintf(stderr, "\n\n Error - unknown direction of principal strains");        fprintf(stderr, "\n in function write_gid_nodscalar, file %s, line %d\n", __FILE__, __LINE__);    }  }  if (scal == other)    fprintf(out, "\nResult \"other_n_%ld\" \"%ld\" %s Scalar OnNodes\n", dir+1, lcid, desclcid);  else         fprintf(out, "\nResult \"%s\" \"%ld\" %s Scalar OnNodes\n", sig, lcid, desclcid);  fprintf(out, "Values\n");  switch (scal)  {    case stress :      for (i = 0; i < Mt->nn; i++)      {        // checking required scalar type and selection of the node and selection of the component        if (Outdm->nog.selnstre.presence_id(Outdm->nog.selstre, i, dir) == 0)          continue;        ncompstr = Mt->nodes[i].ncompstr;        fprintf(out, "%ld % e\n", i+Outdm->idn1, Mt->nodes[i].stress[ncompstr*lcid+dir]);      }      break;    case strain :      for (i = 0; i < Mt->nn; i++)      {        // checking required scalar type and selection of the node and selection of the component        if (Outdm->nog.selnstra.presence_id(Outdm->nog.selstra, i, dir) == 0)          continue;        ncompstr = Mt->nodes[i].ncompstr;        fprintf(out, "%ld % e\n", i+Outdm->idn1, Mt->nodes[i].strain[ncompstr*lcid+dir]);      }      break;    case pstress :      for (i = 0; i < Mt->nn; i++)      {        if (Mt->nodes[i].pstre == NULL)          continue;        // checking required scalar type and selection of the node and selection of the component        if (Outdm->nog.selnstre.presence_id(Outdm->nog.selstre, i, dir) == 0)          continue;        if (dir == 3)          fprintf(out, "%ld % e\n", i+Outdm->idn1, (Mt->nodes[i].pstre[3*lcid]+Mt->nodes[i].pstre[3*lcid+2])/2);        else          fprintf(out, "%ld % e\n", i+Outdm->idn1, Mt->nodes[i].pstre[3*lcid+dir]);      }      break;    case pstrain :      for (i = 0; i < Mt->nn; i++)      {        // checking required scalar type and selection of the node and selection of the component        if (Outdm->nog.selnstra.presence_id(Outdm->nog.selstra, i, dir) == 0)          continue;        ncompstr = Mt->nodes[i].ncompstr;        fprintf(out, "%ld % e\n", i+Outdm->idn1, Mt->nodes[i].pstra[3*lcid+dir]);      }      break;    case other :      for (i = 0; i < Mt->nn; i++)      {        // checking required scalar type and selection of the node and selection of the component        if (Outdm->nog.selnoth.presence_id(Outdm->nog.seloth, i, dir) == 0)          continue;        ncompother = Mt->nodes[i].ncompother;        fprintf(out, "%ld % e\n", i+Outdm->idn1, Mt->nodes[i].other[ncompother*lcid+dir]);      }      break;    default :      fprintf(stderr, "\n\n Error - unknown value type in function write_gid_nodscalar()\n");      fprintf(stderr, "  in file %s, line %d\n", __FILE__, __LINE__);  }  fprintf(out, "End Values\n");}/**  The function writes a scalar quantity given by parameters scal and dir on all elements to the file given by parameter out in GiD format.   The results are printed at each integration point on given element.  Parameters :  @param out - pointer to the opened text file where the output will be produced  @param scal - specifies type of required scalar quantity (strain/stres/other)  @param lcid - load case id  @param dir - specifies which component of the quantity array will be printed  @param desclcid - string with description of loadcase  Return :  The function does not return anything*/void write_gid_elemscalar(FILE *out, strastre scal, long lcid, long dir, char *desclcid){  if (Bar2d)    write_gid_elem_type_scalar(out, scal, lcid, dir, desclcid, bar2d);  if (Bar3d)    write_gid_elem_type_scalar(out, scal, lcid, dir, desclcid, bar3d);  if (Barq2d)    write_gid_elem_type_scalar(out, scal, lcid, dir, desclcid, barq2d);  if (Beam2d)    write_gid_elem_type_scalar(out, scal, lcid, dir, desclcid, beam2d);  if (Beam3d)    write_gid_elem_type_scalar(out, scal, lcid, dir, desclcid, beam3d);  if (Sbeam)    write_gid_elem_type_scalar(out, scal, lcid, dir, desclcid, subsoilbeam);  if (Spring)  {    write_gid_elem_type_scalar(out, scal, lcid, dir, desclcid, spring_1);    write_gid_elem_type_scalar(out, scal, lcid, dir, desclcid, spring_2);    write_gid_elem_type_scalar(out, scal, lcid, dir, desclcid, spring_3);    write_gid_elem_type_scalar(out, scal, lcid, dir, desclcid, spring_4);    write_gid_elem_type_scalar(out, scal, lcid, dir, desclcid, spring_5);    write_gid_elem_type_scalar(out, scal, lcid, dir, desclcid, spring_6);  }  if (Pelt)    write_gid_elem_type_scalar(out, scal, lcid, dir, desclcid, planeelementlt);  if (Peqt)    write_gid_elem_type_scalar(out, scal, lcid, dir, desclcid, planeelementqt);  if (Perlt)    write_gid_elem_type_scalar(out, scal, lcid, dir, desclcid, planeelementrotlt);  if (Pelq)    write_gid_elem_type_scalar(out, scal, lcid, dir, desclcid, planeelementlq);  if (Peqq)    write_gid_elem_type_scalar(out, scal, lcid, dir, desclcid, planeelementqq);  if (Perlq)    write_gid_elem_type_scalar(out, scal, lcid, dir, desclcid, planeelementrotlq);  if (Pesqt)    write_gid_elem_type_scalar(out, scal, lcid, dir, desclcid, planeelementsubqt);  if (Cct)    write_gid_elem_type_scalar(out, scal, lcid, dir, desclcid, cctel);  if (Dkt)    write_gid_elem_type_scalar(out, scal, lcid, dir, desclcid, dktel);  if (Dst)    write_gid_elem_type_scalar(out, scal, lcid, dir, desclcid, dstel);  if (Q4pl)    write_gid_elem_type_scalar(out, scal, lcid, dir, desclcid, q4plateel);  if (Spltr)    write_gid_elem_type_scalar(out, scal, lcid, dir, desclcid, subsoilplatetr);  if (Splq)    write_gid_elem_type_scalar(out, scal, lcid, dir, desclcid, subsoilplateq);  if (Asymlq)    write_gid_elem_type_scalar(out, scal, lcid, dir, desclcid, axisymmlt);  if (Asymlt)    write_gid_elem_type_scalar(out, scal, lcid, dir, desclcid, axisymmlq);  if (Asymqq)    write_gid_elem_type_scalar(out, scal, lcid, dir, desclcid, axisymmqq);  if (Shtr)    write_gid_elem_type_scalar(out, scal, lcid, dir, desclcid, shelltrelem);  if (Shq)    write_gid_elem_type_scalar(out, scal, lcid, dir, desclcid, shellqelem);  if (Ltet)    write_gid_elem_type_scalar(out, scal, lcid, dir, desclcid, lineartet);  if (Lhex)    write_gid_elem_type_scalar(out, scal, lcid, dir, desclcid, linearhex);  if (Qhex)    write_gid_elem_type_scalar(out, scal, lcid, dir, desclcid, quadrhex);  if (Lwed)    write_gid_elem_type_scalar(out, scal, lcid, dir, desclcid, linearwed);  if (Qwed)    write_gid_elem_type_scalar(out, scal, lcid, dir, desclcid, quadrwed);}/**  The function writes a scalar value given by parameter scal on elements of given type (parameter te)  to the file given by parameter out in GiD format. The results are printed at each  element integration   points.  Parameters :  @param out - pointer to the opened text file where the output will be produced  @param scal - specifies type of required scalar quantity (strain/stres/other)  @param lcid - load case id  @param dir - specifies which component of the quantity array will be printed  @param desclcid - string with description of loadcase  @param te - required element type  Return :  The function does not return anything*/void write_gid_elem_type_scalar(FILE *out, strastre scal, long lcid, long dir, char *desclcid, elemtype te){  char *sig = "";  char gpname[1000];  long i, j, ipp,ncompstr,ncompother,tnip;  long print_header = 1;  for (i = 0; i < Mt->ne; i++)  {    if (Gtm->leso[i]==0)      continue;    tnip = Mt->give_totnip(i);    if (te == planeelementlq)      tnip = 4;    // checking required element type    if (Mt->elements[i].te != te)      continue;     // checking required scalar type and selection of the element and selection of the component    if ((scal == strain) && (Outdm->eog.selestra.presence_id(Outdm->eog.selstra, i, dir) == 0))      continue;    if ((scal == stress) && (Outdm->eog.selestre.presence_id(Outdm->eog.selstre, i, dir) == 0))      continue;    if ((scal == other) && (Outdm->eog.seleoth.presence_id(Outdm->eog.seloth, i, dir) == 0))      continue;    if (print_header)    {      ipp = Mt->elements[i].ipp[0][0];      if (scal == stress)      {        switch (Mm->ip[ipp].ssst)        {          case bar:            switch (dir)            {              case 0:                sig = "sig_e_1";                break;              case 1:                sig = "sig_e_2";                break;              case 2:                sig = "sig_e_3";                break;              case 3:                sig = "sig_e_4";                break;              case 4:                sig = "sig_e_5";                break;              case 5:                sig = "sig_e_6";                break;              default :                fprintf(stderr, "\n\n Error - unknown direction of stress");                fprintf(stderr, "\n in function  write_gid_elemscalar, file %s, line %d\n", __FILE__, __LINE__);            }            break;          case plbeam:            switch (dir)            {              case 0:                sig = "N";                break;              case 1:                sig = "V";                break;              case 2:                sig = "M";                break;              default :                fprintf(stderr, "\n\n Error - unknown direction of stress");                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 = "sig_e_x";                break;              case 1:                sig = "sig_e_y";                break;              case 2:                sig = "tau_e_xy";                break;              case 3:                sig = "sig_e_z";                break;              default :                fprintf(stderr, "\n\n Error - unknown direction of stress");                fprintf(stderr, "\n in function write_gid_elemscalar, file %s, line %d\n", __FILE__, __LINE__);                    }            break;          case axisymm:            switch (dir)            {              case 0:                sig = "sig_e_r";                break;              case 1:                sig = "sig_e_z";                break;              case 2:                sig = "sig_e_phi";                break;              case 3:                sig = "sig_e_rz";                break;              default :                fprintf(stderr, "\n\n Error - unknown direction of stress");                fprintf(stderr, "\n in function write_gid_elemscalar, file %s, line %d\n", __FILE__, __LINE__);        	    }            break;          case spacestress:            switch (dir)            {              case 0:                sig = "sig_e_x";                break;              case 1:                sig = "sig_e_y";                break;              case 2:                sig = "sig_e_z";                break;              case 3:                sig = "tau_e_yz";                break;              case 4:                sig = "tau_e_xz";                break;              case 5:                sig = "tau_e_xy";                break;              default :                fprintf(stderr, "\n\n Error - unknown direction of stress");                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__);        }      }      if (scal == strain)      {        switch (Mm->ip[ipp].ssst)        {          case bar:            switch (dir)            {              case 0:                sig = "eps_e_1";                break;              case 1:                sig = "eps_e_2";                break;              case 2:                sig = "eps_e_3";                break;              case 3:                sig = "eps_e_4";                break;              case 4:                sig = "eps_e_5";                break;              case 5:                sig = "eps_e_6";                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 plbeam:            switch (dir)            {              case 0:                sig = "u";                break;              case 1:

⌨️ 快捷键说明

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