亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? main.cpp

?? OFELI is an object oriented library of C++ classes for development of finite element codes. Its main
?? CPP
字號(hào):
/*==============================================================================

                              ****************************
                              *         P  N  S  2       *
                              ****************************

     A FINITE ELEMENT CODE FOR DYNAMIC INCOMPRESSIBLE FLUID FLOW ANALYSIS
                                  IN 2-D GEOMETRIES

  ==============================================================================

   Copyright (C) 1998 - 2002 Rachid Touzani

   This program is free software; you can redistribute it and/or modify it under
   the terms of the GNU General Public License as published by the Free 
   Software Foundation; Version 2 of the License.

   This program is distributed in the hope that it will be useful, but WITHOUT
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
   FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 
   details.

   You should have received a copy of the GNU General Public License 
   along with this program; if not, write to the :

   Free Software Foundation
   Inc., 59 Temple Place - Suite 330
   Boston, MA  02111-1307, USA

  ==============================================================================*/

#include "main.h"

int main(int argc, char *argv[])
{
   int      nb_it, step, m_it=0;
   ofstream lf;
   double   tm = 0;
   double   cfl = 0;
   FDF      *vff=NULL, *pff=NULL, *sff=NULL, *wff=NULL;
   VDF      *vdf=NULL;
   Timer    cpu_time[4];

   if (argc < 2) {
     cout << "\n\nUsage:  pns2  <parameter_file>" << endl;
     return 0;
   }

   IPF data("pns2 - 1.0",argv[1]);
   int verbose = data.Verbose();
   int output_flag = data.Output();
   int save_flag = data.Save();
   int plot_flag = data.Plot();
   int init_flag = data.Init();
   double deltat = data.TimeStep();
   double max_time = data.MaxTime();
   double dens = data.DoublePar(1);
   double visc = data.DoublePar(2);
   double tol = data.Tolerance();

   lf.open(data.AuxFile(1),ios::out);
   lf << "=================================================================================\n\n";
   lf << "                                   PNS2\n\n";
   lf << "                       A Finite Element Code for\n";
   lf << "             2-D Dynamic Incompressible Fluid Flow Analysis\n\n";
   lf << "                          V E R S I O N   2.1\n\n";
   lf << "=================================================================================\n\n";

//----------
// Read data
//----------


// Read Mesh data
   if (verbose > 1)
     cout << "Reading mesh data ...\n";
   Mesh ms(data.MeshFile(1));
//   ms.NumberEquations(1);
   int nb_dof = ms.Dim();
   int nb_eq = ms.NbNodes();

// Allocate memory for matrices and vectors
   if (verbose > 1)
     cout << "Allocating memory for matrices and vectors ...\n";
   NodeVect<> uf(ms,nb_dof,"Velocity");
   NodeVect<> pf(ms,1,"Pressure");
   NodeVect<> psi(ms,1,"Stream");
   Vect<> u0(2*nb_eq), u(2*nb_eq), v(2*nb_eq), c(2*nb_eq);
   Vect<> ub(2*ms.NbElements()), p(nb_eq), q(nb_eq);

   cout << "Running pns2 ...\n\n";
   cout << "Read execution information in file : ";
   cout << data.AuxFile(1) << endl;
//   if (data.Data())
     vdf = new VDF(ms,data.DataFile());

// Print Mesh data
   if (verbose > 5)
     cout << ms;

// Read initial condition, boundary conditions, body and boundary forces

   int nb_step = int((max_time-tm)/deltat);
   if (save_flag > nb_step || save_flag == 0)
     save_flag = nb_step;
   if (plot_flag > nb_step)
     plot_flag = nb_step;
   if (plot_flag) {
     vff = new FDF(data.AuxFile(2),FDF_WRITE);
     pff = new FDF(data.AuxFile(3),FDF_WRITE);
     sff = new FDF(data.AuxFile(4),FDF_WRITE);
     wff = new FDF(data.AuxFile(5),FDF_WRITE);
   }


// Print File Information
// ----------------------

   lf << "FILE INFORMATION :\n\n";
   lf << "Mesh file :                            " << data.MeshFile(1) << endl;
   if (data.Init()==GET_FROM_FDF)
     lf << "Initial Data file :                    " << data.InitFile() << endl;
   if (data.BF()==GET_FROM_FDF)
     lf << "Body Force file :                      " << data.BFFile() << endl;
   if (data.SF()==GET_FROM_FDF)
     lf << "Boundary Traction file :               " << data.SFFile() << endl;
   if (plot_flag) {
     lf << "Velocity saved in file :               " << data.AuxFile(2) << endl;
     lf << "Pressure saved in file :               " << data.AuxFile(3) << endl;
     lf << "Stream Function saved in file :        " << data.AuxFile(4) << endl;
     lf << "Vorticity saved in file :              " << data.AuxFile(5) << endl;
     lf << "Intermedite Solutions saved in file  : " << data.AuxFile(6) << endl;
   }
   lf << endl << endl << "Viscosity       : " << visc << endl;
   lf << "Density         : " << dens << endl;
   lf << "Time Step       : " << deltat << endl << endl;


// Calculate Pressure and Velocity Matrices
// ----------------------------------------

   cpu_time[0].Start();
   Vect<> M(nb_eq);
   if (verbose > 1)
     cout << "Calculating Pressure Matrix ...\n";
   SpMatrix<> Ap(ms,NODE_DOF,1);
   PMatrix(deltat/dens,ms,Ap,M);
   ILUPrec< double,SpMatrix<> > *Pp = new ILUPrec< double,SpMatrix<> >(Ap);
   cpu_time[0].Stop();
   SpMatrix<> Av(ms);
   VMatrix(deltat,dens,visc,ms,Av);
   ILUPrec< double,SpMatrix<> > Pv(Av);

// ====================
// Loop over time steps
// ====================

   u0 = u;
   if (data.Init()==GET_FROM_VDF)
     vdf->Get(INITIAL,u);

   InitialV(deltat/dens, ms, Ap, M, *Pp, v, u, ub, p, q);
   lf.setf(ios::scientific);
   lf << "\n\nTIME INTEGRATION HISTORY :\n";
   lf << "\nTime Step      Time         Velocity Norm      cfl            Stationary Conv.\n\n";

   for (step=1; step<=nb_step; step++) {

      tm += deltat;
      if (verbose > 1)
        cout << "\n---------------------------------------------------------------------" << endl;
      cout << "Time step " << step << " ... Time = " << tm << endl;


//    Solve Momentum Equations
//    ------------------------

      if (verbose > 1)
        cout << "Solve Momentum Equations ..." << endl;
      cpu_time[1].Start();
      Momentum(step, tm, deltat, ms, *vdf, u, v, ub, c, Av, Pv, p, dens, visc, cfl, verbose);
      if (verbose > 0)
        cout << "CFL = " << cfl << endl;
      cpu_time[1].Stop();

//    Solve Pressure Equation and Update Velocity
//    -------------------------------------------

      if (verbose > 1)
        cout << "Calculating Pressure ..." << endl;
      cpu_time[2].Start();
      nb_it = CalPres(deltat, ms, Ap, *Pp, u, ub, p, q);

      if (verbose > 0)
        cout << "Nb. of CG Iterations for pressure   : " << nb_it << endl;
      cpu_time[2].Stop();

      if (verbose > 1)
        cout << "Updating Velocity ..." << endl;
      cpu_time[3].Start();
      UpdateV(ms, deltat/dens, M, q, u, ub);
      cpu_time[3].Stop();

//    Print Solution Information
//    --------------------------

      m_it += nb_it;
      u0 -= u;
      double diff = u0.NormMax()/deltat;
      double uu = u.NormMax();
      lf << setw(6) << step << "      " << setprecision(2) << setw(10) << tm;
      lf << "      " << setprecision(4) << setw(8) << uu << "      ";
      lf << setprecision(4) << setw(8) << cfl << "   ";
      lf << "      " << setprecision(6) << setw(10) << diff << endl;
      if (verbose > 1) 
        cout << "Velocity Max-Norm    : " << uu << endl;
      if (verbose > 0)
        cout << "Discrepancy          : " << diff << endl;
      u0 = u;
      if (diff < tol) {
        lf << "\n\n*** Convergence to Stationary Solution ***\n";
        cout << "\n---------------------------------------------------------------------\n";
        cout << "Convergence to Stationary Solution." << endl;
        step = nb_step;
      }

//    Output and/or Store solution

      uf.Fill(u); uf.Time(tm); psi.Time(tm);
      pf.Fill(p,1); pf.Time(tm);

      if (output_flag > 0 && output_flag%step==0) {
        cout << uf;
        cout << p;
      }

//    Save in plot file

      if (plot_flag > 0 && step%plot_flag==0) {
        vff->Put(uf);
        pff->Put(pf);
        StreamF(ms,u,psi);
        psi.Name("Stream");
        sff->Put(psi);
        Vorticity(dens/deltat,ms,u,M,psi);
        psi.Name("Vorticity");
        wff->Put(psi);
      }

//    Save in restart file

      if (save_flag > 0 && save_flag%step==0) {
        FDF ffz(data.AuxFile(6),FDF_WRITE);
        ffz.Put(u,tm);
        ffz.Put(ub,tm);
        ffz.Put(p,tm);
      }
   }

   lf << "\n\nMean Nb. of Iterations per Time Step : " << m_it/step << endl;
   lf << "\n\nCPU TIMES (in Seconds) :\n\n";
   lf << "Calculating Pressure Matrix : " << setprecision(2) << cpu_time[0].ClockTime() << endl;
   lf << "Solving Momentum Equations :  " << setprecision(2) << cpu_time[1].ClockTime();
   lf << " (" << cpu_time[1].ClockTime()/double(step) << " per time step)\n";
   lf << "Solving Pressure Equation :   " << setprecision(2) << cpu_time[2].ClockTime();
   lf << " (" << cpu_time[2].ClockTime()/double(step) << " per time step)\n";
   lf << "Updating Velocity :           " << setprecision(2) << cpu_time[3].ClockTime();
   lf << " (" << cpu_time[3].ClockTime()/double(step) << " per time step)\n";
   double tt = cpu_time[0].ClockTime() + cpu_time[1].ClockTime() + 
               cpu_time[2].ClockTime() + cpu_time[3].ClockTime();
   lf << "\nTOTAL TIME :   " << setprecision(2) << tt;

   delete Pp;
   if (vff) delete vff;
   if (pff) delete pff;
   if (sff) delete sff;
   if (wff) delete wff;
   if (vdf) delete vdf;
   lf.close();
   return 0;
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲同性同志一二三专区| 日本韩国一区二区三区视频| 成人黄色小视频在线观看| 成人激情免费视频| 欧美性极品少妇| 欧美大尺度电影在线| 国产欧美精品区一区二区三区| 国产精品久久看| 亚洲一区二区三区四区在线观看| 久久精品免费观看| 国产99久久久国产精品免费看| 91激情五月电影| 日韩午夜在线播放| 国产欧美日韩三区| 亚洲成人免费视频| 韩国中文字幕2020精品| 91在线观看一区二区| 欧美高清性hdvideosex| 国产三级一区二区| 亚洲精选免费视频| 国产在线精品一区二区三区不卡| 色又黄又爽网站www久久| 91精品国产免费久久综合| 国产欧美精品区一区二区三区 | 亚洲综合色丁香婷婷六月图片| 奇米四色…亚洲| 不卡电影免费在线播放一区| 欧美精品乱码久久久久久| 久久久久久久久久久黄色 | 欧美视频一区二| 久久综合色综合88| 亚洲一线二线三线视频| 国产精品一区二区三区网站| 在线精品视频一区二区三四| 久久久久久99精品| 午夜久久电影网| 99久久精品国产网站| 日韩久久久久久| 亚洲国产一区在线观看| 粉嫩在线一区二区三区视频| 欧美一区二区三区视频免费播放| 中文字幕一区在线| 极品瑜伽女神91| 欧美女孩性生活视频| 亚洲天堂免费看| 丁香一区二区三区| 精品国产一区二区三区久久影院| 亚洲在线成人精品| 99re66热这里只有精品3直播 | 欧美色中文字幕| 国产人久久人人人人爽| 蜜臀久久99精品久久久久宅男 | 亚洲精品乱码久久久久久久久| 国模冰冰炮一区二区| 欧美电影影音先锋| 亚洲永久免费av| 99久久精品免费看国产| 国产精品福利影院| 国产福利91精品一区二区三区| 欧美二区乱c少妇| 亚洲午夜av在线| 91丨porny丨在线| 国产精品久久久久久久久久久免费看 | 26uuu色噜噜精品一区二区| 玉足女爽爽91| av在线不卡免费看| 国产精品另类一区| 国产电影一区二区三区| 精品日韩在线一区| 久久成人免费电影| 精品国产乱码久久久久久闺蜜| 日日夜夜精品视频免费| 欧美日韩国产美| 亚洲国产欧美一区二区三区丁香婷| 91免费视频观看| 日韩毛片高清在线播放| 99精品视频在线观看免费| 中文成人综合网| 成人v精品蜜桃久久一区| 中文字幕免费不卡| 成人av电影免费在线播放| 中文字幕av一区二区三区免费看 | 久久久av毛片精品| 国模一区二区三区白浆| 26uuuu精品一区二区| 经典一区二区三区| 欧美国产成人精品| 99免费精品在线观看| 亚洲免费在线看| 欧美亚男人的天堂| 偷拍一区二区三区四区| 日韩一区二区影院| 国产一区二区视频在线播放| 欧美精品一区男女天堂| 国产91富婆露脸刺激对白| 国产精品久久久一本精品 | 成人免费视频在线观看| 久久综合久久综合亚洲| 精品久久久久久久久久久久包黑料| 久久99精品国产麻豆婷婷 | 国产a视频精品免费观看| 国产精品网站在线播放| 色中色一区二区| 日韩成人精品视频| 久久久久亚洲蜜桃| 国产69精品久久777的优势| 亚洲人吸女人奶水| 欧美肥妇毛茸茸| 国模娜娜一区二区三区| 综合在线观看色| 67194成人在线观看| 国产一区二区精品久久91| 国产精品国模大尺度视频| 欧美日韩免费在线视频| 国产一区二区在线视频| 中文字幕精品在线不卡| 欧美亚洲尤物久久| 激情国产一区二区| 亚洲欧美色综合| 欧美一级免费观看| 成人午夜视频福利| 午夜婷婷国产麻豆精品| 久久久噜噜噜久久中文字幕色伊伊 | 色综合久久久久综合| 日韩在线播放一区二区| 国产亚洲精品超碰| 色偷偷88欧美精品久久久| 免费的成人av| 最好看的中文字幕久久| 精品少妇一区二区三区免费观看 | 日韩毛片精品高清免费| 日韩欧美国产一区在线观看| av亚洲精华国产精华精| 无码av免费一区二区三区试看 | 91在线你懂得| 久久97超碰国产精品超碰| 欧美激情一区二区三区在线| 欧美性大战久久| 国产999精品久久| 日本麻豆一区二区三区视频| 国产精品久久久久久妇女6080| 91精品免费观看| 色天天综合色天天久久| 国产一区二区三区精品视频| 亚洲高清视频在线| 国产精品久久午夜夜伦鲁鲁| 精品免费日韩av| 欧美日韩免费观看一区二区三区| 成人免费视频一区二区| 精品一区二区在线免费观看| 亚洲与欧洲av电影| 中文字幕一区在线观看视频| 久久亚洲精华国产精华液| 欧美日韩午夜在线视频| 91麻豆免费观看| 国产成人av一区二区三区在线| 美腿丝袜亚洲色图| 亚洲一区在线观看视频| 中文字幕一区三区| 日本一区二区三区在线不卡 | 精品亚洲免费视频| 亚洲bt欧美bt精品777| 亚洲色图视频网| 中文字幕巨乱亚洲| 国产女人aaa级久久久级| 欧美精品一区二区三区蜜桃视频| 欧美美女喷水视频| 欧美私人免费视频| 日本道精品一区二区三区| av不卡免费在线观看| 东方aⅴ免费观看久久av| 国产精品羞羞答答xxdd| 国产一区二区三区免费在线观看| 麻豆精品一区二区| 日本在线不卡一区| 免费在线一区观看| 婷婷中文字幕综合| 丝袜诱惑制服诱惑色一区在线观看| 亚洲最新视频在线观看| 亚洲卡通欧美制服中文| 一区二区三区日韩| 中文字幕一区二区三| 日韩美女精品在线| 亚洲精品中文在线影院| 一区二区三区不卡在线观看| 亚洲乱码中文字幕| 有码一区二区三区| 亚洲五码中文字幕| 爽爽淫人综合网网站| 日韩av在线播放中文字幕| 视频一区中文字幕| 美女性感视频久久| 久久国产精品99精品国产| 国产一区二区三区在线观看免费| 国产精品资源站在线| 成人性生交大片免费看中文网站| 成人高清伦理免费影院在线观看| a级精品国产片在线观看| 色综合久久久久久久久| 欧美亚洲综合网|