ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/SHAPES/visualizer.cpp
Revision: 1299
Committed: Thu Jun 24 15:56:05 2004 UTC (20 years ago) by gezelter
File size: 2394 byte(s)
Log Message:
work on visualizer

File Contents

# Content
1 #include <iostream>
2 #include <fstream>
3 #include <string>
4 #include <vector>
5 #include <cmath>
6 #include "visualizerCmd.h"
7 #include "SHAPE.hpp"
8
9 using namespace std;
10
11 int main(int argc, char* argv[]){
12
13 gengetopt_args_info args_info;
14 int npts, i, j, k, write_size;
15 double xmin, xmax, x;
16 double ymin, ymax, y;
17 double zmin, zmax, z;
18 double r, theta, phi, costheta;
19 double sigmaShape, sShape, epsShape;
20 double sigmaProbe, sProbe, epsProbe;
21 double sigma, s, eps;
22 double rTerm, r6, r12;
23 double energy;
24
25 char* shapeFileName;
26 char* outputFileName;
27 SHAPE* shape;
28 FILE* outputFile;
29
30 //parse the command line options
31 if (cmdline_parser (argc, argv, &args_info) != 0)
32 exit(1) ;
33
34 if (args_info.shape_given){
35 shapeFileName = args_info.shape_arg;
36 }
37 else{
38 std::cerr << "Does not have shape file name" << endl;
39 exit(1);
40 }
41
42 shape = new SHAPE();
43 shape->readSHAPEfile(shapeFileName);
44
45
46 if (args_info.output_given){
47 outputFileName = args_info.output_arg;
48 }
49 else{
50 std::cerr << "Does not have output file name" << endl;
51 exit(1);
52 }
53
54 outputFile = fopen(outputFileName, "w");
55
56 if (outputFile == NULL) {
57 (void) fprintf(stderr, "Unable to open outputFile %s!\n", outputFileName);
58 exit(8);
59 }
60
61 // grid has a default value (default=51), so it is always given
62 npts = args_info.grid_arg;
63
64 xmin = -5.0;
65 xmax = 5.0;
66
67 ymin = -5.0;
68 ymax = 5.0;
69
70 zmin = -5.0;
71 zmax = 5.0;
72
73 for (i = 0; i < npts; i++) {
74 x = xmin + (xmax-xmin) * (double)i/(double)npts;
75
76 for (j = 0; j < npts; j++) {
77 y = ymin + (ymax-ymin) * (double)j/(double)npts;
78
79 for (k = 0; k < npts; k++) {
80 z = zmin + (zmax-zmin) * (double)k/(double)npts;
81
82 r = sqrt(x*x + y*y + z*z);
83 theta = acos(z/r);
84 phi = atan(y/x);
85
86 sigmaShape = shape->getSigmaAt(costheta, phi);
87 sShape = shape->getSAt(costheta, phi);
88 epsShape = shape->getEpsAt(costheta, phi);
89
90 // Lorentz-Berthellot combining rules:
91
92 sigma = (sigmaShape + sigmaProbe) / 2.0;
93 s = (sShape + sProbe) / 2.0;
94 eps = sqrt(epsShape * epsProbe);
95
96 rTerm = s / (r - sigma + s);
97
98 r6 = pow(rTerm, 6);
99 r12 = r6*r6;
100
101 energy = 4.0 * eps * (r12 - r6);
102
103 write_size = fwrite(&energy,1,8,outputFile);
104
105 }
106 }
107 }
108 fclose(outputFile);
109 return(0);
110 }