Changeset 144e032a in sasview for src/sas/sascalc/calculator/c_extensions/sld2i.c
- Timestamp:
- Nov 14, 2017 8:57:07 AM (6 years ago)
- Branches:
- master, magnetic_scatt, release-4.2.2, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
- Children:
- f0ce6e2
- Parents:
- a57ae07
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/sascalc/calculator/c_extensions/sld2i.c
ra1daf86 r144e032a 54 54 polar_sld b_sld; 55 55 double qr = 0.0; 56 complex iqr = cassign(0.0, 0.0);57 complex ephase = cassign(0.0, 0.0);58 complex comp_sld = cassign(0.0, 0.0);59 60 complex sumj_uu;61 complex sumj_ud;62 complex sumj_du;63 complex sumj_dd;64 complex temp_fi;56 Cplx iqr; 57 Cplx ephase; 58 Cplx comp_sld; 59 60 Cplx sumj_uu; 61 Cplx sumj_ud; 62 Cplx sumj_du; 63 Cplx sumj_dd; 64 Cplx temp_fi; 65 65 66 66 double count = 0.0; 67 67 int i, j; 68 69 cassign(&iqr, 0.0, 0.0); 70 cassign(&ephase, 0.0, 0.0); 71 cassign(&comp_sld, 0.0, 0.0); 68 72 69 73 //Assume that pixel volumes are given in vol_pix in A^3 unit … … 77 81 for(i=0; i<npoints; i++){ 78 82 //I_out[i] = 0.0; 79 sumj_uu = cassign(0.0, 0.0);80 sumj_ud = cassign(0.0, 0.0);81 sumj_du = cassign(0.0, 0.0);82 sumj_dd = cassign(0.0, 0.0);83 cassign(&sumj_uu, 0.0, 0.0); 84 cassign(&sumj_ud, 0.0, 0.0); 85 cassign(&sumj_du, 0.0, 0.0); 86 cassign(&sumj_dd, 0.0, 0.0); 83 87 //printf("i: %d\n", i); 84 88 //q = sqrt(qx[i]*qx[i] + qy[i]*qy[i]); // + qz[i]*qz[i]); 85 89 86 90 for(j=0; j<this->n_pix; j++){ 87 //printf("j: %d\n", j);88 91 if (this->sldn_val[j]!=0.0 89 92 ||this->mx_val[j]!=0.0 … … 91 94 ||this->mz_val[j]!=0.0) 92 95 { 96 // printf("i,j: %d,%d\n", i,j); 93 97 //anisotropic 94 temp_fi = cassign(0.0, 0.0);95 b_sld = cal_msld(0, qx[i], qy[i], this->sldn_val[j],98 cassign(&temp_fi, 0.0, 0.0); 99 cal_msld(&b_sld, 0, qx[i], qy[i], this->sldn_val[j], 96 100 this->mx_val[j], this->my_val[j], this->mz_val[j], 97 101 this->inspin, this->outspin, this->stheta); 98 102 qr = (qx[i]*this->x_val[j] + qy[i]*this->y_val[j]); 99 iqr = cassign(0.0, qr);100 ephase = cplx_exp(iqr);103 cassign(&iqr, 0.0, qr); 104 cplx_exp(&ephase, iqr); 101 105 102 106 //Let's multiply pixel(atomic) volume here 103 ephase = rcmult(this->vol_pix[j], ephase);107 rcmult(&ephase, this->vol_pix[j], ephase); 104 108 //up_up 105 109 if (this->inspin > 0.0 && this->outspin > 0.0){ 106 c omp_sld = cassign(b_sld.uu, 0.0);107 temp_fi = cplx_mult(comp_sld, ephase);108 sumj_uu = cplx_add(sumj_uu, temp_fi);110 cassign(&comp_sld, b_sld.uu, 0.0); 111 cplx_mult(&temp_fi, comp_sld, ephase); 112 cplx_add(&sumj_uu, sumj_uu, temp_fi); 109 113 } 110 114 //down_down 111 115 if (this->inspin < 1.0 && this->outspin < 1.0){ 112 c omp_sld = cassign(b_sld.dd, 0.0);113 temp_fi = cplx_mult(comp_sld, ephase);114 sumj_dd = cplx_add(sumj_dd, temp_fi);116 cassign(&comp_sld, b_sld.dd, 0.0); 117 cplx_mult(&temp_fi, comp_sld, ephase); 118 cplx_add(&sumj_dd, sumj_dd, temp_fi); 115 119 } 116 120 //up_down 117 121 if (this->inspin > 0.0 && this->outspin < 1.0){ 118 c omp_sld = cassign(b_sld.re_ud, b_sld.im_ud);119 temp_fi = cplx_mult(comp_sld, ephase);120 sumj_ud = cplx_add(sumj_ud, temp_fi);122 cassign(&comp_sld, b_sld.re_ud, b_sld.im_ud); 123 cplx_mult(&temp_fi, comp_sld, ephase); 124 cplx_add(&sumj_ud, sumj_ud, temp_fi); 121 125 } 122 126 //down_up 123 127 if (this->inspin < 1.0 && this->outspin > 0.0){ 124 comp_sld = cassign(b_sld.re_du, b_sld.im_du); 125 temp_fi = cplx_mult(comp_sld, ephase); 126 sumj_du = cplx_add(sumj_du, temp_fi); 127 } 128 128 cassign(&comp_sld, b_sld.re_du, b_sld.im_du); 129 cplx_mult(&temp_fi, comp_sld, ephase); 130 cplx_add(&sumj_du, sumj_du, temp_fi); 131 } 129 132 130 133 if (i == 0){
Note: See TracChangeset
for help on using the changeset viewer.