diff options
author | simulation <simulation@nlo-ext3.ioq.uni-jena.de> | 2016-02-09 09:54:46 +0100 |
---|---|---|
committer | simulation <simulation@nlo-ext3.ioq.uni-jena.de> | 2016-02-09 09:54:46 +0100 |
commit | 6be0f285adb27f60f058c2937a7885899e17cb88 (patch) | |
tree | be50a15314fe28c5b7b8f721233a34e71ca5b3b4 /fresnel/parameter.C | |
download | lpic-master.tar.xz |
Diffstat (limited to 'fresnel/parameter.C')
-rw-r--r-- | fresnel/parameter.C | 160 |
1 files changed, 160 insertions, 0 deletions
diff --git a/fresnel/parameter.C b/fresnel/parameter.C new file mode 100644 index 0000000..e7b7d2b --- /dev/null +++ b/fresnel/parameter.C @@ -0,0 +1,160 @@ +/* + This file is part of LPIC++, a particle-in-cell code for + simulating the interaction of laser light with plasma. + + Copyright (C) 1994-1997 Roland Lichters + + LPIC++ is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +////////////////////////////////////////////////////////////////////////////////////////// +// +// fresnel +// +// initializes and reads parameters +// for documentation see 'parameter.h' +// +////////////////////////////////////////////////////////////////////////////////////////// + +#include <parameter.h> + +parameter::parameter(int argc, char **argv) +{ + plasma.wp = 0.8; // default parameters //////////////////////////////////// + + pulse.amplitude = 0.01; + pulse.angle = 0.0; + pulse.polarization = 1; + pulse.duration = 60; + + prop.time_start = 0.0; + prop.time_stop = 30.0; + prop.spp = 50; + + my_name = new(char[filename_size]); + strcpy(my_name,argv[0]); + + path = new char [filename_size]; + strcpy(path,"data"); + + if (argc==1) { //////////////// check commandline parameters /////////////////////////// + cerr << "\n\n no arguments " << endl; + } + else { + cerr << "\n\n " << argc - 1 << " arguments" << endl << endl; + } + + read_filename = new(char[filename_size]); + + if (argc==1) { //////////// read parameters from default filename ////////////////////// + char *fname = "input.fresnel"; + cout << " reading from " << fname << endl; + read(fname); + } + else { //////////////////// read parameters from specified filename //////////////////// + cout << " reading from " << argv[1] << endl; + read(argv[1]); + } + + ///////////////////////////////////////// + pulse.angle_rad = PI/180 * pulse.angle;// + ///////////////////////////////////////// + + cout << " output in " << path << endl; + + sprintf( errname, "%s/error", path ); + static error_handler bob("parameter::Constructor", errname); + + save(path,errname); + +}; + +////////////////////////////////////////////////////////////////////////////////////////// + +void parameter::read(char *fname) +{ + Trash trash; + int i; + + ifstream infile(fname); + if (!infile) { + cerr << "Cannot open infile: " << fname << endl; + cerr << "Using default parameters" << endl; + } + else { + cout << "reading from parameter file does not work." << endl; + cout << "set parameters in parameter.C" << endl; + exit( 0 ); + // + infile >> trash >> plasma.wp; + + infile >> trash >> pulse.amplitude; + infile >> trash >> pulse.angle; + infile >> trash >> pulse.polarization; + infile >> trash >> pulse.duration; + + infile >> trash >> prop.time_start; + infile >> trash >> prop.time_stop; + infile >> trash >> prop.spp; + + infile >> trash >> path; + + strcpy(read_filename,fname); + + infile.close(); + } +}; + + +////////////////////////////////////////////////////////////////////////////////////////// + + +void parameter::save(char *path, char *errname) +{ + int i; + static error_handler bob("parameter::save",errname); + char *fname; + + fname = new char [filename_size]; + sprintf( fname, "%s/output.fresnel", path ); + ofstream outfile(fname); + if (!outfile) + bob.error("Cannot open outfile: ", fname); + + outfile << "fresnel parameters:" << endl << endl; + + outfile << "plasma" << endl; + outfile << "-----------------------------------" << endl; + outfile << "plasma frequency : " << plasma.wp << endl << endl; + + outfile << "laser pulse" << endl; + outfile << "-----------------------------------" << endl; + outfile << "incident amplitude : " << pulse.amplitude << endl; + outfile << "angle of incidence : " << pulse.angle << endl; + outfile << "polarization : " << pulse.polarization << endl; + outfile << "duration : " << pulse.duration << endl << endl; + + outfile << "propagation" << endl; + outfile << "-----------------------------------" << endl; + outfile << "time_start : " << prop.time_start << endl; + outfile << "time_stop : " << prop.time_stop << endl; + outfile << "steps per period : " << prop.spp << endl << endl; + + outfile.close(); +}; + +////////////////////////////////////////////////////////////////////////////////////////// +//EOF + |