Beispiel #1
0
void City::generate()
{
  createPrimaryRoadNetwork();
  createZones();
  createSecondaryRoadNetwork();
  createBlocks();
  createBuildings();
}
//---------------------------------------------------------------------------
int main(int argc, char *argv[])
{
  argList args = setRootCase( argc, argv );
    
  TimeHolder runTime=createTime( Time::controlDictName, args );
    
  fvMeshHolder mesh = createMesh( runTime );
  
  basicPsiThermoHolder pThermo; volScalarFieldHolder rho; volScalarFieldHolder p;
  volScalarFieldHolder h; volScalarFieldHolder psi;
  volVectorFieldHolder U; surfaceScalarFieldHolder phi;
  compressible::turbulenceModelHolder turbulence; 
  volScalarFieldHolder DpDt;
  
  result_createFields result = createFields( runTime, mesh, pThermo, rho, p, h, psi, U,  phi, turbulence, DpDt );
  dimensionedScalar rhoMax = result.m_rhoMax;
  dimensionedScalar rhoMin = result.m_rhoMin;

  MRFZonesHolder mrfZones;
  porousZonesHolder pZones;
  Switch pressureImplicitPorosity;
  
  createZones( mesh, U, mrfZones, pZones, pressureImplicitPorosity );

  scalar cumulativeContErr = initContinuityErrs();
  
  pimpleControlHolder pimple(mesh);

  Info<< "\nStarting time loop\n" << endl;

  while (runTime->run())
  {
    bool adjustTimeStep; scalar maxCo; scalar maxDeltaT;
    readTimeControls( runTime, adjustTimeStep, maxCo, maxDeltaT );

    scalar coNum, meanCoNum;
    compressibleCourantNo( runTime, mesh, phi, rho, coNum, meanCoNum );

    setDeltaT( runTime, adjustTimeStep, maxCo, coNum, maxDeltaT );
    (*runTime)++;

    Info<< "Time = " << runTime->timeName() << nl << endl;

    rhoEqn( rho, phi );

    // --- Pressure-velocity PIMPLE corrector loop
    for (pimple->start(); pimple->loop(); (*pimple)++)
    {
      if (pimple->nOuterCorr() != 1)
      {
        p->storePrevIter();
        rho->storePrevIter();
      }

      fvVectorMatrixHolder UEqn = fun_Ueqn( pimple, rho, p, U, phi, turbulence, mrfZones, pZones );
      
      fun_hEqn( pThermo, rho, p, h, phi, turbulence, DpDt );
      
      // --- PISO loop
      for (int corr=0; corr<pimple->nCorr(); corr++)
      {
        fun_pEqn( mesh, runTime, pimple, pThermo, rho, p, h, psi, U, phi, turbulence, UEqn,
                  mrfZones, DpDt, cumulativeContErr, corr, rhoMax, rhoMin );
      }

      if (pimple->turbCorr())
      {
        turbulence->correct();
      } 
    }

    runTime->write();

    Info<< "ExecutionTime = " << runTime->elapsedCpuTime() << " s"
        << "  ClockTime = " << runTime->elapsedClockTime() << " s"
        << nl << endl;
  }

  Info<< "End\n" << endl;

  return 0;
}