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

# User Rev Content
1 gezelter 1290 #include <iostream>
2     #include <fstream>
3     #include <string>
4     #include <vector>
5 gezelter 1295 #include <cmath>
6 gezelter 1290 #include "visualizerCmd.h"
7 gezelter 1295 #include "SHAPE.hpp"
8 gezelter 1290
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 gezelter 1299 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 gezelter 1295 char* shapeFileName;
26 gezelter 1299 char* outputFileName;
27 gezelter 1295 SHAPE* shape;
28 gezelter 1299 FILE* outputFile;
29 gezelter 1290
30     //parse the command line options
31     if (cmdline_parser (argc, argv, &args_info) != 0)
32     exit(1) ;
33    
34 gezelter 1295 if (args_info.shape_given){
35     shapeFileName = args_info.shape_arg;
36 gezelter 1290 }
37     else{
38     std::cerr << "Does not have shape file name" << endl;
39     exit(1);
40     }
41 gezelter 1295
42     shape = new SHAPE();
43     shape->readSHAPEfile(shapeFileName);
44    
45 gezelter 1290
46 gezelter 1299 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 gezelter 1290
54 gezelter 1299 outputFile = fopen(outputFileName, "w");
55 gezelter 1290
56 gezelter 1299 if (outputFile == NULL) {
57     (void) fprintf(stderr, "Unable to open outputFile %s!\n", outputFileName);
58 gezelter 1290 exit(8);
59     }
60 gezelter 1299
61     // grid has a default value (default=51), so it is always given
62     npts = args_info.grid_arg;
63 gezelter 1290
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 gezelter 1299 sigmaShape = shape->getSigmaAt(costheta, phi);
87     sShape = shape->getSAt(costheta, phi);
88     epsShape = shape->getEpsAt(costheta, phi);
89 gezelter 1290
90 gezelter 1299 // Lorentz-Berthellot combining rules:
91 gezelter 1290
92 gezelter 1299 sigma = (sigmaShape + sigmaProbe) / 2.0;
93     s = (sShape + sProbe) / 2.0;
94     eps = sqrt(epsShape * epsProbe);
95 gezelter 1290
96 gezelter 1299 rTerm = s / (r - sigma + s);
97    
98     r6 = pow(rTerm, 6);
99     r12 = r6*r6;
100 gezelter 1290
101 gezelter 1299 energy = 4.0 * eps * (r12 - r6);
102    
103     write_size = fwrite(&energy,1,8,outputFile);
104    
105 gezelter 1290 }
106     }
107     }
108 gezelter 1299 fclose(outputFile);
109 gezelter 1290 return(0);
110     }