////////////////////////////////////////////////////////////////////////////
// DoShellSetup()
////////////////////////////////////////////////////////////////////////////
void clWeibullClimateQuadratGrowth::DoShellSetup( xercesc::DOMDocument * p_oDoc )
{
  try
  {
    clTreePopulation * p_oPop = ( clTreePopulation * ) mp_oSimManager->GetPopulationObject( "treepopulation" );
    FormatQuery( p_oPop );
    ReadParameterFile( p_oDoc, p_oPop );
    ValidateData( p_oPop );
    SetupGrid( p_oPop );
  }
  catch ( modelErr & err )
  {
    throw( err );
  }
  catch ( modelMsg & msg )
  {
    throw( msg );
  } //non-fatal error
  catch ( ... )
  {
    modelErr stcErr;
    stcErr.iErrorCode = UNKNOWN;
    strcpy( stcErr.cFunction, "clWeibullClimateQuadratGrowth::DoShellSetup" );
    throw( stcErr );
  }
}
예제 #2
0
int main(int argc, char **argv){

  fUtils = new Utils();
  fRad = new Radiation();
  const char* parameterfile = argv[1];
  if(ReadParameterFile(parameterfile)) return 0;

  double d = pc_to_cm*parameters[0];
  double n = parameters[1];
  double b = parameters[2];
  double t = parameters[3];
  double e = TeV_to_erg*1.e-12*parameters[4];
  vector< vector <double> >  electronvector,protonvector;
  fUtils->ReadIn(strings[0],electronvector);
  fUtils->ReadIn(strings[1],protonvector);
  /* set radiation object stuff */
  fRad->SetDistance(d);
  fRad->SetBField(b);
  fRad->SetAmbientDensity(n);
  fRad->AddThermalTargetPhotons(2.7,0.25*TeV_to_erg*1.e-12);//CMB is hard-coded!
  fRad->AddThermalTargetPhotons(t,e);
  fRad->SetElectrons(electronvector);
  fRad->SetProtons(protonvector);
  fRad->CalculateDifferentialPhotonSpectrum(300,1.e-20,1.e3);
  string outtag = strings[2];
  fUtils->WriteOut(fRad->GetProtonVector(),outtag+"_ProtonSpectrum.dat");
  fUtils->WriteOut(fRad->GetElectronVector(),outtag+"_ElectronSpectrum.dat");
  fUtils->WriteOut(fRad->GetTotalSED(),outtag+"_TotalSpectrum.dat");
  fUtils->WriteOut(fRad->GetICSED(),outtag+"_ICSpectrum.dat");
  fUtils->WriteOut(fRad->GetBremsstrahlungSED(),outtag+"_BremsSpectrum.dat");
  fUtils->WriteOut(fRad->GetSynchrotronSED(),outtag+"_SynchSpectrum.dat");
  fUtils->WriteOut(fRad->GetPPSED(),outtag+"_PPSpectrum.dat");
  fUtils->WriteOut(fRad->GetTotalTargetPhotonVector(),outtag+"_TargetPhotons.dat");
  return 0;
}
예제 #3
0
Writer_ReadParameters(char *filename, char *section) {
	if (Instname[0]) sprintf(Name, "%s.%s", Instname, MODULENAME);
	else             strcpy(Name, MODULENAME);

	printf("%s: processing parameter file %s:%s\n",
	       Name, filename, section);

	ReadParameterFile(filename);
	return (1);
}
예제 #4
0
int main(int argc, char **argv){

  if (argc!=2) {
    std::cout<<">> You have to specify a parameter file ( $ bin/TutorialLevel1 <parameterfile> )."<<std::endl;
    std::cout<<">> Look at docu/tutorial/TutorialLevel1Params.dat for an example!"<<std::endl;
    return 1;
  }
  fUtils = new Utils();
  fRad = new Radiation();
  string parameterfile = argv[1];
  if(ReadParameterFile(parameterfile)) return 0;

  double d = pc_to_cm*parameters[0];
  double n = parameters[1];
  double b = parameters[2];
  double t = parameters[3];
  double e = TeV_to_erg*1.e-12*parameters[4];
  vector< vector <double> >  electronvector,protonvector;
  fUtils->ReadIn(strings[0],electronvector);
  fUtils->ReadIn(strings[1],protonvector);
  /* set radiation object stuff */
  fRad->SetDistance(d);
  fRad->SetBField(b);
  fRad->SetAmbientDensity(n);
  fRad->AddThermalTargetPhotons(2.7,0.25*TeV_to_erg*1.e-12);//CMB is hard-coded!
  fRad->AddThermalTargetPhotons(t,e);
  fRad->SetElectrons(electronvector);
  fRad->SetProtons(protonvector);
  fRad->CalculateDifferentialPhotonSpectrum(300,1.e-20,1.e3);
  string outtag = strings[2];
  fUtils->WriteOut(fRad->GetProtonVector(),outtag+"_ProtonSpectrum.dat");
  fUtils->WriteOut(fRad->GetElectronVector(),outtag+"_ElectronSpectrum.dat");
  fUtils->WriteOut(fRad->GetTotalSED(),outtag+"_TotalSpectrum.dat");
  fUtils->WriteOut(fRad->GetICSED(),outtag+"_ICSpectrum.dat");
  fUtils->WriteOut(fRad->GetBremsstrahlungSED(),outtag+"_BremsSpectrum.dat");
  fUtils->WriteOut(fRad->GetSynchrotronSED(),outtag+"_SynchSpectrum.dat");
  fUtils->WriteOut(fRad->GetPPSED(),outtag+"_PPSpectrum.dat");
  fUtils->WriteOut(fRad->GetTotalTargetPhotonVector(),outtag+"_TargetPhotons.dat");
  return 0;
}
////////////////////////////////////////////////////////////////////////////
// DoShellSetup()
////////////////////////////////////////////////////////////////////////////
void clLaggedPostHarvestGrowth::DoShellSetup( xercesc::DOMDocument * p_oDoc )
{
  try
  {

    clTreePopulation *p_oPop = ( clTreePopulation * ) mp_oSimManager->GetPopulationObject( "treepopulation" );

    m_iNumberYearsPerTimestep = mp_oSimManager->GetNumberOfYearsPerTimestep();

    AssembleUniqueTypes();

    ReadParameterFile( p_oDoc );
    ValidateData();

    GetTreeMemberCodes();

    SetupTimeSinceHarvestGrid();

    //Get the expected growth values at the start in case there's harvesting in the first timestep
    PreGrowthCalcs(p_oPop);

  }
  catch ( modelErr & err )
  {
    throw( err );
  }
  catch ( modelMsg & msg )
  {
    throw( msg );
  } //non-fatal error
  catch ( ... )
  {
    modelErr stcErr;
    stcErr.iErrorCode = UNKNOWN;
    stcErr.sFunction = "clLaggedPostHarvestGrowth::DoShellSetup" ;
    throw( stcErr );
  }
}