Changeset 32347 for trunk/psModules/src/objects/models/pmModel_RGAUSS.c
- Timestamp:
- Sep 6, 2011, 1:02:53 PM (15 years ago)
- Location:
- trunk/psModules/src/objects
- Files:
-
- 2 edited
-
. (modified) (1 prop)
-
models/pmModel_RGAUSS.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/objects
- Property svn:ignore
-
old new 5 5 *.la 6 6 *.lo 7 pmSourceIO_CMF_PS1_V1.c 8 pmSourceIO_CMF_PS1_V2.c 9 pmSourceIO_CMF_PS1_V3.c
-
- Property svn:ignore
-
trunk/psModules/src/objects/models/pmModel_RGAUSS.c
r31451 r32347 229 229 } 230 230 231 // integrate the model to get the full flux 231 232 psF64 PM_MODEL_FLUX (const psVector *params) 232 233 { 233 float norm, z;234 float z, norm; 234 235 psEllipseShape shape; 235 236 … … 240 241 shape.sxy = PAR[PM_PAR_SXY]; 241 242 242 // Area is equivalent to 2 pi sigma^2243 243 psEllipseAxes axes = psEllipseShapeToAxes (shape, 20.0); 244 psF64 Area = 2.0 * M_PI * axes.major * axes.minor;245 246 // the area needs to be multiplied by the integral of f(z)244 float AspectRatio = axes.minor / axes.major; 245 246 // flux = 2 \pi \int f(r) r dr 247 247 norm = 0.0; 248 248 249 # define DZ 0.25 250 251 float f0 = 1.0; 249 # define DR 0.25 250 251 // f = f(r) * r 252 float f0 = 0.0; 252 253 float f1, f2; 253 for (z = DZ; z < 150; z += DZ) { 254 f1 = 1.0 / (1 + z + pow(z, PAR[PM_PAR_7])); 255 z += DZ; 256 f2 = 1.0 / (1 + z + pow(z, PAR[PM_PAR_7])); 254 for (float r = DR; r < 150; r += DR) { 255 z = 0.5 * PS_SQR(r / axes.major); 256 f1 = r / (1 + z + pow(z, PAR[PM_PAR_7])); 257 r += DR; 258 z = 0.5 * PS_SQR(r / axes.major); 259 f2 = r / (1 + z + pow(z, PAR[PM_PAR_7])); 257 260 norm += f0 + 4*f1 + f2; 258 261 f0 = f2; 259 262 } 260 norm *= D Z/ 3.0;261 262 psF64 Flux = PAR[PM_PAR_I0] * Area * norm;263 norm *= DR / 3.0; 264 265 psF64 Flux = PAR[PM_PAR_I0] * norm * 2.0 * M_PI * AspectRatio; 263 266 264 267 return(Flux);
Note:
See TracChangeset
for help on using the changeset viewer.
