Exemple #1
0
void Tile::TransferMass(ITile *t)
{
    int &myh=matterh;//GetHeight();
    if (myh<0) return ;
    if (//(t->GetHeight()<myh)&&
        (t->GetHeight()<MAXMAT+1))
        if (IsLiquid(myh)||IsGas(myh))
        {
            TransferTemp(t);
            //t->mats[t->GetHeight()+1]=mats[myh];
            t->AddTop(mats[myh]);
            RemoveMatter();
            //if (myh==0)temp=0;//actual ambient temp? neturetu but svarbu nes VV metodas taip veikia
        }
    if(stack)
        for(unsigned i=0;i<stack->GetCount();i++)
        {
            IItem *it=stack->GetItem(i);
            if(it->GetSize()<=SIZE_CAT)
            {
                stack->RemoveItem(i);
                t->AddItem(it);
                return;
            }
        }
}
Exemple #2
0
bool Tile::IsGas()
{
    int top=GetHeight();
    if (top<0)
        return false;
    return IsGas(top);
    //return (temp>=mymat->BoilTemp);
};
Exemple #3
0
void Tile::Sort()
{
    for (int i=0;i<MAXMAT;i++)
        for (int j=i+1;j<MAXMAT;j++)
        {
            Material *mm;
            if ((IsLiquid(i)&&IsSolid(j))||(IsGas(i)&&(IsLiquid(j)||IsSolid(j))))
            {
                mm=mats[i];
                mats[i]=mats[j];
                mats[j]=mm;
            }
        }
}
Exemple #4
0
void KVHarpeeIC::SetTemperature(Double_t t)
{
   // Set the same temperature for each gaz layer.
   // The units are: degrees celsius

   if (!IsGas()) return;

   KVMaterial* abs = NULL;
   TIter next(GetListOfAbsorbers());
   while ((abs = (KVMaterial*)next())) {
      if (abs->IsGas()) {
         abs->SetTemperature(t);
         if (abs->GetAbsGeoVolume())
            abs->GetAbsGeoVolume()->GetMaterial()->SetTemperature(t);
      }
   }
}
Exemple #5
0
void KVHarpeeIC::SetPressure(Double_t p /* mbar */)
{
   // Set the same  pressure for each gas layer (in mbar)

   if (!IsGas()) return;

   KVMaterial* abs = NULL;
   TIter next(GetListOfAbsorbers());
   while ((abs = (KVMaterial*)next())) {
      if (abs->IsGas()) {
         abs->SetPressure(p * KVUnits::mbar);
         if (abs->GetAbsGeoVolume())
            abs->GetAbsGeoVolume()->GetMaterial()->SetPressure(p * KVUnits::mbar);
      }
   }

   KVDetector::SetPressure(p * KVUnits::mbar);
}
Exemple #6
0
int Tile::GetPic()
{
    const unsigned int LEVEL_PIX[]={250,',','_','-',223,176,177,178};

    int h=GetHeight(); //performance!!!
    if (h<0)
        return ' ';
    if (IsSolid(h))
        return LEVEL_PIX[h];
    if (IsLiquid(h))
        //return '0'+h+1;
        return (h%2)?126:184;
    if (IsGas(h))
        if (h>2)
            return '%';
        else
            return '.';
    return ' ';
}
Exemple #7
0
Bool_t KVIonRangeTable::IsMaterialGas(const Char_t* mat)
{
   // Returns kTRUE if material of given name or type is gaseous.
   FIND_MAT_AND_EXEC(IsGas(),kFALSE);
}