@@ -173,9 +173,9 @@ HEAP_DATA * FastMarching_with_initial(
173173
174174 // break loop in advance when reach the boundary
175175 if ( edgeStop != NULL && (
176- edgeStop [0 ]&& ir0 == 0 || edgeStop [1 ]&& ir0 == nr - 1 ||
177- edgeStop [2 ]&& it0 == 0 || edgeStop [3 ]&& it0 == nt - 1 ||
178- edgeStop [4 ]&& ip0 == 0 || edgeStop [5 ]&& ip0 == np - 1 )) break ;
176+ ( edgeStop [0 ]&& ir0 == 0 ) || ( edgeStop [1 ]&& ir0 == nr - 1 ) ||
177+ ( edgeStop [2 ]&& it0 == 0 ) || ( edgeStop [3 ]&& it0 == nt - 1 ) ||
178+ ( edgeStop [4 ]&& ip0 == 0 ) || ( edgeStop [5 ]&& ip0 == np - 1 ) )) break ;
179179
180180
181181
@@ -606,14 +606,14 @@ HEAP_DATA * init_source_TT_refinegrid(
606606
607607 }}
608608
609- free1d (rfg_TT );
610- free1d (rfg_Slw );
611- free1d (rfg_rs );
612- free1d (rfg_ts );
613- free1d (rfg_ps );
609+ free (rfg_TT );
610+ free (rfg_Slw );
611+ free (rfg_rs );
612+ free (rfg_ts );
613+ free (rfg_ps );
614614
615- free1d (rfg_FMM_data );
616- free1d (rfg_NroIdx );
615+ free (rfg_FMM_data );
616+ free (rfg_NroIdx );
617617
618618
619619 return FMM_data ;
@@ -980,17 +980,30 @@ MYREAL FMM_raytracing(
980980 rays [3 * idot ] = r0 ;
981981 rays [3 * idot + 1 ] = t0 ;
982982 rays [3 * idot + 2 ] = p0 ;
983+
984+ if (Slw != NULL ){
985+ // compute distance of last two points
986+ if (sphcoord ){
987+ rtp2xyz (r1 , t1 , p1 , & x1 , & y1 , & z1 );
988+ dx = x1 - x0 ;
989+ dy = y1 - y0 ;
990+ dz = z1 - z0 ;
991+ dist = sqrt (dx * dx + dy * dy + dz * dz );
992+ } else {
993+ dist = sqrt (pow (r0 - r1 ,2 ) + pow (t0 - t1 ,2 ) + pow (p0 - p1 ,2 ));
994+ }
995+ rmid = (r0 + r1 )/2.0 ;
996+ tmid = (t0 + t1 )/2.0 ;
997+ pmid = (p0 + p1 )/2.0 ;
998+ travt1 += trilinear_one_ravel (
999+ rs , nr , ts , nt , ps , np , ntp , Slw , rmid , tmid , pmid ,
1000+ NULL , NULL , NULL , NULL , NULL ) * dist ;
1001+ }
9831002
9841003 idot ++ ;
9851004 * N = idot ;
9861005
9871006 if (Slw != NULL ){
988- rmid = (r0 + rays [3 * idot - 3 ])/2.0 ;
989- tmid = (t0 + rays [3 * idot - 2 ])/2.0 ;
990- pmid = (p0 + rays [3 * idot - 1 ])/2.0 ;
991- travt1 += trilinear_one_ravel (
992- rs , nr , ts , nt , ps , np , ntp , Slw , rmid , tmid , pmid ,
993- NULL , NULL , NULL , NULL , NULL ) * seglen1 ;
9941007 return travt1 ;
9951008 } else {
9961009 return travt ;
0 commit comments