Changeset 32347 for trunk/psModules/src/objects/models/pmModel_PGAUSS.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_PGAUSS.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_PGAUSS.c
r31451 r32347 217 217 } 218 218 219 psF64 PM_MODEL_FLUX(const psVector *params) 220 { 221 float norm, z; 219 // integrate the model to get the full flux 220 psF64 PM_MODEL_FLUX (const psVector *params) 221 { 222 float z, norm; 222 223 psEllipseShape shape; 223 224 … … 228 229 shape.sxy = PAR[PM_PAR_SXY]; 229 230 230 // Area is equivalent to 2 pi sigma^2231 231 psEllipseAxes axes = psEllipseShapeToAxes (shape, 20.0); 232 psF64 Area = 2.0 * M_PI * axes.major * axes.minor;233 234 // the area needs to be multiplied by the integral of f(z)232 float AspectRatio = axes.minor / axes.major; 233 234 // flux = 2 \pi \int f(r) r dr 235 235 norm = 0.0; 236 236 237 # define DZ 0.25 238 239 float f0 = 1.0; 237 # define DR 0.25 238 239 // f = f(r) * r 240 float f0 = 0.0; 240 241 float f1, f2; 241 for (z = DZ; z < 150; z += DZ) { 242 f1 = 1.0 / (1 + z + z*z/2.0 + z*z*z/6.0); 243 z += DZ; 244 f2 = 1.0 / (1 + z + z*z/2.0 + z*z*z/6.0); 242 for (float r = DR; r < 150; r += DR) { 243 z = 0.5 * PS_SQR(r / axes.major); 244 f1 = r / (1 + z + z*z/2.0 + z*z*z/6.0); 245 r += DR; 246 z = 0.5 * PS_SQR(r / axes.major); 247 f2 = r / (1 + z + z*z/2.0 + z*z*z/6.0); 245 248 norm += f0 + 4*f1 + f2; 246 249 f0 = f2; 247 250 } 248 norm *= D Z/ 3.0;249 250 psF64 Flux = PAR[PM_PAR_I0] * Area * norm;251 norm *= DR / 3.0; 252 253 psF64 Flux = PAR[PM_PAR_I0] * norm * 2.0 * M_PI * AspectRatio; 251 254 252 255 return(Flux);
Note:
See TracChangeset
for help on using the changeset viewer.
