//**********************************************************************
// Copyright 2006 John A. Trangenstein
//
// This software is made available for research and instructional use
// only.
// You may copy and use this software without charge for these
// non-commercial purposes, provided that the copyright notice and
// associated text is reproduced on all copies.
// For all other uses (including distribution of modified versions),
// please contact the author at
// John A. Trangenstein
// Department of Mathematics
// Duke University
// Durham, NC 27708-0320
// USA
// or
// johnt@math.duke.edu
//
// This software is made available "as is" without any assurance that it
// is completely correct, or that it will work for your purposes.
// Use the software at your own risk.
//**********************************************************************
#include "GD.H"
// "$Header:$
#include <iomanip>
#include <math.h>
#include <string.h>
#include <sstream>
#include "MyInline.H"
#include "Debug.H"
#include "FVFort.H"
#include "Const.H"
#include "BoxGraphics.H"
#include "DataTagBox.H"
#include "GlobalPlot.H"
#include "GUIInputParameter.H"
#include "MemoryDebugger.H"
#include "PatchArrInfo.H"
#include "RAFV.H"
#include "RAFVL.H"
#include "Tracer.H"
#if (SPACEDIM==2)
#ifdef SURFACE_PLOT
//extern XYGraphTool *horizontal,*vertical;
//extern REAL hxmin,hxmax,vxmin,vxmax;
//extern REAL dt_source;
#endif
#endif
//struct godcon_common {
// REAL difmag;
// REAL fullon;
// REAL hackinfl;
// REAL onset;
// INTEGER igdnv;
//};
//extern godcon_common F77NAME(godcon);
struct gas_dynamics_common {
REAL gamma;
};
extern gas_dynamics_common F77_NAME(gas_dynamics);
#if (SPACEDIM>=2)
struct riemquad_common {
REAL xmm[SPACEDIM],xpp[SPACEDIM],statepp[SPACEDIM+2],
statemp[SPACEDIM+2],statemm[SPACEDIM+2],statepm[SPACEDIM+2];
};
extern riemquad_common F77NAME(riemquad);
#endif
#define NBLK 64
#define NGHOST 2
DEFINE_MODEL_PROCEDURES(GasDynamics)
extern "C" {
void F77NAME(bccells)(DECL_ARG(fic),DECL_ARG(lac),
DECL_ARG(fphys),DECL_ARG(lphys),DECL_ARG(ifirst),DECL_ARG(ilast),
REAL*,REAL*,REAL*);
void F77NAME(bcmesh)(DECL_ARG(fim),DECL_ARG(lam),
DECL_ARG(fphys),DECL_ARG(lphys),DECL_ARG(ifirst),DECL_ARG(ilast),
DECL_DARG(x));
void F77NAME(charanalgd)(DECL_ARG(ifirst),DECL_ARG(ilast),
DECL_ARG(fc),DECL_ARG(lc),const int&,
const REAL*,const REAL*,const REAL*,
REAL*, /* REAL*,REAL*,*/ REAL*,REAL*);
void F77NAME(consdiff)(DECL_ARG(fc),DECL_ARG(lc),
DECL_ARG(fs),DECL_ARG(ls),DECL_ARG(fo),DECL_ARG(lo),
DECL_ARG(fs),DECL_ARG(ls),DECL_ARG(ifirst),DECL_ARG(ilast),
const BOOLEAN&,
DECL_DARG(f),DECL_DARG(fsum),DECL_DARG(x),
REAL*,REAL*,REAL*);
void F77NAME(errest)(const int&,const int&,DECL_ARG(fc),DECL_ARG(lc),
DECL_ARG(ff),DECL_ARG(lf),DECL_ARG(fm),DECL_ARG(lm),
DECL_ARG(ifirst),DECL_ARG(ilast),
const REAL&,const REAL&,const REAL&,const REAL&,const REAL&,
BOOLEAN*,
const REAL*,const REAL*,DECL_DARG(x));
void F77_NAME(harten_hyman_gd)(const int&,const REAL*,const REAL*,
REAL*,REAL*,REAL*,REAL*,REAL*);
void F77NAME(initialize)(DECL_ARG(nclevel),DECL_ARG(fc),DECL_ARG(lc),
DECL_ARG(fm),DECL_ARG(lm),DECL_ARG(ifirst),DECL_ARG(ilast),
REAL*,REAL*,REAL*,DECL_DARG(x));
#if (SPACEDIM==1)
void F77NAME(muscl)(DECL_ARG(fc),DECL_ARG(lc),
DECL_ARG(fs),DECL_ARG(ls),DECL_ARG(ifirst),DECL_ARG(ilast),
const REAL &,
const REAL*,const REAL*,const REAL*,const REAL*,const REAL*,
const REAL*,const REAL*,
REAL*,REAL*,
REAL*);
#endif
#if (SPACEDIM==2)
void F77NAME(ctu)(DECL_ARG(ifirst),DECL_ARG(ilast),
DECL_ARG(fc),DECL_ARG(lc),DECL_ARG(fx),DECL_ARG(lx),
DECL_ARG(fs),DECL_ARG(ls),DECL_ARG(fphys),DECL_ARG(lphys),
const REAL&,
const REAL*,const REAL*,const REAL*,const REAL*,const REAL*,
REAL*,REAL*,
REAL*,REAL*,
// REAL*,REAL*,REAL*,REAL*,
REAL*,REAL*,REAL*,REAL*,
// REAL*,REAL*,REAL*,REAL*,
REAL*,REAL*,REAL*,REAL*,REAL*,REAL*,
REAL*,REAL*,REAL*,REAL*,REAL*,REAL*,REAL*,REAL*,REAL*,REAL*);
#endif
void F77_NAME(rusanov_gd)(const int&,const REAL*,const REAL*,
REAL*,REAL*,REAL*,REAL*,REAL*);
REAL F77NAME(stabledt)(DECL_ARG(fc),DECL_ARG(lc),
DECL_ARG(fm),DECL_ARG(lm),DECL_ARG(ifirst),DECL_ARG(ilast),
const REAL*,const REAL*,const REAL*,
DECL_DARG(x));
void F77NAME(wtougd)(DECL_ARG(ifirst),DECL_ARG(ilast),
DECL_ARG(fc),DECL_ARG(lc),const REAL*,const REAL*,const REAL*,
REAL*,REAL*,REAL*);
void F77NAME(utowgd)(DECL_ARG(ifirst),DECL_ARG(ilast),
DECL_ARG(fc),DECL_ARG(lc),const REAL*,const REAL*,const REAL*,
REAL*,REAL*,REAL*);
}
//::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
GasDynamics::GasDynamics(const char *na) :
GUIEosModel<EosModel>("GasDynamics",na) {
//TRACER_CALL(t,"GasDynamics::GasDynamics");
setSizes(NBLK,NGHOST);
RealFlowVariableList *rl=chooseRealList(INOUT);
rl->append(mass= OPERATOR_NEW RealFlowVariable(1,INOUT,CELL,
"mass",LINEAR_INTERPOLATION,CONSERVATIVE_AVERAGING));
rl->append(momentum=OPERATOR_NEW RealFlowVariable(SPACEDIM,INOUT,CELL,
"momentum",LINEAR_INTERPOLATION,CONSERVATIVE_AVERAGING));
rl->append(energy= OPERATOR_NEW RealFlowVariable(1,INOUT,CELL,
"energy",LINEAR_INTERPOLATION,CONSERVATIVE_AVERAGING));
rl=chooseRealList(FLUX);
rl->append(flux=OPERATOR_NEW RealFlowVariable(SPACEDIM+2,FLUX,SIDE,
"flux"));
rl=chooseRealList(FLUXSUM);
rl->append(fluxsum=OPERATOR_NEW RealFlowVariable(SPACEDIM+2,FLUXSUM,
OUTERSIDE,"fluxsum",NO_INTERPOLATE,CONSERVATIVE_AVERAGING));
rl=chooseRealList(TEMP);
rl->append(density=OPERATOR_NEW RealFlowVariable(1,TEMP,CELL,
"density"));
rl->append(eigvalue=OPERATOR_NEW RealFlowVariable(SPACEDIM+2,TEMP,
CELL,"eigvalue"));
rl->append(eigvecw=OPERATOR_NEW RealFlowVariable(
(SPACEDIM+2)*(SPACEDIM+2),TEMP,CELL,"eigvecw"));
rl->append(eigvecwinv=OPERATOR_NEW RealFlowVariable(
(SPACEDIM+2)*(SPACEDIM+2),TEMP,CELL,"eigvecwinv"));
rl->append(pressure=OPERATOR_NEW RealFlowVariable(1,TEMP,CELL,
"pressure"));
rl->append(velocity=OPERATOR_NEW RealFlowVariable(SPACEDIM,TEMP,CELL,
"velocity"));
rl->append(wleft=OPERATOR_NEW RealFlowVariable(SPACEDIM+2,TEMP,SIDE,
"wleft"));
rl->append(wright=OPERATOR_NEW RealFlowVariable(SPACEDIM+2,TEMP,SIDE,
"wright"));
rl->append(dw=OPERATOR_NEW RealFlowVariable(SPACEDIM+2,TEMP,AXISEDGE,
"dw"));
#if (SPACEDIM==2)
rl->append(csstrip=OPERATOR_NEW RealFlowVariable(SPACEDIM+2,TEMP,
AXISCELL,"csstrip"));
//rl->append(cslstrip=OPERATOR_NEW RealFlowVariable(SPACEDIM+2,TEMP,
// AXISEDGE,"cslstrip"));
//rl->append(csrstrip=OPERATOR_NEW RealFlowVariable(SPACEDIM+2,TEMP,
// AXISEDGE,"csrstrip"));
rl->append(dudw=OPERATOR_NEW RealFlowVariable(
(SPACEDIM+2)*(SPACEDIM+2),TEMP,AXISCELL,"dudw"));
rl->append(dudwinv=OPERATOR_NEW RealFlowVariable(
(SPACEDIM+2)*(SPACEDIM+2),TEMP,AXISCELL,"dudwinv"));
//rl->append(eigvecu=OPERATOR_NEW RealFlowVariable(
// (SPACEDIM+2)*(SPACEDIM+2),TEMP,AXISCELL,"eigvecu"));
//rl->append(eigvecuinv=OPERATOR_NEW RealFlowVariable(
// (SPACEDIM+2)*(SPACEDIM+2),TEMP,AXISCELL,"eigvecuinv"));
rl->append(evstrip=OPERATOR_NEW RealFlowVariable(
(SPACEDIM+2)*(SPACEDIM+2),TEMP,AXISCELL,"evstrip"));
rl->append(evinvstrip=OPERATOR_NEW RealFlowVariable(
(SPACEDIM+2)*(SPACEDIM+2),TEMP,AXISCELL,"evinvstrip"));
rl->append(fstrip=OPERATOR_NEW RealFlowVariable(SPACEDIM+2,TEMP,
AXISEDGE,"fstrip"));
rl->append(wstrip=OPERATOR_NEW RealFlowVariable(SPACEDIM+2,TEMP,
AXISCELL,"wstrip"));
rl->append(wlstrip=OPERATOR_NEW RealFlowVariable(SPACEDIM+2,TEMP,
AXISEDGE,"wlstrip"));
rl->append(wrstrip=OPERATOR_NEW RealFlowVariable(SPACEDIM+2,TEMP,
AXISEDGE,"wrstrip"));
#endif
if (real_error_estimation_list) {
// TRACER_CALL(t,"GasDynamics::GasDynamics");
RealAliasedFlowVariable *var=
OPERATOR_NEW RealAliasedFlowVariable(mass,ERROR);
real_error_est
GD.C.zip_GODUNOV_Godunov Euler C_gas.c_gd.c
版权申诉
156 浏览量
2022-09-21
07:39:28
上传
评论
收藏 8KB ZIP 举报
weixin_42653672
- 粉丝: 89
- 资源: 1万+
最新资源
- SQL+语法参考手册(SQL)/数据类型+资料介绍过程
- 基于python+flask+mysql实现的豆瓣电影可视化系统+源代码+文档说明+数据库.zip
- 本教程将引导你从头开始学习Python,帮助你掌握Python的基础知识,为进一步学习和应用Python打下坚实的基础
- ASP.NET高校学生宿舍管理系统的设计与实现(源代码+论文).zip
- verilog滚动显示-CSDN博客.html
- ASP.NET公交车管理系统的实现与设计(源代码+论文).zip
- 本文将详细阐述C语言的基础知识,帮助读者建立坚实的编程基础
- PHP 语言简介+ PHP 的特性+ PHP 3 与 PHP4 +PHP4 的优越性
- C 语言教程+从概念+基础到数组+结构体+文件
- QT+QListWidget实现列表数据查询代码示例
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈