Public Member Functions | |
FieldComputation (BLCMDfieldexpr *_expr) | |
G4bool | DoesFieldChangeEnergy () const |
void | GetFieldValue (const G4double point[4], G4double *field) const |
Private Attributes | |
BLCMDfieldexpr * | expr |
FieldComputation::FieldComputation | ( | BLCMDfieldexpr * | _expr | ) | [inline] |
void FieldComputation::GetFieldValue | ( | const G4double | point[4], | |
G4double * | field | |||
) | const |
References BLCMDfieldexpr::Br, BLCMDfieldexpr::Bx, BLCMDfieldexpr::By, BLCMDfieldexpr::Bz, BLCMDfieldexpr::Er, BLEvaluator::evaluate(), BLCMDfieldexpr::Ex, expr, BLCMDfieldexpr::Ey, BLCMDfieldexpr::Ez, and BLCMDfieldexpr::radius.
Referenced by BLCMDfieldexpr::maxError().
00498 { 00499 BLEvaluator e; 00500 00501 if(expr->radius > 0.0) { 00502 assert(fabs(point[1]) < 0.000001); 00503 e.setVariable("r",point[0]); 00504 e.setVariable("z",point[2]); 00505 field[0] = (expr->Br.size()>0 ? e.evaluate(expr->Br.c_str()) : 00506 0.0) * tesla; 00507 field[1] = 0.0; 00508 field[3] = (expr->Er.size()>0 ? e.evaluate(expr->Er.c_str()) : 00509 0.0) * (megavolt/meter); 00510 field[4] = 0.0; 00511 } else { 00512 e.setVariable("x",point[0]); 00513 e.setVariable("y",point[1]); 00514 e.setVariable("z",point[2]); 00515 field[0] = (expr->Bx.size()>0 ? e.evaluate(expr->Bx.c_str()) : 00516 0.0) * tesla; 00517 field[1] = (expr->By.size()>0 ? e.evaluate(expr->By.c_str()) : 00518 0.0) * tesla; 00519 field[3] = (expr->Ex.size()>0 ? e.evaluate(expr->Ex.c_str()) : 00520 0.0) * (megavolt/meter); 00521 field[4] = (expr->Ey.size()>0 ? e.evaluate(expr->Ey.c_str()) : 00522 0.0) * (megavolt/meter); 00523 } 00524 field[2] = (expr->Bz.size()>0 ? e.evaluate(expr->Bz.c_str()) : 00525 0.0) * tesla; 00526 field[5] = (expr->Ez.size()>0 ? e.evaluate(expr->Ez.c_str()) : 00527 0.0) * (megavolt/meter); 00528 00529 //printf("FieldComputation::GetFieldValue(%.1f,%.1f,%.1f,%.1f)=%.4f %.4f %.4f %.4f %.4f %.4f\n",point[0],point[1],point[2],point[3], field[0]/tesla,field[1]/tesla,field[2]/tesla,field[3]/(megavolt/meter),field[4]/(megavolt/meter),field[5]/(megavolt/meter)); 00530 return; 00531 }
BLCMDfieldexpr* FieldComputation::expr [private] |
Referenced by FieldComputation(), and GetFieldValue().