|
@@ -183,6 +183,9 @@ namespace Lemma {
|
183
|
183
|
case (UNGROUNDEDELECTRICDIPOLE):
|
184
|
184
|
this->Type = stype;
|
185
|
185
|
break;
|
|
186
|
+ case (GROUNDINGPOINT):
|
|
187
|
+ this->Type = stype;
|
|
188
|
+ break;
|
186
|
189
|
case (MAGNETICDIPOLE):
|
187
|
190
|
this->Type = stype;
|
188
|
191
|
break;
|
|
@@ -485,6 +488,172 @@ namespace Lemma {
|
485
|
488
|
}
|
486
|
489
|
break;
|
487
|
490
|
|
|
491
|
+ case (GROUNDINGPOINT):
|
|
492
|
+
|
|
493
|
+ if (std::abs(Pol[2]) > 0) { // z dipole
|
|
494
|
+
|
|
495
|
+ switch(FieldsToCalculate) {
|
|
496
|
+
|
|
497
|
+ case E:
|
|
498
|
+ if (lays == 0 && layr == 0) {
|
|
499
|
+ ik[10] = KernelManager->AddKernel<TM, 10, INAIR, INAIR>( );
|
|
500
|
+ ik[11] = KernelManager->AddKernel<TM, 11, INAIR, INAIR>( );
|
|
501
|
+ } else if (lays == 0 && layr > 0) {
|
|
502
|
+ ik[10] = KernelManager->AddKernel<TM, 10, INAIR, INGROUND>( );
|
|
503
|
+ ik[11] = KernelManager->AddKernel<TM, 11, INAIR, INGROUND>( );
|
|
504
|
+ } else if (lays > 0 && layr == 0) {
|
|
505
|
+ ik[10] = KernelManager->AddKernel<TM, 10, INGROUND, INAIR>( );
|
|
506
|
+ ik[11] = KernelManager->AddKernel<TM, 11, INGROUND, INAIR>( );
|
|
507
|
+ } else {
|
|
508
|
+ ik[10] = KernelManager->AddKernel<TM, 10, INGROUND, INGROUND>( );
|
|
509
|
+ ik[11] = KernelManager->AddKernel<TM, 11, INGROUND, INGROUND>( );
|
|
510
|
+ }
|
|
511
|
+ break;
|
|
512
|
+
|
|
513
|
+ case H:
|
|
514
|
+ if (lays == 0 && layr == 0) {
|
|
515
|
+ ik[12] = KernelManager->AddKernel<TM, 12, INAIR, INAIR>( );
|
|
516
|
+ } else if (lays == 0 && layr > 0) {
|
|
517
|
+ ik[12] = KernelManager->AddKernel<TM, 12, INAIR, INGROUND>( );
|
|
518
|
+ } else if (lays > 0 && layr == 0) {
|
|
519
|
+ ik[12] = KernelManager->AddKernel<TM, 12, INGROUND, INAIR>( );
|
|
520
|
+ } else {
|
|
521
|
+ ik[12] = KernelManager->AddKernel<TM, 12, INGROUND, INGROUND>( );
|
|
522
|
+ }
|
|
523
|
+ break;
|
|
524
|
+
|
|
525
|
+
|
|
526
|
+ case BOTH:
|
|
527
|
+ if ( lays == 0 && layr == 0) {
|
|
528
|
+ ik[10] = KernelManager->AddKernel<TM, 10, INAIR, INAIR>( );
|
|
529
|
+ ik[11] = KernelManager->AddKernel<TM, 11, INAIR, INAIR>( );
|
|
530
|
+ ik[12] = KernelManager->AddKernel<TM, 12, INAIR, INAIR>( );
|
|
531
|
+ } else if (lays == 0 && layr > 0) {
|
|
532
|
+ ik[10] = KernelManager->AddKernel<TM, 10, INAIR, INGROUND>( );
|
|
533
|
+ ik[11] = KernelManager->AddKernel<TM, 11, INAIR, INGROUND>( );
|
|
534
|
+ ik[12] = KernelManager->AddKernel<TM, 12, INAIR, INGROUND>( );
|
|
535
|
+ } else if (lays > 0 && layr == 0) {
|
|
536
|
+ ik[10] = KernelManager->AddKernel<TM, 10, INGROUND, INAIR>( );
|
|
537
|
+ ik[11] = KernelManager->AddKernel<TM, 11, INGROUND, INAIR>( );
|
|
538
|
+ ik[12] = KernelManager->AddKernel<TM, 12, INGROUND, INAIR>( );
|
|
539
|
+ } else {
|
|
540
|
+ ik[10] = KernelManager->AddKernel<TM, 10, INGROUND, INGROUND>( );
|
|
541
|
+ ik[11] = KernelManager->AddKernel<TM, 11, INGROUND, INGROUND>( );
|
|
542
|
+ ik[12] = KernelManager->AddKernel<TM, 12, INGROUND, INGROUND>( );
|
|
543
|
+ }
|
|
544
|
+ }
|
|
545
|
+ }
|
|
546
|
+ if (std::abs(Pol[1]) > 0 || std::abs(Pol[0]) > 0) { // x or y grounded HED dipole
|
|
547
|
+
|
|
548
|
+ switch(FieldsToCalculate) {
|
|
549
|
+
|
|
550
|
+ case E:
|
|
551
|
+ if ( lays == 0 && layr == 0) {
|
|
552
|
+ ik[0] = KernelManager->AddKernel<TM, 0, INAIR, INAIR>( );
|
|
553
|
+ ik[1] = KernelManager->AddKernel<TM, 1, INAIR, INAIR>( );
|
|
554
|
+ ik[4] = KernelManager->AddKernel<TM, 4, INAIR, INAIR>( );
|
|
555
|
+ //ik[2] = KernelManager->AddKernel<TE, 2, INAIR, INAIR>( );
|
|
556
|
+ //ik[3] = KernelManager->AddKernel<TE, 3, INAIR, INAIR>( );
|
|
557
|
+ } else if (lays == 0 && layr > 0) {
|
|
558
|
+ ik[0] = KernelManager->AddKernel<TM, 0, INAIR, INGROUND>( );
|
|
559
|
+ ik[1] = KernelManager->AddKernel<TM, 1, INAIR, INGROUND>( );
|
|
560
|
+ ik[4] = KernelManager->AddKernel<TM, 4, INAIR, INGROUND>( );
|
|
561
|
+ //ik[2] = KernelManager->AddKernel<TE, 2, INAIR, INGROUND>( );
|
|
562
|
+ //ik[3] = KernelManager->AddKernel<TE, 3, INAIR, INGROUND>( );
|
|
563
|
+ } else if (lays > 0 && layr == 0) {
|
|
564
|
+ ik[0] = KernelManager->AddKernel<TM, 0, INGROUND, INAIR>( );
|
|
565
|
+ ik[1] = KernelManager->AddKernel<TM, 1, INGROUND, INAIR>( );
|
|
566
|
+ ik[4] = KernelManager->AddKernel<TM, 4, INGROUND, INAIR>( );
|
|
567
|
+ //ik[2] = KernelManager->AddKernel<TE, 2, INGROUND, INAIR>( );
|
|
568
|
+ //ik[3] = KernelManager->AddKernel<TE, 3, INGROUND, INAIR>( );
|
|
569
|
+ } else {
|
|
570
|
+ ik[0] = KernelManager->AddKernel<TM, 0, INGROUND, INGROUND>( );
|
|
571
|
+ ik[1] = KernelManager->AddKernel<TM, 1, INGROUND, INGROUND>( );
|
|
572
|
+ ik[4] = KernelManager->AddKernel<TM, 4, INGROUND, INGROUND>( );
|
|
573
|
+ //ik[2] = KernelManager->AddKernel<TE, 2, INGROUND, INGROUND>( );
|
|
574
|
+ //ik[3] = KernelManager->AddKernel<TE, 3, INGROUND, INGROUND>( );
|
|
575
|
+ }
|
|
576
|
+ break;
|
|
577
|
+
|
|
578
|
+ case H:
|
|
579
|
+ if (lays == 0 && layr == 0) {
|
|
580
|
+ ik[5] = KernelManager->AddKernel<TM, 5, INAIR, INAIR>( );
|
|
581
|
+ ik[6] = KernelManager->AddKernel<TM, 6, INAIR, INAIR>( );
|
|
582
|
+ //ik[7] = KernelManager->AddKernel<TE, 7, INAIR, INAIR>( );
|
|
583
|
+ //ik[8] = KernelManager->AddKernel<TE, 8, INAIR, INAIR>( );
|
|
584
|
+ //ik[9] = KernelManager->AddKernel<TE, 9, INAIR, INAIR>( );
|
|
585
|
+ } else if (lays == 0 && layr > 0) {
|
|
586
|
+ ik[5] = KernelManager->AddKernel<TM, 5, INAIR, INGROUND>( );
|
|
587
|
+ ik[6] = KernelManager->AddKernel<TM, 6, INAIR, INGROUND>( );
|
|
588
|
+ //ik[7] = KernelManager->AddKernel<TE, 7, INAIR, INGROUND>( );
|
|
589
|
+ //ik[8] = KernelManager->AddKernel<TE, 8, INAIR, INGROUND>( );
|
|
590
|
+ //ik[9] = KernelManager->AddKernel<TE, 9, INAIR, INGROUND>( );
|
|
591
|
+ } else if (lays > 0 && layr == 0) {
|
|
592
|
+ ik[5] = KernelManager->AddKernel<TM, 5, INGROUND, INAIR>( );
|
|
593
|
+ ik[6] = KernelManager->AddKernel<TM, 6, INGROUND, INAIR>( );
|
|
594
|
+ //ik[7] = KernelManager->AddKernel<TE, 7, INGROUND, INAIR>( );
|
|
595
|
+ //ik[8] = KernelManager->AddKernel<TE, 8, INGROUND, INAIR>( );
|
|
596
|
+ //ik[9] = KernelManager->AddKernel<TE, 9, INGROUND, INAIR>( );
|
|
597
|
+ } else {
|
|
598
|
+ ik[5] = KernelManager->AddKernel<TM, 5, INGROUND, INGROUND>( );
|
|
599
|
+ ik[6] = KernelManager->AddKernel<TM, 6, INGROUND, INGROUND>( );
|
|
600
|
+ //ik[7] = KernelManager->AddKernel<TE, 7, INGROUND, INGROUND>( );
|
|
601
|
+ //ik[8] = KernelManager->AddKernel<TE, 8, INGROUND, INGROUND>( );
|
|
602
|
+ //ik[9] = KernelManager->AddKernel<TE, 9, INGROUND, INGROUND>( );
|
|
603
|
+ }
|
|
604
|
+ break;
|
|
605
|
+
|
|
606
|
+ case BOTH:
|
|
607
|
+ if (lays == 0 && layr == 0) {
|
|
608
|
+ ik[0] = KernelManager->AddKernel<TM, 0, INAIR, INAIR>( );
|
|
609
|
+ ik[1] = KernelManager->AddKernel<TM, 1, INAIR, INAIR>( );
|
|
610
|
+ ik[4] = KernelManager->AddKernel<TM, 4, INAIR, INAIR>( );
|
|
611
|
+ //ik[2] = KernelManager->AddKernel<TE, 2, INAIR, INAIR>( );
|
|
612
|
+ //ik[3] = KernelManager->AddKernel<TE, 3, INAIR, INAIR>( );
|
|
613
|
+ ik[5] = KernelManager->AddKernel<TM, 5, INAIR, INAIR>( );
|
|
614
|
+ ik[6] = KernelManager->AddKernel<TM, 6, INAIR, INAIR>( );
|
|
615
|
+ //ik[7] = KernelManager->AddKernel<TE, 7, INAIR, INAIR>( );
|
|
616
|
+ //ik[8] = KernelManager->AddKernel<TE, 8, INAIR, INAIR>( );
|
|
617
|
+ //ik[9] = KernelManager->AddKernel<TE, 9, INAIR, INAIR>( );
|
|
618
|
+ } else if (lays == 0 && layr > 0) {
|
|
619
|
+ ik[0] = KernelManager->AddKernel<TM, 0, INAIR, INGROUND>( );
|
|
620
|
+ ik[1] = KernelManager->AddKernel<TM, 1, INAIR, INGROUND>( );
|
|
621
|
+ ik[4] = KernelManager->AddKernel<TM, 4, INAIR, INGROUND>( );
|
|
622
|
+ //ik[2] = KernelManager->AddKernel<TE, 2, INAIR, INGROUND>( );
|
|
623
|
+ //ik[3] = KernelManager->AddKernel<TE, 3, INAIR, INGROUND>( );
|
|
624
|
+ ik[5] = KernelManager->AddKernel<TM, 5, INAIR, INGROUND>( );
|
|
625
|
+ ik[6] = KernelManager->AddKernel<TM, 6, INAIR, INGROUND>( );
|
|
626
|
+ //ik[7] = KernelManager->AddKernel<TE, 7, INAIR, INGROUND>( );
|
|
627
|
+ //ik[8] = KernelManager->AddKernel<TE, 8, INAIR, INGROUND>( );
|
|
628
|
+ //ik[9] = KernelManager->AddKernel<TE, 9, INAIR, INGROUND>( );
|
|
629
|
+ } else if (lays > 0 && layr == 0) {
|
|
630
|
+ ik[0] = KernelManager->AddKernel<TM, 0, INGROUND, INAIR>( );
|
|
631
|
+ ik[1] = KernelManager->AddKernel<TM, 1, INGROUND, INAIR>( );
|
|
632
|
+ ik[4] = KernelManager->AddKernel<TM, 4, INGROUND, INAIR>( );
|
|
633
|
+ //ik[2] = KernelManager->AddKernel<TE, 2, INGROUND, INAIR>( );
|
|
634
|
+ //ik[3] = KernelManager->AddKernel<TE, 3, INGROUND, INAIR>( );
|
|
635
|
+ ik[5] = KernelManager->AddKernel<TM, 5, INGROUND, INAIR>( );
|
|
636
|
+ ik[6] = KernelManager->AddKernel<TM, 6, INGROUND, INAIR>( );
|
|
637
|
+ //ik[7] = KernelManager->AddKernel<TE, 7, INGROUND, INAIR>( );
|
|
638
|
+ //ik[8] = KernelManager->AddKernel<TE, 8, INGROUND, INAIR>( );
|
|
639
|
+ //ik[9] = KernelManager->AddKernel<TE, 9, INGROUND, INAIR>( );
|
|
640
|
+ } else {
|
|
641
|
+ ik[0] = KernelManager->AddKernel<TM, 0, INGROUND, INGROUND>( );
|
|
642
|
+ ik[1] = KernelManager->AddKernel<TM, 1, INGROUND, INGROUND>( );
|
|
643
|
+ ik[4] = KernelManager->AddKernel<TM, 4, INGROUND, INGROUND>( );
|
|
644
|
+ //ik[2] = KernelManager->AddKernel<TE, 2, INGROUND, INGROUND>( );
|
|
645
|
+ //ik[3] = KernelManager->AddKernel<TE, 3, INGROUND, INGROUND>( );
|
|
646
|
+ ik[5] = KernelManager->AddKernel<TM, 5, INGROUND, INGROUND>( );
|
|
647
|
+ ik[6] = KernelManager->AddKernel<TM, 6, INGROUND, INGROUND>( );
|
|
648
|
+ //ik[7] = KernelManager->AddKernel<TE, 7, INGROUND, INGROUND>( );
|
|
649
|
+ //ik[8] = KernelManager->AddKernel<TE, 8, INGROUND, INGROUND>( );
|
|
650
|
+ //ik[9] = KernelManager->AddKernel<TE, 9, INGROUND, INGROUND>( );
|
|
651
|
+ }
|
|
652
|
+ break;
|
|
653
|
+ }
|
|
654
|
+ }
|
|
655
|
+ break;
|
|
656
|
+
|
488
|
657
|
case (UNGROUNDEDELECTRICDIPOLE):
|
489
|
658
|
|
490
|
659
|
if (std::abs(Pol[2]) > 0) { // z dipole
|
|
@@ -786,8 +955,6 @@ namespace Lemma {
|
786
|
955
|
exit(EXIT_FAILURE);
|
787
|
956
|
|
788
|
957
|
}
|
789
|
|
-
|
790
|
|
-
|
791
|
958
|
}
|
792
|
959
|
|
793
|
960
|
void DipoleSource::UpdateFields( const int& ifreq, HankelTransform* Hankel, const Real& wavef) {
|
|
@@ -874,6 +1041,7 @@ namespace Lemma {
|
874
|
1041
|
Pol[0]*Moment*QPI*sp*f(9) );
|
875
|
1042
|
}
|
876
|
1043
|
break;
|
|
1044
|
+
|
877
|
1045
|
case BOTH:
|
878
|
1046
|
f(0) = Hankel->Zgauss(0, TM, 0, rho, wavef, KernelManager->GetRAWKernel(ik[0])) / KernelManager->GetRAWKernel(ik[0])->GetYm();
|
879
|
1047
|
f(1) = Hankel->Zgauss(1, TM, 1, rho, wavef, KernelManager->GetRAWKernel(ik[1])) / KernelManager->GetRAWKernel(ik[1])->GetYm();
|
|
@@ -913,6 +1081,128 @@ namespace Lemma {
|
913
|
1081
|
}
|
914
|
1082
|
break; // GROUNDEDELECTRICDIPOLE
|
915
|
1083
|
|
|
1084
|
+ case (GROUNDINGPOINT):
|
|
1085
|
+ if (std::abs(Pol[2]) > 0) { // z dipole
|
|
1086
|
+ switch(FieldsToCalculate) {
|
|
1087
|
+ case E:
|
|
1088
|
+ f(10) = Hankel->Zgauss(10, TM, 1, rho, wavef, KernelManager->GetRAWKernel(ik[10])) / KernelManager->GetRAWKernel(ik[10])->GetYm();
|
|
1089
|
+ f(11) = Hankel->Zgauss(11, TM, 0, rho, wavef, KernelManager->GetRAWKernel(ik[11])) / KernelManager->GetRAWKernel(ik[11])->GetYm();
|
|
1090
|
+ this->Receivers->AppendEfield(ifreq, irec,
|
|
1091
|
+ -Pol[2]*QPI*cp*f(10)*Moment,
|
|
1092
|
+ -Pol[2]*QPI*sp*f(10)*Moment,
|
|
1093
|
+ Pol[2]*QPI*f(11)*Moment);
|
|
1094
|
+ break;
|
|
1095
|
+
|
|
1096
|
+ case H:
|
|
1097
|
+ f(12) = Hankel->Zgauss(12, TM, 1, rho, wavef, KernelManager->GetRAWKernel(ik[12]));
|
|
1098
|
+ this->Receivers->AppendHfield(ifreq, irec,
|
|
1099
|
+ -Pol[2]*QPI*sp*f(12)*Moment,
|
|
1100
|
+ Pol[2]*QPI*cp*f(12)*Moment,
|
|
1101
|
+ 0. );
|
|
1102
|
+ break;
|
|
1103
|
+
|
|
1104
|
+ case BOTH:
|
|
1105
|
+ f(10) = Hankel->Zgauss(10, TM, 1, rho, wavef, KernelManager->GetRAWKernel(ik[10])) / KernelManager->GetRAWKernel(ik[10])->GetYm();
|
|
1106
|
+ f(11) = Hankel->Zgauss(11, TM, 0, rho, wavef, KernelManager->GetRAWKernel(ik[11])) / KernelManager->GetRAWKernel(ik[11])->GetYm();
|
|
1107
|
+ this->Receivers->AppendEfield(ifreq, irec,
|
|
1108
|
+ -Pol[2]*QPI*cp*f(10)*Moment,
|
|
1109
|
+ -Pol[2]*QPI*sp*f(10)*Moment,
|
|
1110
|
+ Pol[2]*QPI*f(11)*Moment );
|
|
1111
|
+
|
|
1112
|
+ f(12) = Hankel->Zgauss(12, TM, 1, rho, wavef, KernelManager->GetRAWKernel(ik[12]));
|
|
1113
|
+ this->Receivers->AppendHfield(ifreq, irec,
|
|
1114
|
+ -Pol[2]*QPI*sp*f(12)*Moment,
|
|
1115
|
+ Pol[2]*QPI*cp*f(12)*Moment,
|
|
1116
|
+ 0. );
|
|
1117
|
+ } // Fields to calculate Z polarity Electric dipole
|
|
1118
|
+ }
|
|
1119
|
+ if (std::abs(Pol[1]) > 0 || std::abs(Pol[0]) > 0) { // x or y dipole
|
|
1120
|
+ switch(FieldsToCalculate) {
|
|
1121
|
+ case E:
|
|
1122
|
+ f(2) = 0;//Hankel->Zgauss(2, TE, 0, rho, wavef, KernelManager->GetRAWKernel(ik[2])) * KernelManager->GetRAWKernel(ik[2])->GetZs();
|
|
1123
|
+ f(3) = 0;//Hankel->Zgauss(3, TE, 1, rho, wavef, KernelManager->GetRAWKernel(ik[3])) * KernelManager->GetRAWKernel(ik[3])->GetZs();
|
|
1124
|
+ f(0) = Hankel->Zgauss(0, TM, 0, rho, wavef, KernelManager->GetRAWKernel(ik[0])) / KernelManager->GetRAWKernel(ik[0])->GetYm();
|
|
1125
|
+ f(1) = Hankel->Zgauss(1, TM, 1, rho, wavef, KernelManager->GetRAWKernel(ik[1])) / KernelManager->GetRAWKernel(ik[1])->GetYm();
|
|
1126
|
+ f(4) = Hankel->Zgauss(4, TM, 1, rho, wavef, KernelManager->GetRAWKernel(ik[4])) / KernelManager->GetRAWKernel(ik[4])->GetYm();
|
|
1127
|
+ if (std::abs(Pol[1]) > 0) {
|
|
1128
|
+ this->Receivers->AppendEfield(ifreq, irec,
|
|
1129
|
+ 0,0,0);
|
|
1130
|
+ //Pol[1]*QPI*Moment*scp*(f(0)+f(2)),
|
|
1131
|
+ //Pol[1]*QPI*Moment*((sps*f(0)+c2p*f(1)/rho)),
|
|
1132
|
+ //Pol[1]*QPI*Moment*(f(0)+f(2)),
|
|
1133
|
+ //Pol[1]*QPI*Moment*((f(0)+f(1)/rho)),
|
|
1134
|
+ //Pol[1]*QPI*sp*f(4)*Moment);
|
|
1135
|
+ // std dipole
|
|
1136
|
+ //Pol[1]*QPI*scp*((f(0)-(Real)(2.)*f(1)/rho)+(f(2)-(Real)(2.)*f(3)/rho))*Moment ,
|
|
1137
|
+ //Pol[1]*QPI*((sps*f(0)+c2p*f(1)/rho)-(cps*f(2)-c2p*f(3)/rho))*Moment,
|
|
1138
|
+ //Pol[1]*QPI*sp*f(4)*Moment);
|
|
1139
|
+ }
|
|
1140
|
+ if (std::abs(Pol[0]) > 0) {
|
|
1141
|
+ this->Receivers->AppendEfield(ifreq, irec,
|
|
1142
|
+ Pol[0]*Moment*QPI*((cps*f(0)-c2p*f(1)/rho)), //-(sps*f(2)+c2p*f(3)/rho)),
|
|
1143
|
+ Pol[0]*Moment*QPI*scp*((f(0)-(Real)(2.)*f(1)/rho)), //+(f(2)-(Real)(2.)*f(3)/rho)),
|
|
1144
|
+ Pol[0]*Moment*QPI*cp*f(4) );
|
|
1145
|
+ }
|
|
1146
|
+ break;
|
|
1147
|
+ case H:
|
|
1148
|
+ f(5) = Hankel->Zgauss(5, TM, 0, rho, wavef, KernelManager->GetRAWKernel(ik[5]));
|
|
1149
|
+ f(6) = Hankel->Zgauss(6, TM, 1, rho, wavef, KernelManager->GetRAWKernel(ik[6]));
|
|
1150
|
+ f(7) = Hankel->Zgauss(7, TE, 0, rho, wavef, KernelManager->GetRAWKernel(ik[7]))*KernelManager->GetRAWKernel(ik[7])->GetZs()/KernelManager->GetRAWKernel(ik[7])->GetZm();
|
|
1151
|
+ f(8) = Hankel->Zgauss(8, TE, 1, rho, wavef, KernelManager->GetRAWKernel(ik[8]))*KernelManager->GetRAWKernel(ik[8])->GetZs()/KernelManager->GetRAWKernel(ik[8])->GetZm();
|
|
1152
|
+ f(9) = Hankel->Zgauss(9, TE, 1, rho, wavef, KernelManager->GetRAWKernel(ik[9]))*KernelManager->GetRAWKernel(ik[9])->GetZs()/KernelManager->GetRAWKernel(ik[9])->GetZm();
|
|
1153
|
+ if (std::abs(Pol[1]) > 0) {
|
|
1154
|
+ this->Receivers->AppendHfield(ifreq, irec,
|
|
1155
|
+ Pol[1]*QPI*(sps*f(5)+c2p*f(6)/rho-cps*f(7)+c2p*f(8)/rho)*Moment,
|
|
1156
|
+ Pol[1]*QPI*scp*(-f(5)+(Real)(2.)*f(6)/rho-f(7)+(Real)(2.)*f(8)/rho)*Moment,
|
|
1157
|
+ -Pol[1]*QPI*cp*f(9)*Moment );
|
|
1158
|
+ }
|
|
1159
|
+ if (std::abs(Pol[0]) > 0) {
|
|
1160
|
+ this->Receivers->AppendHfield(ifreq, irec,
|
|
1161
|
+ Pol[0]*Moment*QPI*scp*(f(5)-(Real)(2.)*f(6)/rho+f(7)-(Real)(2.)*f(8)/rho),
|
|
1162
|
+ Pol[0]*Moment*QPI*(-cps*f(5)+c2p*f(6)/rho+sps*f(7)+c2p*f(8)/rho),
|
|
1163
|
+ Pol[0]*Moment*QPI*sp*f(9) );
|
|
1164
|
+ }
|
|
1165
|
+ break;
|
|
1166
|
+
|
|
1167
|
+ case BOTH:
|
|
1168
|
+ f(0) = Hankel->Zgauss(0, TM, 0, rho, wavef, KernelManager->GetRAWKernel(ik[0])) / KernelManager->GetRAWKernel(ik[0])->GetYm();
|
|
1169
|
+ f(1) = Hankel->Zgauss(1, TM, 1, rho, wavef, KernelManager->GetRAWKernel(ik[1])) / KernelManager->GetRAWKernel(ik[1])->GetYm();
|
|
1170
|
+ f(4) = Hankel->Zgauss(4, TM, 1, rho, wavef, KernelManager->GetRAWKernel(ik[4])) / KernelManager->GetRAWKernel(ik[4])->GetYm();
|
|
1171
|
+ f(2) = Hankel->Zgauss(2, TE, 0, rho, wavef, KernelManager->GetRAWKernel(ik[2])) * KernelManager->GetRAWKernel(ik[2])->GetZs();
|
|
1172
|
+ f(3) = Hankel->Zgauss(3, TE, 1, rho, wavef, KernelManager->GetRAWKernel(ik[3])) * KernelManager->GetRAWKernel(ik[3])->GetZs();
|
|
1173
|
+ f(5) = Hankel->Zgauss(5, TM, 0, rho, wavef, KernelManager->GetRAWKernel(ik[5]));
|
|
1174
|
+ f(6) = Hankel->Zgauss(6, TM, 1, rho, wavef, KernelManager->GetRAWKernel(ik[6]));
|
|
1175
|
+ f(7) = Hankel->Zgauss(7, TE, 0, rho, wavef, KernelManager->GetRAWKernel(ik[7]))*KernelManager->GetRAWKernel(ik[7])->GetZs()/KernelManager->GetRAWKernel(ik[7])->GetZm();
|
|
1176
|
+ f(8) = Hankel->Zgauss(8, TE, 1, rho, wavef, KernelManager->GetRAWKernel(ik[8]))*KernelManager->GetRAWKernel(ik[8])->GetZs()/KernelManager->GetRAWKernel(ik[8])->GetZm();
|
|
1177
|
+ f(9) = Hankel->Zgauss(9, TE, 1, rho, wavef, KernelManager->GetRAWKernel(ik[9]))*KernelManager->GetRAWKernel(ik[9])->GetZs()/KernelManager->GetRAWKernel(ik[9])->GetZm();
|
|
1178
|
+
|
|
1179
|
+ if (std::abs(Pol[1]) > 0) {
|
|
1180
|
+ this->Receivers->AppendEfield(ifreq, irec,
|
|
1181
|
+ Pol[1]*QPI*scp*((f(0)-(Real)(2.)*f(1)/rho)+(f(2)-(Real)(2.)*f(3)/rho))*Moment ,
|
|
1182
|
+ Pol[1]*QPI*((sps*f(0)+c2p*f(1)/rho)-(cps*f(2)-c2p*f(3)/rho))*Moment,
|
|
1183
|
+ Pol[1]*QPI*sp*f(4)*Moment);
|
|
1184
|
+
|
|
1185
|
+ this->Receivers->AppendHfield(ifreq, irec,
|
|
1186
|
+ Pol[1]*QPI*(sps*f(5)+c2p*f(6)/rho-cps*f(7)+c2p*f(8)/rho)*Moment,
|
|
1187
|
+ Pol[1]*QPI*scp*(-f(5)+(Real)(2.)*f(6)/rho-f(7)+(Real)(2.)*f(8)/rho)*Moment,
|
|
1188
|
+ -Pol[1]*QPI*cp*f(9)*Moment );
|
|
1189
|
+ }
|
|
1190
|
+ if (std::abs(Pol[0]) > 0) {
|
|
1191
|
+ this->Receivers->AppendEfield(ifreq, irec,
|
|
1192
|
+ Pol[0]*Moment*QPI*((cps*f(0)-c2p*f(1)/rho)-(sps*f(2)+c2p*f(3)/rho)),
|
|
1193
|
+ Pol[0]*Moment*QPI*scp*((f(0)-(Real)(2.)*f(1)/rho)+(f(2)-(Real)(2.)*f(3)/rho)),
|
|
1194
|
+ Pol[0]*Moment*QPI*cp*f(4) );
|
|
1195
|
+
|
|
1196
|
+ this->Receivers->AppendHfield(ifreq, irec,
|
|
1197
|
+ Pol[0]*Moment*QPI*scp*(f(5)-(Real)(2.)*f(6)/rho+f(7)-(Real)(2.)*f(8)/rho),
|
|
1198
|
+ Pol[0]*Moment*QPI*(-cps*f(5)+c2p*f(6)/rho+sps*f(7)+c2p*f(8)/rho),
|
|
1199
|
+ Pol[0]*Moment*QPI*sp*f(9) );
|
|
1200
|
+ }
|
|
1201
|
+ break;
|
|
1202
|
+ }
|
|
1203
|
+ }
|
|
1204
|
+ break; // GROUNDINGPOINT
|
|
1205
|
+
|
916
|
1206
|
|
917
|
1207
|
case UNGROUNDEDELECTRICDIPOLE:
|
918
|
1208
|
|
|
@@ -955,11 +1245,16 @@ namespace Lemma {
|
955
|
1245
|
|
956
|
1246
|
switch(FieldsToCalculate) {
|
957
|
1247
|
case E:
|
958
|
|
- f(0) = 0;
|
959
|
|
- f(1) = 0;
|
|
1248
|
+ //f(0) = 0;
|
|
1249
|
+ //f(1) = 0;
|
|
1250
|
+ //f(2) = Hankel->Zgauss(2, TE, 0, rho, wavef, KernelManager->GetRAWKernel(ik[2])) * KernelManager->GetRAWKernel(ik[2])->GetZs();
|
|
1251
|
+ //f(3) = Hankel->Zgauss(3, TE, 1, rho, wavef, KernelManager->GetRAWKernel(ik[3])) * KernelManager->GetRAWKernel(ik[3])->GetZs();
|
|
1252
|
+ //f(4) = 0;
|
960
|
1253
|
f(2) = Hankel->Zgauss(2, TE, 0, rho, wavef, KernelManager->GetRAWKernel(ik[2])) * KernelManager->GetRAWKernel(ik[2])->GetZs();
|
961
|
1254
|
f(3) = Hankel->Zgauss(3, TE, 1, rho, wavef, KernelManager->GetRAWKernel(ik[3])) * KernelManager->GetRAWKernel(ik[3])->GetZs();
|
962
|
|
- f(4) = 0;
|
|
1255
|
+ f(0) = Hankel->Zgauss(0, TM, 0, rho, wavef, KernelManager->GetRAWKernel(ik[0])) / KernelManager->GetRAWKernel(ik[0])->GetYm();
|
|
1256
|
+ f(1) = Hankel->Zgauss(1, TM, 1, rho, wavef, KernelManager->GetRAWKernel(ik[1])) / KernelManager->GetRAWKernel(ik[1])->GetYm();
|
|
1257
|
+ f(4) = Hankel->Zgauss(4, TM, 1, rho, wavef, KernelManager->GetRAWKernel(ik[4])) / KernelManager->GetRAWKernel(ik[4])->GetYm();
|
963
|
1258
|
if (std::abs(Pol[1]) > 0) {
|
964
|
1259
|
this->Receivers->AppendEfield(ifreq, irec,
|
965
|
1260
|
Pol[1]*QPI*scp*((f(0)-(Real)(2.)*f(1)/rho)+(f(2)-(Real)(2.)*f(3)/rho))*Moment,
|
|
@@ -984,7 +1279,7 @@ namespace Lemma {
|
984
|
1279
|
this->Receivers->AppendHfield(ifreq, irec,
|
985
|
1280
|
Pol[1]*QPI*(sps*f(5)+c2p*f(6)/rho-cps*f(7)+c2p*f(8)/rho)*Moment,
|
986
|
1281
|
Pol[1]*QPI*scp*(-f(5)+(Real)(2.)*f(6)/rho-f(7)+(Real)(2.)*f(8)/rho)*Moment,
|
987
|
|
- -Pol[1]*QPI*cp*f(9)*Moment );
|
|
1282
|
+ -Pol[1]*QPI*cp*f(9)*Moment );
|
988
|
1283
|
}
|
989
|
1284
|
if (std::abs(Pol[0]) > 0) {
|
990
|
1285
|
this->Receivers->AppendHfield(ifreq, irec,
|
|
@@ -1036,7 +1331,6 @@ namespace Lemma {
|
1036
|
1331
|
break; // UNGROUNDEDELECTRICDIPOLE
|
1037
|
1332
|
|
1038
|
1333
|
case MAGNETICDIPOLE:
|
1039
|
|
-
|
1040
|
1334
|
//Hankel->ComputeRelated(rho, KernelManager);
|
1041
|
1335
|
if (std::abs(Pol[2]) > 0) { // z dipole
|
1042
|
1336
|
switch(FieldsToCalculate) {
|