Navigation

Main Page
Download
Support
Installation
Tutorial
Examples
Reference Manual
Publications


Hosted by Get Ion Beam Simulator at SourceForge.net. Fast, secure and Free Open Source software downloads

Power density plots on solid surfaces

For making plots of power density on solid surfaces, I have used the followng helper class:

struct Power {

    Transformation      t;
    std::vector<double> xdata;
    std::vector<double> ydata;
    std::vector<double> wdata;

    void add( const Particle3D &pp ) {
        Vec3D x = pp.location();
        Vec3D vel = pp.velocity();
        x = t.transform_point( x );
        xdata.push_back( x[0] );
        ydata.push_back( x[1] );
        double V = 0.5*pp.m()*vel.ssqr()/pp.q();
        wdata.push_back( pp.IQ()*V );
    }

    void plot( const std::string &filename ) {
        // Make histogram
        Histogram2D h( 51, 51, xdata, ydata, wdata );
        h.convert_to_density();
        // Output data
        ofstream ostr( filename.c_str() );
        for( size_t j = 0; j < h.m(); j++ ) {
            for( size_t i = 0; i < h.n(); i++ ) {
                ostr << setw(12) << h.icoord(i) << " "
                     << setw(12) << h.jcoord(j) << " "
                     << setw(12) << h(i,j) << "\n";
            }
            ostr << "\n";
        }
        ostr.close();
    }
};

The class gathers energy data from collided particles and transforms the coordinates from 3D collision point into a 2D plot plane. So first you need to make on object of the type Power and define the translation:

Power power;
power.t.translate( Vec3D(0.008486,0,-0.053258) );
power.t.rotate_y( atan(55.71/153.05) );

You should go through the particle collision points and select the ones which are interesting feeding those to power:

// Go through particle end locations
for( size_t i = 0; i < pdb.size(); i++ ) {
        
    // Particle location
    Particle3D &pp = pdb.particle( i );

    // Not interesting location
    if( pp[PARTICLE_Z] < 37.0e-3 ||
        pp[PARTICLE_Z] > 60.0e-3 ||
        pp[PARTICLE_X] > 0.0e-3 )
        continue;

    power.add( pp );
}

Then as a last thing, plot out the data to an ASCII file:

power.plot( "power.txt" );


Copyright © 2010-2011 Taneli Kalvas
Last modified: Mon Jun 23 15:29:49 EEST 2014