Ignore:
Timestamp:
Dec 18, 2012 10:55:24 AM (12 years ago)
Author:
Jae Cho <jhjcho@…>
Branches:
master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
Children:
6550b64
Parents:
0203ade
Message:

Added polarization and magnetic stuffs

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sansmodels/src/c_models/csparallelepiped.cpp

    re08bd5b r318b5bbb  
    143143static double csparallelepiped_analytical_2D_scaled(CSParallelepipedParameters *pars, double q, double q_x, double q_y) { 
    144144  double dp[13]; 
    145   double cparallel_x, cparallel_y, cparallel_z, bparallel_x, bparallel_y, parallel_x, parallel_y; 
    146   double q_z; 
    147   double alpha, cos_val_c, cos_val_b, cos_val_a, edgeA, edgeB, edgeC; 
     145  double cparallel_x, cparallel_y, bparallel_x, bparallel_y, parallel_x, parallel_y; 
     146  //double q_z; 
     147  double cos_val_c, cos_val_b, cos_val_a, edgeA, edgeB, edgeC; 
    148148 
    149149  double answer; 
     
    176176 
    177177  // parallelepiped c axis orientation 
    178   cparallel_x = sin(theta) * cos(phi); 
    179   cparallel_y = sin(theta) * sin(phi); 
    180   cparallel_z = cos(theta); 
     178  cparallel_x = cos(theta) * cos(phi); 
     179  cparallel_y = sin(theta); 
     180  //cparallel_z = -cos(theta) * sin(phi); 
    181181 
    182182  // q vector 
    183   q_z = 0.0; 
     183  //q_z = 0.0; 
    184184 
    185185  // Compute the angle btw vector q and the 
    186186  // axis of the parallelepiped 
    187   cos_val_c = cparallel_x*q_x + cparallel_y*q_y + cparallel_z*q_z; 
    188   alpha = acos(cos_val_c); 
     187  cos_val_c = cparallel_x*q_x + cparallel_y*q_y;// + cparallel_z*q_z; 
     188  //alpha = acos(cos_val_c); 
    189189 
    190190  // parallelepiped a axis orientation 
    191   parallel_x = sin(psi);//cos(pars->parallel_theta) * sin(pars->parallel_phi)*sin(pars->parallel_psi); 
    192   parallel_y = cos(psi);//cos(pars->parallel_theta) * cos(pars->parallel_phi)*cos(pars->parallel_psi); 
     191  parallel_x = -cos(phi)*sin(psi) * sin(theta)+sin(phi)*cos(psi); 
     192  parallel_y = sin(psi)*cos(theta); 
    193193 
    194194  cos_val_a = parallel_x*q_x + parallel_y*q_y; 
     
    197197 
    198198  // parallelepiped b axis orientation 
    199   bparallel_x = sqrt(1.0-sin(theta)*cos(phi))*cos(psi);//cos(pars->parallel_theta) * cos(pars->parallel_phi)* cos(pars->parallel_psi); 
    200   bparallel_y = sqrt(1.0-sin(theta)*cos(phi))*sin(psi);//cos(pars->parallel_theta) * sin(pars->parallel_phi)* sin(pars->parallel_psi); 
     199  bparallel_x = -sin(theta)*cos(psi)*cos(phi)-sin(psi)*sin(phi); 
     200  bparallel_y = cos(theta)*cos(psi); 
    201201  // axis of the parallelepiped 
    202   cos_val_b = sin(acos(cos_val_a)) ; 
    203  
    204  
     202  cos_val_b = bparallel_x*q_x + bparallel_y*q_y; 
    205203 
    206204  // The following test should always pass 
    207205  if (fabs(cos_val_c)>1.0) { 
    208     printf("parallel_ana_2D: Unexpected error: cos(alpha)>1\n"); 
    209     return 0; 
    210   } 
    211  
     206    //printf("parallel_ana_2D: Unexpected error: cos(alpha)>1\n"); 
     207    cos_val_c = 1.0; 
     208  } 
     209  if (fabs(cos_val_a)>1.0) { 
     210    //printf("parallel_ana_2D: Unexpected error: cos(alpha)>1\n"); 
     211    cos_val_a = 1.0; 
     212  } 
     213  if (fabs(cos_val_b)>1.0) { 
     214    //printf("parallel_ana_2D: Unexpected error: cos(alpha)>1\n"); 
     215    cos_val_b = 1.0; 
     216  } 
    212217  // Call the IGOR library function to get the kernel 
    213   answer = cspkernel( dp,q, sin(alpha)*cos_val_a,sin(alpha)*cos_val_b,cos_val_c); 
     218  answer = cspkernel( dp, q, cos_val_a, cos_val_b, cos_val_c); 
    214219 
    215220  //convert to [cm-1] 
     
    434439 
    435440              if (weights_parallel_theta.size()>1) { 
    436                 _ptvalue *= fabs(sin(weights_parallel_theta[l].value*pi/180.0)); 
     441                _ptvalue *= fabs(cos(weights_parallel_theta[l].value*pi/180.0)); 
    437442              } 
    438443              sum += _ptvalue; 
Note: See TracChangeset for help on using the changeset viewer.