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

📄 post.c

📁 OpenFVM-v1.1 open source cfd code
💻 C
📖 第 1 页 / 共 5 页
字号:
  fprintf (fp, "\n$EndView\n");  free (sf);}voidWriteBinaryScalarFace (FILE * fp, char *label, int iphi, double curtime){  int i;  int face;  double vs;  double *sf;  vs = 0.0;    fprintf (fp, "$View\n");  sf = calloc (nbfaces, sizeof (double));  for (i = 0; i < nbfaces; i++)    {      face = i;      if (iphi == 0)	vs = V_GetCmp (&xuf, face);      if (iphi == 1)	vs = V_GetCmp (&xvf, face);      if (iphi == 2)	vs = V_GetCmp (&xwf, face);      if (iphi == 3)	vs = V_GetCmp (&xpf, face);      if (iphi == 4)	vs = V_GetCmp (&xTf, face);      if (iphi == 5)	vs = V_GetCmp (&xsf, face);      sf[face] = vs;    }  PrintBinaryHeaderScalarFace (fp, label);  PrintBinaryTime (fp, curtime);  PrintBinaryScalarFace (fp, sf);  fprintf (fp, "\n$EndView\n");  free (sf);}voidWriteBinaryVectorMagnitudeFace (FILE * fp, char *label,				int iphix, int iphiy, int iphiz,				double curtime){  int i;  int face;  double vx, vy, vz;  double *sf;    vx = 0.0;  vy = 0.0;  vz = 0.0;  sf = calloc (nbfaces, sizeof (double));    for (i = 0; i < nbfaces; i++)    {      face = i;      if (iphix == 0)	vx = V_GetCmp (&xuf, face);      if (iphix == 1)	vx = V_GetCmp (&xvf, face);      if (iphix == 2)	vx = V_GetCmp (&xwf, face);      if (iphix == 3)	vx = V_GetCmp (&xpf, face);      if (iphix == 4)	vx = V_GetCmp (&xTf, face);      if (iphix == 5)	vx = V_GetCmp (&xsf, face);      if (iphiy == 0)	vy = V_GetCmp (&xuf, face);      if (iphiy == 1)	vy = V_GetCmp (&xvf, face);      if (iphiy == 2)	vy = V_GetCmp (&xwf, face);      if (iphiy == 3)	vy = V_GetCmp (&xpf, face);      if (iphiy == 4)	vy = V_GetCmp (&xTf, face);      if (iphiy == 5)	vy = V_GetCmp (&xsf, face);      if (iphiz == 0)	vz = V_GetCmp (&xuf, face);      if (iphiz == 1)	vz = V_GetCmp (&xvf, face);      if (iphiz == 2)	vz = V_GetCmp (&xwf, face);      if (iphiz == 3)	vz = V_GetCmp (&xpf, face);      if (iphiz == 4)	vz = V_GetCmp (&xTf, face);      if (iphiz == 5)	vz = V_GetCmp (&xsf, face);      sf[face] = sqrt (vx * vx + vy * vy + vz * vz);    }  fprintf (fp, "$View\n");  PrintBinaryHeaderScalarFace (fp, label);  PrintBinaryTime (fp, curtime);  PrintBinaryScalarFace (fp, sf);  fprintf (fp, "\n$EndView\n");  free (sf);}voidWriteBinaryScalarElement (FILE * fp, char *label, int iphi, double curtime){  int i;  int element;  double vs;  double *se;  vs = 0.0;    fprintf (fp, "$View\n");  se = calloc (nbelements, sizeof (double));  for (i = 0; i < nbelements; i++)    {      element = i;      if (iphi == 0)	vs = V_GetCmp (&xul, element);      if (iphi == 1)	vs = V_GetCmp (&xvl, element);      if (iphi == 2)	vs = V_GetCmp (&xwl, element);      if (iphi == 3)	vs = V_GetCmp (&xpl, element);      if (iphi == 4)	vs = V_GetCmp (&xTl, element);      if (iphi == 5)	vs = V_GetCmp (&xsl, element);      se[element] = vs;    }  PrintBinaryHeaderScalarElement (fp, label);  PrintBinaryTime (fp, curtime);  PrintBinaryScalarElement (fp, se);  fprintf (fp, "\n$EndView\n");  free (se);}voidWriteBinaryVectorElement (FILE * fp, char *label, int iphix, int iphiy,			  int iphiz, double curtime){  fprintf (fp, "$View\n");  PrintBinaryHeaderVectorElement (fp, label);  PrintBinaryTime (fp, curtime);  PrintBinaryVectorElement (fp, iphix, iphiy, iphiz);  fprintf (fp, "\n$EndView\n");}voidWriteBinaryStreamFunction (FILE * fp, char *label, double curtime){  double *sn;  fprintf (fp, "$View\n");  sn = calloc (nbnodes, sizeof (double));  CalculateStreamFunction (sn);  PrintBinaryHeaderScalarElement (fp, label);  PrintBinaryTime (fp, curtime);  PrintBinaryScalarNode (fp, sn);  fprintf (fp, "\n$EndView\n");  free (sn);}voidWriteBinaryVorticity (FILE * fp, char *label, int axis, double curtime){  int i;  int element;  double omega = 0.0;   double *se;  msh_vector gradu, gradv, gradw;  fprintf (fp, "$View\n");  se = calloc (nbelements, sizeof (double));  for (i = 0; i < nbelements; i++)    {      element = i;      gradu = Gradient (&xul, &xuf, LOGICAL_FALSE, element);      gradv = Gradient (&xvl, &xvf, LOGICAL_FALSE, element);      gradw = Gradient (&xwl, &xwf, LOGICAL_FALSE, element);      if (axis == 0)	{	  omega = gradw.y - gradv.z;	}      if (axis == 1)	{	  omega = gradu.z - gradw.x;	}      if (axis == 2)	{	  omega = gradv.x - gradu.y;	}      se[element] = omega;    }  PrintBinaryHeaderScalarElement (fp, label);  PrintBinaryTime (fp, curtime);  PrintBinaryScalarElement (fp, se);  fprintf (fp, "\n$EndView\n");  free (se);}voidWriteResults (FILE * fp, int onFace, int inElement, double curtime){  VecGhostGetLocalForm (xu, &xul);  VecGhostGetLocalForm (xv, &xvl);  VecGhostGetLocalForm (xw, &xwl);  VecGhostGetLocalForm (xp, &xpl);  VecGhostGetLocalForm (xT, &xTl);  VecGhostGetLocalForm (xs, &xsl);  if (parameter.savflux == LOGICAL_TRUE)    {      if (parameter.wbinary == LOGICAL_TRUE)	{	  sprintf (viewname, "Flux_[%s/%s]-%03d", parameter.ulength,		   parameter.utime, processor);	  WriteBinaryFlux (fp, viewname, curtime);	}      else	{	  sprintf (viewname, "Flux_[%s/%s]-%03d", parameter.ulength,		   parameter.utime, processor);	  WriteAsciiFlux (fp, viewname, curtime);	}    }  if (onFace == LOGICAL_TRUE)    {      if (parameter.wbinary == LOGICAL_TRUE)	{	  // Write velocity-U to file 	  sprintf (viewname, "VelocityU(Face)_[%s/%s]-%03d",		   parameter.ulength, parameter.utime, processor);	  if (parameter.fsav[iu] == LOGICAL_TRUE)	    WriteBinaryScalarFace (fp, viewname, iu, curtime);	  // Write velocity-V to file 	  sprintf (viewname, "VelocityV(Face)_[%s/%s]-%03d",		   parameter.ulength, parameter.utime, processor);	  if (parameter.fsav[iv] == LOGICAL_TRUE)	    WriteBinaryScalarFace (fp, viewname, iv, curtime);	  // Write velocity-W to file 	  sprintf (viewname, "VelocityW(Face)_[%s/%s]-%03d",		   parameter.ulength, parameter.utime, processor);	  if (parameter.fsav[iw] == LOGICAL_TRUE)	    WriteBinaryScalarFace (fp, viewname, iw, curtime);	  // Write pressure to file	  sprintf (viewname, "Pressure(Face)_[%s/(%s.%s.%s)]-%03d",		   parameter.umass, parameter.ulength, parameter.utime,		   parameter.utime, processor);	  if (parameter.fsav[ip] == LOGICAL_TRUE)	    WriteBinaryScalarFace (fp, viewname, ip, curtime);	  // Write temperature to file	  sprintf (viewname, "Temperature(Face)_[%s]-%03d",		   parameter.utemperature, processor);	  if (parameter.fsav[iT] == LOGICAL_TRUE)	    WriteBinaryScalarFace (fp, viewname, iT, curtime);	  // Write indicator function to file	  sprintf (viewname, "Gamma(Face)_[-]-%03d", processor);	  if (parameter.fsav[is] == LOGICAL_TRUE)	    WriteBinaryScalarFace (fp, viewname, is, curtime);	  // Write velocity to file 	  sprintf (viewname, "Velocity(Face)_[%s/%s]-%03d", parameter.ulength,		   parameter.utime, processor);	  if (parameter.fvec == LOGICAL_TRUE)	    WriteBinaryVectorMagnitudeFace (fp, viewname, iu, iv, iw,					    curtime);	}      else	{	  // Write velocity-U to file 	  sprintf (viewname, "VelocityU(Face)_[%s/%s]-%03d",		   parameter.ulength, parameter.utime, processor);	  if (parameter.fsav[iu] == LOGICAL_TRUE)	    WriteAsciiScalarFace (fp, viewname, iu, curtime);	  // Write velocity-V to file 	  sprintf (viewname, "VelocityV(Face)_[%s/%s]-%03d",		   parameter.ulength, parameter.utime, processor);	  if (parameter.fsav[iv] == LOGICAL_TRUE)	    WriteAsciiScalarFace (fp, viewname, iv, curtime);	  // Write velocity-W to file 	  sprintf (viewname, "VelocityW(Face)_[%s/%s]-%03d",		   parameter.ulength, parameter.utime, processor);	  if (parameter.fsav[iw] == LOGICAL_TRUE)	    WriteAsciiScalarFace (fp, viewname, iw, curtime);	  // Write pressure to file	  sprintf (viewname, "Pressure(Face)_[%s/(%s.%s.%s)]-%03d",		   parameter.umass, parameter.ulength, parameter.utime,		   parameter.utime, processor);	  if (parameter.fsav[ip] == LOGICAL_TRUE)	    WriteAsciiScalarFace (fp, viewname, ip, curtime);	  // Write temperature to file	  sprintf (viewname, "Temperature(Face)_[%s]-%03d",		   parameter.utemperature, processor);	  if (parameter.fsav[iT] == LOGICAL_TRUE)	    WriteAsciiScalarFace (fp, viewname, iT, curtime);	  // Write indicator function to file	  sprintf (viewname, "Gamma(Face)_[-]-%03d", processor);	  if (parameter.fsav[is] == LOGICAL_TRUE)	    WriteAsciiScalarFace (fp, viewname, is, curtime);	  // Write velocity to file 	  sprintf (viewname, "Velocity(Face)_[%s/%s]-%03d", parameter.ulength,		   parameter.utime, processor);	  if (parameter.fvec == LOGICAL_TRUE)	    WriteBinaryVectorMagnitudeFace (fp, viewname, iu, iv, iw,					    curtime);	}    }  if (inElement == LOGICAL_TRUE)    {      if (parameter.wbinary == LOGICAL_TRUE)	{	  // Write velocity-U to file 	  sprintf (viewname, "VelocityU(Cell)_[%s/%s]-%03d",		   parameter.ulength, parameter.utime, processor);	  if (parameter.csav[iu] == LOGICAL_TRUE)	    WriteBinaryScalarElement (fp, viewname, iu, curtime);	  // Write velocity-V to file 	  sprintf (viewname, "VelocityV(Cell)_[%s/%s]-%03d",		   parameter.ulength, parameter.utime, processor);	  if (parameter.csav[iv] == LOGICAL_TRUE)	    WriteBinaryScalarElement (fp, viewname, iv, curtime);	  // Write velocity-W to file 	  sprintf (viewname, "VelocityW(Cell)_[%s/%s]-%03d",		   parameter.ulength, parameter.utime, processor);	  if (parameter.csav[iw] == LOGICAL_TRUE)	    WriteBinaryScalarElement (fp, viewname, iw, curtime);	  // Write pressure to file	  sprintf (viewname, "Pressure(Cell)_[%s/(%s.%s.%s)]-%03d",		   parameter.umass, parameter.ulength, parameter.utime,		   parameter.utime, processor);	  if (parameter.csav[ip] == LOGICAL_TRUE)	    WriteBinaryScalarElement (fp, viewname, ip, curtime);	  // Write indicator function to file	  sprintf (viewname, "Temperature(Cell)_[%s]-%03d",		   parameter.utemperature, processor);	  if (parameter.csav[iT] == LOGICAL_TRUE)	    WriteBinaryScalarElement (fp, viewname, iT, curtime);	  // Write indicator function to file	  sprintf (viewname, "Gamma(Cell)_[-]-%03d", processor);	  if (parameter.csav[is] == LOGICAL_TRUE)	    WriteBinaryScalarElement (fp, viewname, is, curtime);	  // Write velocity to file 	  sprintf (viewname, "Velocity(Cell)_[%s/%s]-%03d", parameter.ulength,		   parameter.utime, processor);	  if (parameter.cvec == LOGICAL_TRUE)	    WriteBinaryVectorElement (fp, viewname, iu, iv, iw, curtime);	  // Write vorticity to file                      	  sprintf (viewname, "VorticityU(Cell)_[1/%s]-%03d", parameter.utime,		   processor);	  if (parameter.vortex[0] == LOGICAL_TRUE)	    WriteBinaryVorticity (fp, viewname, 0, curtime);	  sprintf (viewname, "VorticityV(Cell)_[1/%s]-%03d", parameter.utime,		   processor);	  if (parameter.vortex[1] == LOGICAL_TRUE)	    WriteBinaryVorticity (fp, viewname, 1, curtime);	  sprintf (viewname, "VorticityW(Cell)_[1/%s]-%03d", parameter.utime,		   processor);	  if (parameter.vortex[2] == LOGICAL_TRUE)	    WriteBinaryVorticity (fp, viewname, 2, curtime);	  sprintf (viewname, "StreamFunction(Cell)_[-]-%03d", processor);	  if (parameter.streamf == LOGICAL_TRUE)	    WriteBinaryStreamFunction (fp, viewname, curtime);	}      else	{	  // Write velocity-U to file 	  sprintf (viewname, "VelocityU(Cell)_[%s/%s]-%03d",		   parameter.ulength, parameter.utime, processor);	  if (parameter.csav[iu] == LOGICAL_TRUE)	    WriteAsciiScalarElement (fp, viewname, iu, curtime);	  // Write velocity-V to file 	  sprintf (viewname, "VelocityV(Cell)_[%s/%s]-%03d",		   parameter.ulength, parameter.utime, processor);	  if (parameter.csav[iv] == LOGICAL_TRUE)	    WriteAsciiScalarElement (fp, viewname, iv, curtime);	  // Write velocity-W to file                     	  sprintf (viewname, "VelocityW(Cell)_[%s/%s]-%03d",		   parameter.ulength, parameter.utime, processor);	  if (parameter.csav[iw] == LOGICAL_TRUE)	    WriteAsciiScalarElement (fp, viewname, iw, curtime);	  // Write pressure to file	  sprintf (viewname, "Pressure(Cell)_[%s/(%s.%s.%s)]-%03d",		   parameter.umass, parameter.ulength, parameter.utime,		   parameter.utime, processor);	  if (parameter.csav[ip] == LOGICAL_TRUE)	    WriteAsciiScalarElement (fp, viewname, ip, curtime);	  // Write indicator function to file	  sprintf (viewname, "Temperature(Cell)_[%s]-%03d",		   parameter.utemperature, processor);	  if (parameter.csav[iT] == LOGICAL_TRUE)	    WriteAsciiScalarElement (fp, viewname, iT, curtime);	  // Write indicator function to file	  sprintf (viewname, "Gamma(Cell)_[-]-%03d", processor);	  if (parameter.csav[is] == LOGICAL_TRUE)	    WriteAsciiScalarElement (fp, viewname, is, curtime);	  // Write velocity to file 	  sprintf (viewname, "Velocity(Cell)_[%s/%s]-%03d", parameter.ulength,		   parameter.utime, processor);	  if (parameter.cvec == LOGICAL_TRUE)	    WriteAsciiVectorElement (fp, viewname, iu, iv, iw, curtime);	  // Write vorticity to file                      	  sprintf (viewname, "VorticityU(Cell)_[1/s]-%03d", processor);	  if (parameter.vortex[0] == LOGICAL_TRUE)	    WriteAsciiVorticity (fp, viewname, 0, curtime);	  sprintf (viewname, "VorticityV(Cell)_[1/s]-%03d", processor);	  if (parameter.vortex[1] == LOGICAL_TRUE)	    WriteAsciiVorticity (fp, viewname, 1, curtime);	  sprintf (viewname, "VorticityW(Cell)_[1/s]-%03d", processor);	  if (parameter.vortex[2] == LOGICAL_TRUE)	    WriteAsciiVorticity (fp, viewname, 2, curtime);	  sprintf (viewname, "StreamFunction(Cell)_[-]-%03d", processor);	  if (parameter.streamf == LOGICAL_TRUE)	    WriteAsciiStreamFunction (fp, viewname, curtime);	}    }  VecGhostRestoreLocalForm (xu, &xul);  VecGhostRestoreLocalForm (xv, &xvl);  VecGhostRestoreLocalForm (xw, &xwl);  VecGhostRestoreLocalForm (xp, &xpl);  VecGhostRestoreLocalForm (xT, &xTl);  VecGhostRestoreLocalForm (xs, &xsl);}voidWriteResidual (FILE * fp, int iter, double *res){  int i;  PetscFPrintf (PETSC_COMM_WORLD, fp, "%d", iter);  for (i = 0; i < nphi; i++)    {      PetscFPrintf (PETSC_COMM_WORLD, fp, " \t %E", res[i]);    }  PetscFPrintf (PETSC_COMM_WORLD, fp, "\n");}

⌨️ 快捷键说明

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