Пример #1
0
void LayoutRepository::load(XmlOptionFile file)
{
	// load custom layouts:
	mLayouts.clear();

	this->blockSignals(true);

	QDomElement layouts = file.getElement("layouts");
	QDomNode layout = layouts.firstChild();
	for (; !layout.isNull(); layout = layout.nextSibling())
	{
		if (layout.toElement().tagName() != "layout")
			continue;

		LayoutData data;
		data.parseXml(layout);

		this->insert(data);
	}

	std::vector<QString> custom = this->getAvailable();
	this->addDefaults(); // ensure we overwrite loaded layouts

	this->blockSignals(false);

	for (unsigned i=0; i<custom.size(); ++i)
		emit layoutChanged(custom[i]);
}
Пример #2
0
void LayoutRepository::insert(const LayoutData& data)
{
	unsigned pos = this->indexOf(data.getUid());
	if (pos == mLayouts.size())
		mLayouts.push_back(data);
	else
		mLayouts[pos] = data;
	emit layoutChanged(data.getUid());
}
void FraxinusMainWindowApplicationComponent::addAdditionalDefaultLayouts()
{
	std::cout << "addAdditionalDefaultLayouts" << std::endl;
	ViewServicePtr viewService = logicManager()->getViewService();
	{
		LayoutData layout = LayoutData::create("LAYOUT_VB_FLY_THROUGH", "VB FLY-THROUGH", 3, 5);
		layout.setView(2, View::VIEW_3D, LayoutRegion(0, 0, 3, 3));
		layout.setView(0, View::VIEW_3D, LayoutRegion(0, 3, 1, 2));
		layout.setView(1, ptAXIAL, LayoutRegion(1, 3, 1, 2));
		layout.setView(1, ptCORONAL, LayoutRegion(2, 3, 1, 2));
		viewService->addDefaultLayout(layout);
	}
	{
		LayoutData layout = LayoutData::create("LAYOUT_VB_CUT_PLANES", "VB CUT-PLANES", 3, 5);
		layout.setView(0, View::VIEW_3D, LayoutRegion(0, 0, 3, 3));
		layout.setView(2, View::VIEW_3D, LayoutRegion(0, 3, 1, 2));
		layout.setView(1, ptAXIAL, LayoutRegion(1, 3, 1, 2));
		layout.setView(1, ptCORONAL, LayoutRegion(2, 3, 1, 2));
		viewService->addDefaultLayout(layout);
	}
	{
		// ACS 3D
		LayoutData layout = LayoutData::create("LAYOUT_ACAS", "ACAS", 2, 2);
		layout.setView(1, ptAXIAL, LayoutRegion(0, 0));
		layout.setView(1, ptCORONAL, LayoutRegion(0, 1));
		layout.setView(1, ptSAGITTAL, LayoutRegion(1, 1));
		layout.setView(0, ptAXIAL, LayoutRegion(1, 0));
		viewService->addDefaultLayout(layout);
	}
}
Пример #4
0
void
EBPoissonOp::
defineStencils()
{
  CH_TIMERS("EBPoissonOp::defineStencils");
  CH_TIMER("opStencil_define", t1);
  CH_TIMER("colorStencil_define", t2);

  // define ebstencil for irregular applyOp
  m_opEBStencil.define(m_eblg.getDBL());
  // create vofstencils for applyOp
  LayoutData<BaseIVFAB<VoFStencil> > opStencil;
  opStencil.define(m_eblg.getDBL());
  //define bc stencils and create flux stencil
  m_ebBC->define((*m_eblg.getCFIVS()), m_dxScale*m_beta);
  LayoutData<BaseIVFAB<VoFStencil> >* fluxStencil = m_ebBC->getFluxStencil(0);
  //create and define colored stencils (2 parts)
  LayoutData<BaseIVFAB<VoFStencil> > colorStencil;
  colorStencil.define(m_eblg.getDBL());
  LayoutData<BaseIVFAB<VoFStencil> > rhsColorStencil;
  rhsColorStencil.define(m_eblg.getDBL());

  m_alphaDiagWeight.define(   m_eblg.getDBL());
  m_betaDiagWeight.define(   m_eblg.getDBL());
  m_vofItIrreg.define( m_eblg.getDBL()); // vofiterator cache

  Box domainBox = m_eblg.getDomain().domainBox();
  Box sideBoxLo[SpaceDim];
  Box sideBoxHi[SpaceDim];
  for (int idir = 0; idir < SpaceDim; idir++)
    {
      sideBoxLo[idir] = adjCellLo(domainBox, idir, 1);
      sideBoxLo[idir].shift(idir,  1);
      sideBoxHi[idir] = adjCellHi(domainBox, idir, 1);
      sideBoxHi[idir].shift(idir, -1);
      m_vofItIrregDomLo[idir].define( m_eblg.getDBL()); // vofiterator cache for domain lo
      m_vofItIrregDomHi[idir].define( m_eblg.getDBL()); // vofiterator cache for domain hi
    }

  CH_START(t1);
  for (DataIterator dit = m_eblg.getDBL().dataIterator(); dit.ok(); ++dit)
    {
      const Box& curBox = m_eblg.getDBL().get(dit());
      const EBISBox& curEBISBox = m_eblg.getEBISL()[dit()];
      const EBGraph& curEBGraph = curEBISBox.getEBGraph();

      IntVectSet notRegular = curEBISBox.getIrregIVS  (curBox);

      BaseIVFAB<VoFStencil>& curStencilBaseIVFAB = opStencil[dit()];
      BaseIVFAB<Real>&       alphaWeight  = m_alphaDiagWeight[dit()];
      BaseIVFAB<Real>&        betaWeight  = m_betaDiagWeight[dit()];
      curStencilBaseIVFAB.define(notRegular,curEBGraph, 1);
      alphaWeight.define(        notRegular,curEBGraph, 1);
      betaWeight.define(         notRegular,curEBGraph, 1);

      //cache the vofIterators
      m_vofItIrreg[dit()].define(notRegular,curEBISBox.getEBGraph());
      for (int idir = 0; idir < SpaceDim; idir++)
        {
          IntVectSet loIrreg = notRegular;
          IntVectSet hiIrreg = notRegular;
          loIrreg &= sideBoxLo[idir];
          hiIrreg &= sideBoxHi[idir];
          m_vofItIrregDomLo[idir][dit()].define(loIrreg,curEBISBox.getEBGraph());
          m_vofItIrregDomHi[idir][dit()].define(hiIrreg,curEBISBox.getEBGraph());
        }

      //Operator vofstencil
      VoFIterator& vofit = m_vofItIrreg[dit()];
      for (vofit.reset(); vofit.ok(); ++vofit)
        {
          const VolIndex& VoF = vofit();

          VoFStencil& curStencil = curStencilBaseIVFAB(VoF,0);
          getOpVoFStencil(curStencil,curEBISBox,VoF);

          Real& curAlphaWeight  = alphaWeight(VoF,0);
          Real& curBetaWeight  =   betaWeight(VoF,0);

          const Real kappa = curEBISBox.volFrac(VoF);

          curAlphaWeight = kappa;
          curBetaWeight = 0.0;
          for (int i = 0; i < curStencil.size(); i++)
            {
              if (curStencil.vof(i) == VoF)
                {
                  curBetaWeight += curStencil.weight(i);
                  break;
                }
            }

          curStencil *= m_beta;
          if (m_alpha != 0)
            {
              curStencil.add(VoF, kappa*m_alpha);
            }

          const IntVect& iv = VoF.gridIndex();

          for (int idir = 0; idir < SpaceDim; idir++)
            {
              Box loSide = bdryLo(m_eblg.getDomain(),idir);
              loSide.shiftHalf(idir,1);
              if (loSide.contains(iv))
                {
                  Real faceAreaFrac = 0.0;
                  Vector<FaceIndex> faces = curEBISBox.getFaces(VoF,idir,Side::Lo);
                  for (int i = 0; i < faces.size(); i++)
                    {
                      faceAreaFrac += curEBISBox.areaFrac(faces[i]);
                    }
                  curBetaWeight += -faceAreaFrac * m_invDx2[idir];
                }

              Box hiSide = bdryHi(m_eblg.getDomain(),idir);
              hiSide.shiftHalf(idir,-1);
              if (hiSide.contains(iv))
                {
                  Real faceAreaFrac = 0.0;
                  Vector<FaceIndex> faces = curEBISBox.getFaces(VoF,idir,Side::Hi);
                  for (int i = 0; i < faces.size(); i++)
                    {
                      faceAreaFrac += curEBISBox.areaFrac(faces[i]);
                    }
                  curBetaWeight += -faceAreaFrac * m_invDx2[idir];
                }
            }

          if (curBetaWeight == 0.0)
            {
              curBetaWeight = -1.0;
            }
          if (fluxStencil != NULL)
            {
              BaseIVFAB<VoFStencil>& fluxStencilBaseIVFAB = (*fluxStencil)[dit()];
              VoFStencil& fluxStencilPt = fluxStencilBaseIVFAB(VoF,0);
              curStencil += fluxStencilPt;
            }
        }//vofit

      //Operator ebstencil
      m_opEBStencil[dit()] = RefCountedPtr<EBStencil>(new EBStencil(m_vofItIrreg[dit()].getVector(), opStencil[dit()], m_eblg.getDBL().get(dit()), m_eblg.getEBISL()[dit()], m_ghostCellsPhi, m_ghostCellsRHS));

    }//dit
  CH_STOP(t1);

  //color vofstencils and ebstencils
  IntVect color = IntVect::Zero;
  IntVect limit = IntVect::Unit;
  color[0]=-1;
  // Loop over all possibilities (in all dimensions)
  CH_START(t2);
  for (int icolor = 0; icolor < m_colors.size(); icolor++)
    {
      m_colorEBStencil[icolor].define(m_eblg.getDBL());
      m_rhsColorEBStencil[icolor].define(m_eblg.getDBL());
      m_vofItIrregColor[icolor].define( m_eblg.getDBL());
      for (int idir = 0; idir < SpaceDim; idir++)
        {
          m_vofItIrregColorDomLo[icolor][idir].define( m_eblg.getDBL());
          m_vofItIrregColorDomHi[icolor][idir].define( m_eblg.getDBL());
        }
      for (DataIterator dit = m_eblg.getDBL().dataIterator(); dit.ok(); ++dit)
        {
          IntVectSet ivsColor;
          const EBISBox& curEBISBox = m_eblg.getEBISL()[dit()];
          const EBGraph& curEBGraph = curEBISBox.getEBGraph();
          Box dblBox( m_eblg.getDBL().get(dit()) );

          BaseIVFAB<VoFStencil>& curStencilBaseIVFAB = opStencil[dit()];
          BaseIVFAB<VoFStencil>& colorStencilBaseIVFAB = colorStencil[dit()];
          BaseIVFAB<VoFStencil>& rhsColorStencilBaseIVFAB = rhsColorStencil[dit()];

          const BaseIVFAB<Real>& curAlphaWeight = m_alphaDiagWeight[dit()];
          const BaseIVFAB<Real>& curBetaWeight  = m_betaDiagWeight[dit()];

          VoFIterator& vofit = m_vofItIrreg[dit()];

          int vofOrdinal = 0;
          for (vofit.reset(); vofit.ok(); ++vofit, ++vofOrdinal)
            {
              const VolIndex& vof = vofit();
              const IntVect& iv = vof.gridIndex();

              bool doThisVoF = true;
              for (int idir = 0; idir < SpaceDim; idir++)
                {
                  if (iv[idir] % 2 != color[idir])
                    {
                      doThisVoF = false;
                      break;
                    }
                }

              if (doThisVoF)
                {
                  ivsColor |= iv;
                }
            }

          m_vofItIrregColor[icolor][dit()].define(ivsColor, curEBGraph);
          colorStencilBaseIVFAB.define(ivsColor, curEBGraph, 1);
          rhsColorStencilBaseIVFAB.define(ivsColor, curEBGraph, 1);

          for (int idir = 0; idir < SpaceDim; idir++)
            {
              IntVectSet loIrregColor = ivsColor;
              IntVectSet hiIrregColor = ivsColor;
              loIrregColor &= sideBoxLo[idir];
              hiIrregColor &= sideBoxHi[idir];
              m_vofItIrregColorDomLo[icolor][idir][dit()].define(loIrregColor,curEBISBox.getEBGraph());
              m_vofItIrregColorDomHi[icolor][idir][dit()].define(hiIrregColor,curEBISBox.getEBGraph());
            }

          VoFIterator& vofitcolor = m_vofItIrregColor[icolor][dit()];
          for (vofitcolor.reset(); vofitcolor.ok(); ++vofitcolor)
            {
              const VolIndex& vof = vofitcolor();

              VoFStencil& curStencil = curStencilBaseIVFAB(vof,0);
              VoFStencil& colorStencil = colorStencilBaseIVFAB(vof,0);
              VoFStencil& rhsColorStencil = rhsColorStencilBaseIVFAB(vof,0);
              Real weightIrreg = m_alpha*curAlphaWeight(vof,0) + m_beta*curBetaWeight(vof,0);
              colorStencil = curStencil;
              colorStencil *= (-1.0/weightIrreg);
              colorStencil.add(vof, 1.0);
              rhsColorStencil.add(vof, 1.0/weightIrreg);
            }

          Vector<VolIndex> srcVofs = m_vofItIrregColor[icolor][dit()].getVector();

          //color ebstencils
          m_colorEBStencil[icolor][dit()]    = RefCountedPtr<EBStencil>(new EBStencil(srcVofs, colorStencil[dit()]   ,  m_eblg.getDBL().get(dit()), m_eblg.getEBISL()[dit()], m_ghostCellsPhi, m_ghostCellsPhi));
          m_rhsColorEBStencil[icolor][dit()] = RefCountedPtr<EBStencil>(new EBStencil(srcVofs, rhsColorStencil[dit()]     , m_eblg.getDBL().get(dit()) , m_eblg.getEBISL()[dit()], m_ghostCellsRHS, m_ghostCellsPhi));

        }//dit
    }//color
  CH_STOP(t2);
}
Пример #5
0
void
BoxLayout::define(const LayoutData<Box>& a_newLayout)
{
  const BoxLayout& baseLayout = a_newLayout.boxLayout();

  // First copy from the base layout.
  m_boxes =  RefCountedPtr<Vector<Entry> >(
               new Vector<Entry>(*(baseLayout.m_boxes)));
  m_layout = baseLayout.m_layout;
#ifdef CH_MPI
  m_dataIndex = baseLayout.m_dataIndex;
#endif
  // Now replace each box with the new box.

  // This is Vector<Box*> because a_newLayout is LayoutData<Box>.
  // It is LOCAL only.
  const Vector<Box*>& ptrNewBoxes = a_newLayout.m_vector;

#ifdef CH_MPI
  int len = ptrNewBoxes.size();
  Vector<Box> localNewBoxes(len);
  for (int ivec = 0; ivec < len; ivec++)
    {
      localNewBoxes[ivec] = Box(*(ptrNewBoxes[ivec]));
    }
  Vector< Vector<Box> > gatheredNewBoxes;
  int iprocdest = 0;
  gather(gatheredNewBoxes, localNewBoxes, iprocdest);

  // Now iprocdest has every Box gatheredNewBoxes[iproc][ivec].
  // We want to broadcast gatheredNewBoxes to allNewBoxes,
  // but we have to do it one Vector<Box> at a time.
  Vector< Vector<Box> > allNewBoxes;
  allNewBoxes.resize(numProc());
  if (CHprocID() == iprocdest)
    {
      for (int iproc = 0; iproc < numProc(); iproc++)
        {
          allNewBoxes[iproc] = Vector<Box>(gatheredNewBoxes[iproc]);
        }
    }
  // Processor iprocdest knows Vector< Vector<Box> > allNewBoxes.
  // Now broadcast it.
  for (int iproc = 0; iproc < numProc(); iproc++)
    {
      // void broadcast(T& a_inAndOut, int a_src) requires for T:
      // linearSize<T>, linearIn<T>, linearOut<T>.
      broadcast(allNewBoxes[iproc], iprocdest);
    }
  // Now every processor knows Vector< Vector<Box> > allNewBoxes.

  // indexProc[proc] is current index within proc.
  Vector<unsigned int> indexProc(numProc(), 0);
  unsigned int proc;
  unsigned int indexLocal;
  for (int ivec = 0; ivec < m_boxes->size(); ivec++)
    {
      proc = (*m_boxes)[ivec].m_procID;
      indexLocal = indexProc[proc];
      (*m_boxes)[ivec].box = Box(allNewBoxes[proc][indexLocal]);
      indexProc[proc]++;
    }
#else
  for (int ivec = 0; ivec < m_boxes->size(); ivec++)
    {
      (*m_boxes)[ivec].box = Box(*(ptrNewBoxes[ivec]));
    }
#endif

  closeNoSort(); // does: *m_sorted = false; *m_closed = true; buildDataIndex();
}
Пример #6
0
void LayoutRepository::addDefault(LayoutData data)
{
	mDefaultLayouts.push_back(data.getUid());
	mLayouts.push_back(data);
}
Пример #7
0
/** insert the hardcoded layouts into mLayouts.
 *
 */
void LayoutRepository::addDefaults()
{
	mDefaultLayouts.clear();

	/*
	 *
	 3D______________

	 3D
	 3D AD
	 3D ACS

	 Oblique ________

	 3D AnyDual x1
	 3D AnyDual x2
	 AnyDual x3

	 Orthogonal______

	 3D ACS x1
	 3D ACS x2
	 ACS x3

	 RT______________

	 RT
	 Us Acq
	 */

	// ------------------------------------------------------
	// --- group of 3D-based layouts ------------------------
	// ------------------------------------------------------
	this->addDefault(LayoutData::createHeader("LAYOUT_GROUP_3D", "3D"));
	{
		// 3D only
		LayoutData layout = LayoutData::create("LAYOUT_3D", "3D", 1, 1);
		layout.setView(0, View::VIEW_3D, LayoutRegion(0, 0));
		this->addDefault(layout);
	}
	{
		// 3D ACS
		LayoutData layout = LayoutData::create("LAYOUT_3D_ACS", "3D ACS", 3, 4);
		layout.setView(0, View::VIEW_3D, LayoutRegion(0, 0, 3, 3));
		layout.setView(1, ptAXIAL, LayoutRegion(0, 3));
		layout.setView(1, ptCORONAL, LayoutRegion(1, 3));
		layout.setView(1, ptSAGITTAL, LayoutRegion(2, 3));
		this->addDefault(layout);
	}
    {
        // A 3DCS
        LayoutData layout = LayoutData::create("LAYOUT_A_3DCS", "A 3DCS", 3, 4);
        layout.setView(1, ptAXIAL, LayoutRegion(0, 0, 3, 3));
        layout.setView(0, View::VIEW_3D, LayoutRegion(0, 3));
        layout.setView(1, ptCORONAL, LayoutRegion(1, 3));
        layout.setView(1, ptSAGITTAL, LayoutRegion(2, 3));
        this->addDefault(layout);
    }
    {
        // 3D 3DAC
        LayoutData layout = LayoutData::create("LAYOUT_3D_3DAC", "3D 3DAC", 3, 5);
        layout.setView(0, View::VIEW_3D, LayoutRegion(0, 0, 3, 3));
        layout.setView(1, View::VIEW_3D, LayoutRegion(0, 3, 1, 2));
        layout.setView(2, ptAXIAL, LayoutRegion(1, 3, 1, 2));
        layout.setView(2, ptCORONAL, LayoutRegion(2, 3, 1, 2));
        this->addDefault(layout);
    }
	{
		// 3D Any
		LayoutData layout = LayoutData::create("LAYOUT_3D_AD", "3D AnyDual", 2, 4);
		layout.setView(0, View::VIEW_3D, LayoutRegion(0, 0, 2, 3));
		layout.setView(1, ptANYPLANE, LayoutRegion(0, 3));
		layout.setView(1, ptSIDEPLANE, LayoutRegion(1, 3));
		this->addDefault(layout);
	}
	{
		// 3D ACS in a single view group
		LayoutData layout = LayoutData::create("LAYOUT_3D_ACS_SINGLE", "3D ACS Connected", 3, 4);
		layout.setView(0, View::VIEW_3D, LayoutRegion(0, 0, 3, 3));
		layout.setView(0, ptAXIAL, LayoutRegion(0, 3));
		layout.setView(0, ptCORONAL, LayoutRegion(1, 3));
		layout.setView(0, ptSAGITTAL, LayoutRegion(2, 3));
		this->addDefault(layout);
	}
	{
		// 3D Any in a single view group
		LayoutData layout = LayoutData::create("LAYOUT_3D_AD_SINGLE", "3D AnyDual Connected", 2, 4);
		layout.setView(0, View::VIEW_3D, LayoutRegion(0, 0, 2, 3));
		layout.setView(0, ptANYPLANE, LayoutRegion(0, 3));
		layout.setView(0, ptSIDEPLANE, LayoutRegion(1, 3));
		this->addDefault(layout);
	}

	// ------------------------------------------------------
	// --- group of oblique (Anyplane-based) layouts --------
	// ------------------------------------------------------
	this->addDefault(LayoutData::createHeader("LAYOUT_GROUP_Oblique", "Oblique"));
	{
		LayoutData layout = LayoutData::create("LAYOUT_OBLIQUE_3DAnyDual_x1", "3D Any Dual x1", 1, 3);
		layout.setView(0, View::VIEW_3D, LayoutRegion(0, 0));
		layout.setView(1, ptANYPLANE, LayoutRegion(0, 1));
		layout.setView(1, ptSIDEPLANE, LayoutRegion(0, 2));
		this->addDefault(layout);
	}
	{
		LayoutData layout = LayoutData::create("LAYOUT_OBLIQUE_3DAnyDual_x2", "3D Any Dual x2", 2, 3);
		layout.setView(0, View::VIEW_3D, LayoutRegion(0, 0, 2, 1));
		layout.setView(1, ptANYPLANE, LayoutRegion(0, 1));
		layout.setView(1, ptSIDEPLANE, LayoutRegion(1, 1));
		layout.setView(2, ptANYPLANE, LayoutRegion(0, 2));
		layout.setView(2, ptSIDEPLANE, LayoutRegion(1, 2));
		this->addDefault(layout);
	}
	{
		LayoutData layout = LayoutData::create("LAYOUT_OBLIQUE_AnyDual_x3", "Any Dual x3", 2, 3);
		layout.setView(0, ptANYPLANE, LayoutRegion(0, 0));
		layout.setView(0, ptSIDEPLANE, LayoutRegion(1, 0));
		layout.setView(1, ptANYPLANE, LayoutRegion(0, 1));
		layout.setView(1, ptSIDEPLANE, LayoutRegion(1, 1));
		layout.setView(2, ptANYPLANE, LayoutRegion(0, 2));
		layout.setView(2, ptSIDEPLANE, LayoutRegion(1, 2));
		this->addDefault(layout);
	}

	// ------------------------------------------------------
	// --- group of orthogonal (ACS-based) layouts ----------
	// ------------------------------------------------------
	this->addDefault(LayoutData::createHeader("LAYOUT_GROUP_Orthogonal", "Orthogonal"));
	{
		LayoutData layout = LayoutData::create("LAYOUT_ORTHOGONAL_3DACS_x1", "3D ACS x1", 2, 2);
		layout.setView(0, View::VIEW_3D, LayoutRegion(0, 0));
		layout.setView(1, ptAXIAL, LayoutRegion(0, 1));
		layout.setView(1, ptCORONAL, LayoutRegion(1, 0));
		layout.setView(1, ptSAGITTAL, LayoutRegion(1, 1));
		this->addDefault(layout);
	}
	{
		LayoutData layout = LayoutData::create("LAYOUT_ORTHOGONAL_3DACS_x2", "3D ACS x2", 3, 3);
		layout.setView(0, View::VIEW_3D, LayoutRegion(0, 0, 3, 1));
		layout.setView(1, ptAXIAL, LayoutRegion(0, 1));
		layout.setView(1, ptCORONAL, LayoutRegion(1, 1));
		layout.setView(1, ptSAGITTAL, LayoutRegion(2, 1));
		layout.setView(2, ptAXIAL, LayoutRegion(0, 2));
		layout.setView(2, ptCORONAL, LayoutRegion(1, 2));
		layout.setView(2, ptSAGITTAL, LayoutRegion(2, 2));
		this->addDefault(layout);
	}
	{
		LayoutData layout = LayoutData::create("LAYOUT_ORTHOGONAL_3DACS_x3", "ACS x3", 3, 3);
		layout.setView(0, ptAXIAL, LayoutRegion(0, 0));
		layout.setView(0, ptCORONAL, LayoutRegion(1, 0));
		layout.setView(0, ptSAGITTAL, LayoutRegion(2, 0));
		layout.setView(1, ptAXIAL, LayoutRegion(0, 1));
		layout.setView(1, ptCORONAL, LayoutRegion(1, 1));
		layout.setView(1, ptSAGITTAL, LayoutRegion(2, 1));
		layout.setView(2, ptAXIAL, LayoutRegion(0, 2));
		layout.setView(2, ptCORONAL, LayoutRegion(1, 2));
		layout.setView(2, ptSAGITTAL, LayoutRegion(2, 2));
		this->addDefault(layout);
	}

	// ------------------------------------------------------
	// --- group of RTsource-based layouts - single viewgroup
	// ------------------------------------------------------
	this->addDefault(LayoutData::createHeader("LAYOUT_GROUP_RT", "Realtime Source"));
	{
		LayoutData layout = LayoutData::create("LAYOUT_RT_1X1", "RT", 1, 1);
		layout.setView(0, View::VIEW_REAL_TIME, LayoutRegion(0, 0));
		this->addDefault(layout);
	}
	{
		LayoutData layout = LayoutData::create("LAYOUT_US_Acquisition", "US Acquisition", 2, 3);
		layout.setView(0, ptANYPLANE, LayoutRegion(1, 2, 1, 1));
		layout.setView(0, View::VIEW_3D, LayoutRegion(0, 2, 1, 1));
		layout.setView(0, View::VIEW_REAL_TIME, LayoutRegion(0, 0, 2, 2));
		this->addDefault(layout);
	}
}
Пример #8
0
void
EBMGAverage::
defineStencils()
{
  CH_TIME("EBMGInterp::defineStencils");

  DisjointBoxLayout gridsStenCoar;
  EBISLayout        ebislStenCoar;
  DisjointBoxLayout gridsStenFine;
  EBISLayout        ebislStenFine;
  if (m_layoutChanged)
    {
      if (m_coarsenable)
        {
          gridsStenCoar = m_buffGrids;
          ebislStenCoar = m_buffEBISL;
          gridsStenFine = m_fineGrids;
          ebislStenFine = m_fineEBISL;
        }
      else
        {
          gridsStenCoar = m_coarGrids;
          ebislStenCoar = m_coarEBISL;
          gridsStenFine = m_buffGrids;
          ebislStenFine = m_buffEBISL;
        }

    }
  else
    {
      gridsStenCoar = m_coarGrids;
      ebislStenCoar = m_coarEBISL;
      gridsStenFine = m_fineGrids;
      ebislStenFine = m_fineEBISL;
    }

  {
    CH_TIME("graph walking");

    LayoutData<Vector<VoFStencil> > averageStencil;
    LayoutData<VoFIterator > vofItIrregCoar;
    LayoutData<VoFIterator > vofItIrregFine;
    m_averageEBStencil.define(gridsStenCoar);
    averageStencil.define(    gridsStenCoar);
    vofItIrregFine.define(    gridsStenCoar); //not wrong.  trust me.
    vofItIrregCoar.define(    gridsStenCoar);

    for (DataIterator dit = gridsStenCoar.dataIterator(); dit.ok(); ++dit)
      {
        Box refBox(IntVect::Zero, IntVect::Zero);
        refBox.refine(m_refRat);
        int numFinePerCoar = refBox.numPts();

        const     Box&     boxFine = gridsStenFine[dit()];
        const EBISBox& ebisBoxFine = ebislStenFine[dit()];
        const EBGraph& ebGraphFine = ebisBoxFine.getEBGraph();

        const         Box& boxCoar = gridsStenCoar[dit()];
        const EBISBox& ebisBoxCoar = ebislStenCoar[dit()];
        const EBGraph& ebGraphCoar = ebisBoxCoar.getEBGraph();

        IntVectSet notRegularCoar = ebisBoxCoar.getIrregIVS(boxCoar);
        vofItIrregCoar[dit()].define(notRegularCoar, ebGraphCoar);

        IntVectSet ivsFine = refine(notRegularCoar, m_refRat);
        vofItIrregFine[dit()].define(ivsFine, ebGraphFine);

        const Vector<VolIndex>& allCoarVofs = vofItIrregCoar[dit()].getVector();

        Vector<VoFStencil>& averageStencils = averageStencil[dit()];

        averageStencils.resize(allCoarVofs.size());

        for (int icoar = 0; icoar < allCoarVofs.size(); icoar++)
          {
            Vector<VolIndex> fineVofs;
            if (m_refRat > 2)
              {
                fineVofs = ebislStenCoar.refine(allCoarVofs[icoar], m_refRat, dit());
              }
            else
              {
                fineVofs = ebislStenCoar[dit()].refine(allCoarVofs[icoar]);
              }

            VoFStencil& averageStencil = averageStencils[icoar];

            for (int ifine = 0; ifine < fineVofs.size(); ifine++)
              {
                averageStencil.add(fineVofs[ifine], 1./numFinePerCoar);
              }
          }

        m_averageEBStencil[dit()] = RefCountedPtr<EBStencil>(new EBStencil(allCoarVofs, averageStencil[dit()], boxCoar,  boxFine, ebisBoxCoar,  ebisBoxFine,  m_ghost, m_ghost));
      }
  }
}