├── .gitignore ├── CSAMT ├── Int1_kernel.m ├── Int2_kernel.m ├── Int3_kernel.m ├── Int4_kernel.m ├── Int5_kernel.m ├── Int6_kernel.m ├── Int7_kernel.m ├── R.m ├── Rs.m ├── figures │ ├── D_rhoE.png │ ├── D_rhoM.png │ ├── D_rhoa.png │ ├── G_rhoE.png │ ├── G_rhoM.png │ ├── G_rhoa.png │ ├── H_rhoE.png │ ├── H_rhoM.png │ ├── H_rhoa.png │ ├── KH_rhoE.png │ ├── KH_rhoM.png │ ├── KH_rhoa.png │ ├── K_rhoE.png │ ├── K_rhoM.png │ ├── K_rhoa.png │ └── halfspace.png ├── hankel_J0_trans.m ├── hankel_J1_trans.m ├── main.m └── rhoa_curve.m ├── MT ├── MT1DFW.m ├── figures │ ├── A_rhoa.png │ ├── H_rhoa.png │ ├── K_rhoa.png │ └── Q_rhoa.png └── main.m └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | *.swp 2 | -------------------------------------------------------------------------------- /CSAMT/Int1_kernel.m: -------------------------------------------------------------------------------- 1 | function res = I1_kernel(lambda) 2 | 3 | [Rv, m1] = Rs(lambda); 4 | 5 | res = lambda/(lambda + m1/Rv); 6 | 7 | end 8 | -------------------------------------------------------------------------------- /CSAMT/Int2_kernel.m: -------------------------------------------------------------------------------- 1 | function res = I2_kernel(lambda) 2 | 3 | [Rv, m1] = Rs(lambda); 4 | 5 | res = m1/Rv*lambda/(lambda + m1/Rv); 6 | 7 | end 8 | -------------------------------------------------------------------------------- /CSAMT/Int3_kernel.m: -------------------------------------------------------------------------------- 1 | function res = I3_kernel(lambda) 2 | 3 | [Rv, m1] = Rs(lambda); 4 | 5 | res = lambda^2/(lambda + m1/Rv); 6 | 7 | end 8 | -------------------------------------------------------------------------------- /CSAMT/Int4_kernel.m: -------------------------------------------------------------------------------- 1 | function res = I4_kernel(lambda) 2 | 3 | [Rv, m1] = Rs(lambda); 4 | 5 | res = 1.0/(lambda + m1/Rv); 6 | 7 | end 8 | -------------------------------------------------------------------------------- /CSAMT/Int5_kernel.m: -------------------------------------------------------------------------------- 1 | function res = I5_kernel(lambda) 2 | 3 | [Rv, m1] = R(lambda); 4 | 5 | res = m1*lambda/Rv; 6 | 7 | end 8 | -------------------------------------------------------------------------------- /CSAMT/Int6_kernel.m: -------------------------------------------------------------------------------- 1 | function res = I6_kernel(lambda) 2 | 3 | [Rv, m1] = R(lambda); 4 | 5 | res = m1/Rv; 6 | 7 | end 8 | -------------------------------------------------------------------------------- /CSAMT/Int7_kernel.m: -------------------------------------------------------------------------------- 1 | function res = I7_kernel(lambda) 2 | 3 | [Rv, m1] = Rs(lambda); 4 | 5 | res = lambda/(lambda + m1/Rv); 6 | 7 | end 8 | -------------------------------------------------------------------------------- /CSAMT/R.m: -------------------------------------------------------------------------------- 1 | function [res, m1] = R(lambda) 2 | 3 | global rho d k2; 4 | m = sqrt(lambda^2 - k2); 5 | 6 | nlayer = length(d); 7 | res = 1.0; 8 | 9 | for i = nlayer - 1: - 1:1 10 | res = acoth((m(i)/m(i + 1)*rho(i)/rho(i + 1))*res); 11 | res = coth(m(i)*d(i) + res); 12 | end 13 | 14 | m1 = m(1); 15 | 16 | end 17 | -------------------------------------------------------------------------------- /CSAMT/Rs.m: -------------------------------------------------------------------------------- 1 | function [res, m1] = Rs(lambda) 2 | 3 | global rho d k2; 4 | m = sqrt(lambda^2 - k2); 5 | 6 | nlayer = length(d); 7 | res = 1.0; 8 | 9 | for i = nlayer - 1: - 1:1 10 | res = acoth((m(i)/m(i + 1))*res); 11 | res = coth(m(i)*d(i) + res); 12 | end 13 | 14 | m1 = m(1); 15 | 16 | end 17 | -------------------------------------------------------------------------------- /CSAMT/figures/D_rhoE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TcheL/MT-CSAMT/753a7b9d742438483c22954694f05681bea2d0f3/CSAMT/figures/D_rhoE.png -------------------------------------------------------------------------------- /CSAMT/figures/D_rhoM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TcheL/MT-CSAMT/753a7b9d742438483c22954694f05681bea2d0f3/CSAMT/figures/D_rhoM.png -------------------------------------------------------------------------------- /CSAMT/figures/D_rhoa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TcheL/MT-CSAMT/753a7b9d742438483c22954694f05681bea2d0f3/CSAMT/figures/D_rhoa.png -------------------------------------------------------------------------------- /CSAMT/figures/G_rhoE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TcheL/MT-CSAMT/753a7b9d742438483c22954694f05681bea2d0f3/CSAMT/figures/G_rhoE.png -------------------------------------------------------------------------------- /CSAMT/figures/G_rhoM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TcheL/MT-CSAMT/753a7b9d742438483c22954694f05681bea2d0f3/CSAMT/figures/G_rhoM.png -------------------------------------------------------------------------------- /CSAMT/figures/G_rhoa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TcheL/MT-CSAMT/753a7b9d742438483c22954694f05681bea2d0f3/CSAMT/figures/G_rhoa.png -------------------------------------------------------------------------------- /CSAMT/figures/H_rhoE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TcheL/MT-CSAMT/753a7b9d742438483c22954694f05681bea2d0f3/CSAMT/figures/H_rhoE.png -------------------------------------------------------------------------------- /CSAMT/figures/H_rhoM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TcheL/MT-CSAMT/753a7b9d742438483c22954694f05681bea2d0f3/CSAMT/figures/H_rhoM.png -------------------------------------------------------------------------------- /CSAMT/figures/H_rhoa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TcheL/MT-CSAMT/753a7b9d742438483c22954694f05681bea2d0f3/CSAMT/figures/H_rhoa.png -------------------------------------------------------------------------------- /CSAMT/figures/KH_rhoE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TcheL/MT-CSAMT/753a7b9d742438483c22954694f05681bea2d0f3/CSAMT/figures/KH_rhoE.png -------------------------------------------------------------------------------- /CSAMT/figures/KH_rhoM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TcheL/MT-CSAMT/753a7b9d742438483c22954694f05681bea2d0f3/CSAMT/figures/KH_rhoM.png -------------------------------------------------------------------------------- /CSAMT/figures/KH_rhoa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TcheL/MT-CSAMT/753a7b9d742438483c22954694f05681bea2d0f3/CSAMT/figures/KH_rhoa.png -------------------------------------------------------------------------------- /CSAMT/figures/K_rhoE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TcheL/MT-CSAMT/753a7b9d742438483c22954694f05681bea2d0f3/CSAMT/figures/K_rhoE.png -------------------------------------------------------------------------------- /CSAMT/figures/K_rhoM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TcheL/MT-CSAMT/753a7b9d742438483c22954694f05681bea2d0f3/CSAMT/figures/K_rhoM.png -------------------------------------------------------------------------------- /CSAMT/figures/K_rhoa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TcheL/MT-CSAMT/753a7b9d742438483c22954694f05681bea2d0f3/CSAMT/figures/K_rhoa.png -------------------------------------------------------------------------------- /CSAMT/figures/halfspace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TcheL/MT-CSAMT/753a7b9d742438483c22954694f05681bea2d0f3/CSAMT/figures/halfspace.png -------------------------------------------------------------------------------- /CSAMT/hankel_J0_trans.m: -------------------------------------------------------------------------------- 1 | function res = hankel_J0_trans(r, func) 2 | 3 | % Reference: 4 | % Guptasarma D. and Singh, 1997. New digital linear filters for Hankel J_0 5 | % and J_1 tranforms. Geophysical Prospecting, 45, 745-762. 6 | 7 | J0_120 = [ ... 8 | 9.62801364263e-07 -5.02069203805e-06 1.25268783953e-05 -1.99324417376e-05 ... 9 | 2.29149033546e-05 -2.04737583809e-05 1.49952002937e-05 -9.37502840980e-06 ... 10 | 5.20156955323e-06 -2.62939890538e-06 1.26550848081e-06 -5.73156151923e-07 ... 11 | 2.76281274155e-07 -1.09963734387e-07 7.38038330280e-08 -9.31614600001e-09 ... 12 | 3.87247135578e-08 2.10303178461e-08 4.10556513877e-08 4.13077946246e-08 ... 13 | 5.68828741789e-08 6.59543638130e-08 8.40811858728e-08 1.01532550003e-07 ... 14 | 1.26437360082e-07 1.54733678097e-07 1.91218582499e-07 2.35008851918e-07 ... 15 | 2.89750329490e-07 3.56550504341e-07 4.39299297826e-07 5.40794544880e-07 ... 16 | 6.66136379541e-07 8.20175040653e-07 1.01015545059e-06 1.24384500153e-06 ... 17 | 1.53187399787e-06 1.88633707689e-06 2.32307100992e-06 2.86067883258e-06 ... 18 | 3.52293208580e-06 4.33827546442e-06 5.34253613351e-06 6.57906223200e-06 ... 19 | 8.10198829111e-06 9.97723263578e-06 1.22867312381e-05 1.51305855976e-05 ... 20 | 1.86329431672e-05 2.29456891669e-05 2.82570465155e-05 3.47973610445e-05 ... 21 | 4.28521099371e-05 5.27705217882e-05 6.49856943660e-05 8.00269662180e-05 ... 22 | 9.85515408752e-05 1.21361571831e-04 1.49454562334e-04 1.84045784500e-04 ... 23 | 2.26649641428e-04 2.79106748890e-04 3.43716968725e-04 4.23267056591e-04 ... 24 | 5.21251001943e-04 6.41886194381e-04 7.90483105615e-04 9.73420647376e-04 ... 25 | 1.19877439042e-03 1.47618560844e-03 1.81794224454e-03 2.23860214971e-03 ... 26 | 2.75687537633e-03 3.39471308297e-03 4.18062141752e-03 5.14762977308e-03 ... 27 | 6.33918155348e-03 7.80480111772e-03 9.61064602702e-03 1.18304971234e-02 ... 28 | 1.45647517743e-02 1.79219149417e-02 2.20527911163e-02 2.71124775541e-02 ... 29 | 3.33214363101e-02 4.08864842127e-02 5.01074356716e-02 6.12084049407e-02 ... 30 | 7.45146949048e-02 9.00780900611e-02 1.07940155413e-01 1.27267746478e-01 ... 31 | 1.46676027814e-01 1.62254276550e-01 1.68045766353e-01 1.52383204788e-01 ... 32 | 1.01214136498e-01 -2.44389126667e-03 -1.54078468398e-01 -3.03214415655e-01 ... 33 | -2.97674373379e-01 7.93541259524e-03 4.26273267393e-01 1.00032384844e-01 ... 34 | -4.94117404043e-01 3.92604878741e-01 -1.90111691178e-01 7.43654896362e-02 ... 35 | -2.78508428343e-02 1.09992061155e-02 -4.69798719697e-03 2.12587632706e-03 ... 36 | -9.81986734159e-04 4.44992546836e-04 -1.89983519162e-04 7.31024164292e-05 ... 37 | -2.40057837293e-05 6.23096824846e-06 -1.12363896552e-06 1.04470606055e-07 ... 38 | ]; 39 | 40 | a = -8.3885; 41 | s = 9.0422646867e-2; 42 | f = 0.0; 43 | for i = 1:1:120 44 | lambda = 10^(a + (i - 1)*s)/r; 45 | f = f + func(lambda)*J0_120(i); 46 | end 47 | res = f/r; 48 | 49 | end 50 | -------------------------------------------------------------------------------- /CSAMT/hankel_J1_trans.m: -------------------------------------------------------------------------------- 1 | function res = hankel_J1_trans(r, func) 2 | 3 | % Reference: 4 | % Guptasarma D. and Singh, 1997. New digital linear filters for Hankel J_0 5 | % and J_1 tranforms. Geophysical Prospecting, 45, 745-762. 6 | 7 | W = [ ... 8 | -6.76671159511e-14 3.39808396836e-13 -7.43411889153e-13 8.93613024469e-13 ... 9 | -5.47341591896e-13 -5.84920181906e-14 5.20780672883e-13 -6.92656254606e-13 ... 10 | 6.88908045074e-13 -6.39910528298e-13 5.82098912530e-13 -4.84912700478e-13 ... 11 | 3.54684337858e-13 -2.10855291368e-13 1.00452749275e-13 5.58449957721e-15 ... 12 | -5.67206735175e-14 1.09107856853e-13 -6.04067500756e-14 8.84512134731e-14 ... 13 | 2.22321981827e-14 8.38072239207e-14 1.23647835900e-13 1.44351787234e-13 ... 14 | 2.94276480713e-13 3.39965995918e-13 6.17024672340e-13 8.25310217692e-13 ... 15 | 1.32560792613e-12 1.90949961267e-12 2.93458179767e-12 4.33454210095e-12 ... 16 | 6.55863288798e-12 9.78324910827e-12 1.47126365223e-11 2.20240108708e-11 ... 17 | 3.30577485691e-11 4.95377381480e-11 7.43047574433e-11 1.11400535181e-10 ... 18 | 1.67052734516e-10 2.50470107577e-10 3.75597211630e-10 5.63165204681e-10 ... 19 | 8.44458166896e-10 1.26621795331e-09 1.89866561359e-09 2.84693620927e-09 ... 20 | 4.26886170263e-09 6.40104325574e-09 9.59798498616e-09 1.43918931885e-08 ... 21 | 2.15798696769e-08 3.23584600810e-08 4.85195105813e-08 7.27538583183e-08 ... 22 | 1.09090191748e-07 1.63577866557e-07 2.45275193920e-07 3.67784458730e-07 ... 23 | 5.51470341585e-07 8.26916206192e-07 1.23991037294e-06 1.85921554669e-06 ... 24 | 2.78777669034e-06 4.18019870272e-06 6.26794044911e-06 9.39858833064e-06 ... 25 | 1.40925408889e-05 2.11312291505e-05 3.16846342900e-05 4.75093313246e-05 ... 26 | 7.12354794719e-05 1.06810848460e-04 1.60146590551e-04 2.40110903628e-04 ... 27 | 3.59981158972e-04 5.39658308918e-04 8.08925141201e-04 1.21234066243e-03 ... 28 | 1.81650387595e-03 2.72068483151e-03 4.07274689463e-03 6.09135552241e-03 ... 29 | 9.09940027636e-03 1.35660714813e-02 2.01692550906e-02 2.98534800308e-02 ... 30 | 4.39060697220e-02 6.39211368217e-02 9.16763946228e-02 1.28368795114e-01 ... 31 | 1.73241920046e-01 2.19830379079e-01 2.51193131178e-01 2.32380049895e-01 ... 32 | 1.17121080205e-01 -1.17252913088e-01 -3.52148528535e-01 -2.71162871370e-01 ... 33 | 2.91134747110e-01 3.17192840623e-01 -4.93075681595e-01 3.11223091821e-01 ... 34 | -1.36044122543e-01 5.12141261934e-02 -1.90806300761e-02 7.57044398633e-03 ... 35 | -3.25432753751e-03 1.49774676371e-03 -7.24569558272e-04 3.62792644965e-04 ... 36 | -1.85907973641e-04 9.67201396593e-05 -5.07744171678e-05 2.67510121456e-05 ... 37 | -1.40667136728e-05 7.33363699547e-06 -3.75638767050e-06 1.86344211280e-06 ... 38 | -8.71623576811e-07 3.61028200288e-07 -1.05847108097e-07 -1.51569361490e-08 ... 39 | 6.67633241420e-08 -8.33741579804e-08 8.31065906136e-08 -7.53457009758e-08 ... 40 | 6.48057680299e-08 -5.37558016587e-08 4.32436265303e-08 -3.37262648712e-08 ... 41 | 2.53558687098e-08 -1.81287021528e-08 1.20228328586e-08 -7.10898040664e-09 ... 42 | 3.53667004588e-09 -1.36030600198e-09 3.52544249042e-10 -4.53719284366e-11 ... 43 | ]; 44 | 45 | a = -7.91001919; 46 | s = 8.7967143957e-2; 47 | f = 0.0; 48 | for i = 1:1:140 49 | lambda = 10^(a + (i - 1)*s)/r; 50 | f = f + func(lambda)*W(i); 51 | end 52 | res = f/r; 53 | 54 | end 55 | -------------------------------------------------------------------------------- /CSAMT/main.m: -------------------------------------------------------------------------------- 1 | global rho d; 2 | 3 | %% half space: 4 | % rho = 500; 5 | % d = inf; 6 | 7 | %% two layers: 8 | % type = 'D'; 9 | % rho = [300, 20]; 10 | % d = [1100, inf]; 11 | 12 | % type = 'G'; 13 | % rho = [300, 1000]; 14 | % d = [1100, inf]; 15 | 16 | %% three layers: 17 | type = 'H'; 18 | rho = [300, 20, 700]; 19 | d = [1200, 300, inf]; 20 | 21 | % type = 'K'; 22 | % rho = [100, 3200, 25]; 23 | % d = [1000, 4000, inf]; 24 | 25 | % type = 'KH'; 26 | % rho = [300, 1000, 10, 500]; 27 | % d = [800, 400, 300, inf]; 28 | 29 | nlayer = length(rho); 30 | 31 | if(nlayer == 1) 32 | rdf = 1000; 33 | figure; 34 | [x, rhoa] = rhoa_curve(rdf, 1); 35 | loglog(x, rhoa, 'LineWidth', 2); 36 | hold on; 37 | 38 | [x, rhoa] = rhoa_curve(rdf, 3); 39 | loglog(x, rhoa, 'LineWidth', 2); 40 | 41 | grid on; 42 | set(gcf, 'position', [0, 0, 750, 500]); 43 | 44 | xlabel('\lambda_1/r', 'FontSize', 12); 45 | ylabel('\rho_\omega/\rho_1', 'FontSize', 12); 46 | title('在均匀大地表面上电偶极源频率测深曲线', 'FontSize', 14); 47 | 48 | legend({'\rho^E/\rho_1', '\rho^M/\rho_1'}, 'FontSize', 10); 49 | hold off; 50 | else 51 | rdf = [2, 3, 6, 12, 20, 30, 42]; 52 | iy = 4; 53 | 54 | nr = length(rdf); 55 | 56 | figure; 57 | [x, rhoa] = rhoa_curve(rdf(1), iy); 58 | loglog(x, rhoa, 'LineWidth', 2); 59 | hold on; 60 | 61 | for i = 2:1:nr 62 | [x, rhoa] = rhoa_curve(rdf(i), iy); 63 | loglog(x, rhoa, 'LineWidth', 2); 64 | end 65 | 66 | grid on; 67 | set(gcf, 'position', [0, 0, 750, 500]); 68 | 69 | xlabel('\lambda_1/d_1', 'FontSize', 12); 70 | if(iy == 1) 71 | ylabel('\rho^E/\rho_1', 'FontSize', 12); 72 | elseif(iy == 3) 73 | ylabel('\rho^M/\rho_1', 'FontSize', 12); 74 | elseif(iy == 4) 75 | ylabel('\rho^a/\rho_1', 'FontSize', 12); 76 | end 77 | title([type, ' 型地层频率测深振幅理论曲线'], 'FontSize', 14); 78 | 79 | for i = 1:1:nr 80 | legs{i} = sprintf('r/d_%d = %d', i, rdf(i)); 81 | end 82 | legend(legs, 'FontSize', 10); 83 | % legend({}, 'location', 'northwest'); 84 | hold off; 85 | end 86 | -------------------------------------------------------------------------------- /CSAMT/rhoa_curve.m: -------------------------------------------------------------------------------- 1 | function [x, y] = rhoa_curve(rdf, iy) 2 | 3 | global rho d k2; 4 | nlayer = length(rho); 5 | 6 | mu0 = 4*pi*1.0e-7; 7 | phi = pi/2; 8 | dL = 500.0; 9 | I = 2; 10 | nf = 200; 11 | if(nlayer < 3) 12 | ifreq = linspace(0, 5, nf); 13 | else 14 | ifreq = linspace(-3, 5, nf); 15 | end 16 | 17 | f = zeros(nf, 1); 18 | omega = zeros(nf, 1); 19 | 20 | if(nlayer == 1) 21 | r = rdf; 22 | f = 10.^ifreq; 23 | omega = 2*pi.*f; 24 | k = sqrt(1i.*omega*mu0/rho); 25 | ikr = 1i.*k*r; 26 | 27 | Er = I*dL/(2*pi*r^3)*rho*cos(phi)*(1 + exp(ikr).*(1 - ikr)); 28 | Ep = I*dL/(2*pi*r^3)*rho*sin(phi)*(2 - exp(ikr).*(1 - ikr)); 29 | Hr = - 3*I*dL/(2*pi*r^2)*cos(phi)*(besseli(1, ikr/2).*besselk(1, ikr/2) ... 30 | + ikr/6.*(besseli(1, ikr/2).*besselk(0, ikr/2) ... 31 | - besseli(0, ikr/2).*besselk(1, ikr/2))); 32 | Hp = I*dL/(2*pi*r^2)*cos(phi)*besseli(1, ikr/2).*besselk(1, ikr/2); 33 | Hz = - 3*I*dL/(2*pi*r^4)./(k.^2)*sin(phi).*(1 - exp(ikr).*(1 - ikr ... 34 | - 1.0/3*(k.^2)*r^2)); 35 | else 36 | r = rdf*d(1); 37 | Intv = zeros(nf, 7); 38 | for i = 1:1:nf 39 | f(i) = 10^ifreq(i); 40 | omega(i) = 2*pi*f(i); 41 | k2 = 1i*omega(i)*mu0./rho; 42 | Intv(i, 1) = hankel_J1_trans(r, @Int1_kernel); 43 | Intv(i, 2) = hankel_J0_trans(r, @Int2_kernel); 44 | Intv(i, 3) = hankel_J1_trans(r, @Int3_kernel); 45 | Intv(i, 4) = hankel_J1_trans(r, @Int4_kernel); 46 | Intv(i, 5) = hankel_J0_trans(r, @Int5_kernel); 47 | Intv(i, 6) = hankel_J1_trans(r, @Int6_kernel); 48 | Intv(i, 7) = hankel_J0_trans(r, @Int7_kernel); 49 | end 50 | 51 | Er = I*dL/(2*pi)/r*cos(phi)*(1i*omega*mu0.*Intv(:, 4) ... 52 | - r*rho(1)*Intv(:, 5) + rho(1)*Intv(:, 6)); 53 | Ep = I*dL/(2*pi)/r*sin(phi)*(1i*omega*mu0.*Intv(:, 4) ... 54 | - 1i*omega*mu0*r.*Intv(:, 7) + rho(1)*Intv(:, 6)); 55 | Hr = - I*dL/(2*pi)/r*sin(phi)*(Intv(:, 1) + r*Intv(:, 2)); 56 | Hp = I*dL/(2*pi)/r*cos(phi)*Intv(:, 1); 57 | Hz = I*dL/(2*pi)*sin(phi)*Intv(:, 3); 58 | end 59 | 60 | Ex = Er*cos(phi) - Ep*sin(phi); 61 | Hy = Hr*sin(phi) + Hp*cos(phi); 62 | 63 | PE = I*dL; 64 | rhoEx = pi*r^3/PE*abs(Ex); 65 | rhoHy = omega*mu0*pi^2*r^6/(PE^2).*(Hy.^2); 66 | rhoHz = omega*mu0*2*pi*r^4/(3*PE).*abs(Hz); 67 | rhoExHy = 1.0./(omega*mu0).*((Ex./Hy).^2); 68 | rhoHzHy = 4.0*r^2*omega*mu0/9.0.*((Hz./Hy).^2); 69 | 70 | lambda1 = 1000*sqrt(10*rho(1)./f); 71 | if(nlayer == 1) 72 | x = lambda1/r; 73 | else 74 | x = lambda1/d(1); 75 | end 76 | 77 | ya = zeros(nf, 5); 78 | ya(:, 1) = abs(rhoEx)/rho(1); 79 | ya(:, 2) = abs(rhoHy)/rho(1); 80 | ya(:, 3) = abs(rhoHz)/rho(1); 81 | ya(:, 4) = abs(rhoExHy)/rho(1); 82 | ya(:, 5) = abs(rhoHzHy)/rho(1); 83 | y = ya(:, iy); 84 | 85 | end 86 | -------------------------------------------------------------------------------- /MT/MT1DFW.m: -------------------------------------------------------------------------------- 1 | function [rhoa, theta] = MT1DFW(rho, h, freq) 2 | % [rhoa, theta] = MT1DFW(rho, h, freq) 3 | % This is the 1-Dimension magnetotelluric forward program for a horizontally layered isotropic model. 4 | % By Tche.L form USTC, 2015.12. 5 | 6 | % rho: a vector [nLayer, 1], the resistivity of every layer. 7 | % h: a vector [nLayer, 1], the last one element is Inf, the thickness of every layer. 8 | % freq: a vector [nFreq, 1], the prospecting frequency series. 9 | 10 | % rhoa: a vector [nFreq, 1], the apparent resistivity for every frequency point. 11 | % theta: a vector [nFreq, 1], the apparent phase for every frequency point. 12 | 13 | mu = 4*pi*1e-7; % the magnetic permeability in vacuum. 14 | 15 | nFreq = length(freq); 16 | 17 | rhoa = zeros(nFreq, 1); 18 | theta = zeros(nFreq, 1); 19 | 20 | for i = 1:nFreq 21 | OmgMu = 2*pi*freq(i)*mu; % a intermediate variable, omega*mu. 22 | k = sqrt(OmgMu./rho.*1i); % the wave number, i.e. the propagation constant of every layer. 23 | RN0 = CalRN0(1, k, OmgMu, h, rho); % a intermediate variable, R_N(0), refer to the formula (3.2) on page 22 of (朱仁学,2003). 24 | rhoa(i) = rho(1)*abs(RN0)^2; % refer to the formula (3.3) on page 22 of (朱仁学,2003). 25 | theta(i) = - 45 + atan(imag(RN0)/real(RN0))/pi*180; % refer to the related formulas on page 40 of (朱仁学,2003). 26 | end 27 | 28 | % lambda1 = sqrt(10*rho(1)./freq)*1000; % the wave length of the 1st layer, refer to the formula (2.23) on page 11 of (朱仁学,2003). 29 | % loglog(lambda1./h(1), rhoa./rho(1)); 30 | 31 | % save('MT1D.mat', 'freq', 'rhoa', 'theta'); 32 | 33 | end 34 | 35 | function RN0 = CalRN0(ith, k, OmgMu, h, rho) 36 | % RN0 = CalRN0(ith, k, OmgMu, h, rho) 37 | % This is a subroutine that calculates the intermediate variable, R_N(0), for the 1-Dimension magnetotelluric forward program MT1DFW. 38 | % Refer to the formula (3.2) on page 22 of (朱仁学,2003). 39 | % By Tche.L. from USTC, 2015.12. 40 | 41 | % ith: it is the ith time to recursively call this function. 42 | % k: a vector [nLayer, 1], the wave number. 43 | % OmgMu: a constant variable, omega*mu. 44 | % h: a vector [nLayer, 1], the last one element is Inf, the thickness of every layer. 45 | % rho: a vector [nLayer, 1], the resistivity of every layer. 46 | 47 | nLayer = length(rho); 48 | 49 | if(ith == nLayer) 50 | RN0 = 1; 51 | else 52 | RN0 = CalRN0(ith + 1, k, OmgMu, h, rho); 53 | x = k(ith)/k(ith + 1)*RN0; 54 | if(rho(ith) < rho(ith + 1)) 55 | x = acoth(x) - k(ith)*h(ith)*1i; 56 | RN0 = coth(x); 57 | else 58 | x = atanh(x) - k(ith)*h(ith)*1i; 59 | RN0 = tanh(x); 60 | end 61 | end 62 | 63 | end 64 | -------------------------------------------------------------------------------- /MT/figures/A_rhoa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TcheL/MT-CSAMT/753a7b9d742438483c22954694f05681bea2d0f3/MT/figures/A_rhoa.png -------------------------------------------------------------------------------- /MT/figures/H_rhoa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TcheL/MT-CSAMT/753a7b9d742438483c22954694f05681bea2d0f3/MT/figures/H_rhoa.png -------------------------------------------------------------------------------- /MT/figures/K_rhoa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TcheL/MT-CSAMT/753a7b9d742438483c22954694f05681bea2d0f3/MT/figures/K_rhoa.png -------------------------------------------------------------------------------- /MT/figures/Q_rhoa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TcheL/MT-CSAMT/753a7b9d742438483c22954694f05681bea2d0f3/MT/figures/Q_rhoa.png -------------------------------------------------------------------------------- /MT/main.m: -------------------------------------------------------------------------------- 1 | 2 | type = 'A'; 3 | rho = [1, 20, 330]; 4 | h = [1000, 2000, inf]; 5 | h21 = [4, 10, 20, 60, 120, 240, 480]; 6 | 7 | % type = 'H'; 8 | % rho = [1, 1/19, inf]; 9 | % h = [1000, 2000, inf]; 10 | % h21 = [0.2, 0.5, 1, 2, 5, 10, 20]; 11 | 12 | % type = 'K'; 13 | % rho = [1, 19, 0]; 14 | % h = [1000, 2000, inf]; 15 | % h21 = [19/5, 19/2, 19, 38, 76, 152, 304]; 16 | 17 | % type = 'Q'; 18 | % rho = [1, 1/20, 1/400]; 19 | % h = [1000, 2000, inf]; 20 | % h21 = [0, 1, 2, 4, 8, 16, 32]; 21 | 22 | freq = 10.^linspace(-7, 3, 200); 23 | x = 1000*sqrt(10*rho(1)./freq)/h(1); 24 | 25 | ncurve = length(h21); 26 | 27 | figure; 28 | h(2) = h21(1)*h(1); 29 | [rhoa, ~] = MT1DFW(rho, h, freq); 30 | loglog(x, rhoa, 'LineWidth', 2); 31 | hold on; 32 | 33 | for i = 2:1:ncurve 34 | h(2) = h21(i)*h(1); 35 | [rhoa, ~] = MT1DFW(rho, h, freq); 36 | loglog(x, rhoa, 'LineWidth', 2); 37 | end 38 | 39 | grid on; 40 | set(gcf, 'position', [0, 0, 750, 500]); 41 | 42 | xlabel('\lambda_1/h_1', 'FontSize', 12); 43 | ylabel('\rho_a/\rho_1', 'FontSize', 12); 44 | title([type, ' 型介质的视电阻率理论曲线'], 'FontSize', 14); 45 | 46 | for i = 1:1:nr 47 | legs{i} = sprintf('h_2/h_1 = %.2f', h21(i)); 48 | end 49 | legend(legs, 'FontSize', 10); 50 | % legend({}, 'location', 'northwest'); 51 | hold off; 52 | 53 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # MT-CSAMT 2 | 3 | 一维层状模型大地电磁测深 (MT) 和可控源音频大地电磁测深 (CSAMT) 正演计算 4 | 5 | ## 开源协议 6 | 7 | [MIT 协议](http://tchel.mit-license.org/) 8 | 9 | ## 联系作者 10 | 11 | TcheL, seistche@gmail.com, USTC 12 | 13 | ## 正演理论 14 | 15 | ### 大地电磁测深 16 | 17 | 根据(朱仁学,2003),在一维情况下,$ N $ 层模型的地表阻抗可由下式计算: 18 | 19 | $$ Z_N(0) = \frac{\omega \mu_0}{k_1} R_N(0) = Z_{01} R_N(0) $$ 20 | 21 | $$ R_N(0) = \coth \left\lbrace - i k_1 h_1 + \coth^{ - 1} \left[ \frac{k_1}{k_2} \cdot \coth \left( - i k_2 h_2 + \coth^{ - 1} \left[ \frac{k_2}{k_3} \cdot \coth \left( - i k_3 h_3 + \cdots + \coth^{ - 1} \frac{k_{N - 1}}{k_N} \right) \right] \right) \right] \right\rbrace $$ 22 | 23 | 其中 $ \omega $ 为角频率,$ \mu_0 = 4 \pi \times 10^{ - 7} H/m $ 为空气中的磁导率,$ k_j = \sqrt{ i \omega \mu_0 / \rho_j } $ 为第 j 层的传播常数(或称波数),$ \rho_j $ 为第 j 层的电阻率,$ h_j $ 为第 j 层的厚度。上式仅适用于 $ k_{N - 1} / k_N > 1 $ 的情况;当 $ k_{N - 1} / k_N < 1 $ 时,应采用双曲正切形式的计算公式。 24 | 25 | 则视电阻率可表示为: 26 | 27 | $$ \rho_a = \frac{ |Z_{01}|^2 \cdot |R_N(0)|^2 }{\omega \mu_0} = \rho_1 \cdot |R_N(0)|^2 ​$$ 28 | 29 | 阻抗相位可表示为: 30 | 31 | $$ \theta = \tan^{ - 1} \frac{ \Im [ Z_N(0) ] }{ \Re [ Z_N(0) ] } $$ 32 | 33 | 波长定义为: 34 | 35 | $$ \lambda_j = \frac{2\pi}{\sqrt{\omega \mu / (2 \rho_j)}} = 10^3 \cdot \sqrt{10 \rho_j / f} $$ 36 | 37 | ### 可控源音频大地电磁测深 38 | 39 | 根据(付海涛 等,2019)及(张健,2011),$ N ​$ 层水平层状介质表面上水平电偶极子产生的电磁场各分量的表达式为: 40 | 41 | $$ E_r = \frac{ I \text{dL} }{2\pi} \cos\phi \left[ \frac{ i \omega \mu }{r} \int_0^\infty \frac{1}{ \lambda + m_1/R^\star } J_1(\lambda r) d\lambda - \rho_1 \int_0^\infty \frac{\lambda m_1}{R} J_0(\lambda r) d\lambda + \frac{\rho_1}{r} \int_0^\infty \frac{m_1}{R} J_1(\lambda r) d\lambda \right] ​$$ 42 | 43 | $$ E_\phi = \frac{ I \text{dL} }{2\pi} \sin\phi \left[ \frac{\rho_1}{r} \int_0^\infty \frac{m_1}{R} J_1(\lambda r) d\lambda - i \omega \mu \int_0^\infty \frac{\lambda}{\lambda + m_1/R^\star} J_0(\lambda r) d\lambda + \frac{ i \omega \mu }{r} \int_0^\infty \frac{1}{\lambda + m_1/R^\star} J_1(\lambda r) d\lambda \right] ​$$ 44 | 45 | $$ H_r = - \frac{ I \text{dL} }{ 2 \pi r } \sin\phi \left[ \int_0^\infty \frac{\lambda}{\lambda + m_1/R^\star} J_1(\lambda r) d\lambda + r \int_0^\infty \frac{m_1}{R^\star} \frac{\lambda}{\lambda + m_1/R^\star} J_0(\lambda r) d\lambda \right] $$ 46 | 47 | $$ H_\phi = \frac{ I \text{dL} }{ 2 \pi r } \cos\phi \int_0^\infty \frac{\lambda}{\lambda + m_1/R^\star} J_1(\lambda r) d\lambda ​$$ 48 | 49 | $$ H_z = \frac{ I \text{dL} }{2\pi} \sin\phi \int_0^\infty \frac{\lambda^2}{\lambda + m_1/R^\star} J_1(\lambda r) d\lambda $$ 50 | 51 | $$ R^\star = \coth \left \lbrace m_1 d_1 + \coth^{ - 1} \left[ \frac{m_1}{m_2} \cdot \coth \left( m_2 d_2 + \coth^{ - 1} \left[ \frac{m_2}{m_3} \cdot \coth \left( m_3 d_3 + \cdots + \coth^{ - 1} \frac{m_{N - 1}}{m_N} \right) \right] \right) \right] \right \rbrace $$ 52 | 53 | $$ R = \coth \left \lbrace m_1 d_1 + \coth^{ - 1} \left[ \frac{m_1 \rho_1}{m_2 \rho_2} \cdot \coth \left( m_2 d_2 + \coth^{ - 1} \left[ \frac{m_2 \rho_2}{m_3 \rho_3} \cdot \coth \left( m_3 d_3 + \cdots + \coth^{ - 1} \frac{m_{N - 1} \rho_{N - 1}}{m_N \rho_N} \right) \right] \right) \right] \right \rbrace $$ 54 | 55 | 其中,$ m_j = \sqrt{\lambda^2 - k_j^2} $,$ k_j^2 = i \omega \mu_0 / \rho_j $。$ E_x $ 表示与源布置方向平行的电场水平分量,$ H_y $ 表示与源布置方向垂直的磁场水平分量;$ I $ 为供电电流,$ \text{dL} $ 为电偶极源的长度;$ \lambda $ 为空间频率;$ k_j $ 为第 j 个电性层的波数,$ \rho_j $ 为第 j 层的电阻率,$ \mu_0 = 4 \pi \times 10^{ - 7} H/m $ 为空气中的磁导率;$ \omega $ 为角频率;$ \theta $ 为偶极源方向盘和源中点到接收点矢径方向之间的夹角;$ r $ 为收发距,即观测点到偶极子中心的距离;$ d_j $ 为第 j 层的厚度。 56 | 57 | 上式中关于 Bessel 函数的积分均可由 (Guptasarma and Singh, 1997) 给出的方法进行数值计算得到。 58 | 59 | 特别地,当 $ N = 1 ​$ 时,可得到均匀半空间表面电磁场各分量的表达式为: 60 | 61 | $$ E_{r 0} = \frac{ I \text{dL} }{ 2 \pi \sigma r^3 } \cos\phi \left[ 1 + e^{i k r} (1 - i k r) \right] $$ 62 | 63 | $$ E_{\phi 0} = \frac{ I \text{dL} }{ 2 \pi \sigma r^3 } \sin\phi \left[ 2 - e^{i k r} ( 1 - i k r) \right] ​$$ 64 | 65 | $$ H_{r 0} = - \frac{ 3 I \text{dL} }{ 2 \pi r^2 } \sin\phi \left\lbrace I_1 \left( \frac{ i k r }{2} \right) K_1 \left( \frac{ i k r }{2} \right) + \frac{ i k r }{6} \left[ I_1 \left( \frac{ i k r }{2} \right) K_0 \left( \frac{ i k r }{2} \right) - I_0 \left( \frac{ i k r }{2} \right) K_1 \left( \frac{ i k r }{2} \right) \right] \right\rbrace $$ 66 | 67 | $$ H_{\phi 0} = \frac{ I \text{dL} }{ 2 \pi r^2 } \cos\phi I_1 \left( \frac{ i k r }{2} \right) K_1 \left( \frac{ i k r }{2} \right) $$ 68 | 69 | $$ H_{z 0} = - \frac{ 3 I \text{dL} }{ 2 \pi k^2 r^4 } \sin\phi \left[ 1 - e^{ i k r } \left( 1 - i k r - \frac{1}{3} k^2 r^2 \right) \right] $$ 70 | 71 | 其中 $ I_j(\cdot) $ 和 $ K_j(\cdot) $ 分别为 j 阶第一和第二类虚宗量 Bessel 函数(即修正/变型 Bessel 函数)。 72 | 73 | 由柱坐标和直角坐标系之间的转换关系得: 74 | 75 | $$ E_x = E_r \cos \phi - E_\phi \sin \phi ​$$ 76 | 77 | $$ H_x = H_r \sin \phi + H_\phi \cos \phi $$ 78 | 79 | 采用不同的方法来定义均匀大地的电阻率或非均匀大地的视电阻率: 80 | 81 | $$ \rho_\omega^{E_x} = \frac{\pi r^3}{P_E} | E_x | $$ 82 | 83 | $$ \rho_\omega^{H_y} = \frac{\omega \mu \pi^2 r^6}{P_E^2} | H_y |^2 $$ 84 | 85 | $$ \rho_\omega^{H_z} = \frac{\omega \mu \cdot 2 \pi r^4}{3 P_E} | H_z | $$ 86 | 87 | $$ \rho_\omega^{E_x / H_y} = \frac{1}{\omega \mu} \left| \frac{E_x}{H_y} \right|^2 $$ 88 | 89 | $$ \rho_\omega^{H_z / H_y} = \frac{4 r^2 \omega \mu}{9} \left| \frac{H_z}{H_y} \right|^2 $$ 90 | 91 | 其中 $ P_E = I \text{dL} ​$ 为电偶极距。 92 | 93 | ## 模拟结果 94 | 95 | ### 大地电磁测深 96 | 97 | - A 型地层: 98 | 99 | ![A_rhoa](MT/figures/A_rhoa.png) 100 | 101 | - H 型地层: 102 | 103 | ![H_rhoa](MT/figures/H_rhoa.png) 104 | 105 | - K 型地层: 106 | 107 | ![K_rhoa](MT/figures/K_rhoa.png) 108 | 109 | - Q 型地层: 110 | 111 | ![Q_rhoa](MT/figures/Q_rhoa.png) 112 | 113 | ### 可控源音频大地电磁测深 114 | 115 | - 均匀半空间: 116 | 117 | ![halfspace](CSAMT/figures/halfspace.png) 118 | 119 | - D 型地层: 120 | 121 | ![D_rhoE](CSAMT/figures/D_rhoE.png) 122 | ![D_rhoM](CSAMT/figures/D_rhoM.png) 123 | ![D_rhoa](CSAMT/figures/D_rhoa.png) 124 | 125 | - G 型地层: 126 | 127 | ![D_rhoE](CSAMT/figures/D_rhoE.png) 128 | ![D_rhoM](CSAMT/figures/D_rhoM.png) 129 | ![D_rhoa](CSAMT/figures/D_rhoa.png) 130 | 131 | - H 型地层: 132 | 133 | ![H_rhoE](CSAMT/figures/H_rhoE.png) 134 | ![H_rhoM](CSAMT/figures/H_rhoM.png) 135 | ![H_rhoa](CSAMT/figures/H_rhoa.png) 136 | 137 | - K 型地层: 138 | 139 | ![K_rhoE](CSAMT/figures/K_rhoE.png) 140 | ![K_rhoM](CSAMT/figures/K_rhoM.png) 141 | ![K_rhoa](CSAMT/figures/K_rhoa.png) 142 | 143 | - KH 型地层: 144 | 145 | ![KH_rhoE](CSAMT/figures/KH_rhoE.png) 146 | ![KH_rhoM](CSAMT/figures/KH_rhoM.png) 147 | ![KH_rhoa](CSAMT/figures/KH_rhoa.png) 148 | 149 | ## 参考文献 150 | 151 | - 朱仁学,2003. **大地电磁测深法**[M]. 152 | - 付海涛,罗维斌,丁志军,余其林,张世宽,2019. **水平电偶极源层状模型垂直磁场全区视电阻率计算方法**[J]. 物探与化探, 43(6), 1309-1319. http://doi.org/10.11720/wtyht.2019.0325 153 | - 张健,2011. **可控源音频大地电磁法一维正反演研究**[D]. 四川成都:成都理工大学. 154 | - Guptasarma and Singh, 1997. **New digital linear filters for Hankel J_0 and J_1 transforms**[J]. Geophysical Prospecting, 45, 745-762. 155 | 156 | --------------------------------------------------------------------------------