0001 function [XXf0_interp,normfinterp] = interp_legendre_yp(dkeparam,gridDKE,XXf0,test)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019 if nargin < 4,
0020 test = 0;
0021 end
0022
0023 normfinterp = [];
0024
0025 n_pol = dkeparam.n_gauleg;
0026 [x_leg,w_leg] = gauleg_dke_yp(dkeparam.n_gauleg,dkeparam.epsi_gauleg);
0027 [Pm,cL] = leg_dke_yp(x_leg(:)',n_pol);
0028
0029 if iscell(XXf0),
0030 for it = 1:length(XXf0),
0031 XXf0_interp{it} = finterp_legendre_yp(Pm,x_leg,w_leg,cL,dkeparam.method,gridDKE.mhu,XXf0{it});
0032 end
0033 else
0034 XXf0_interp = finterp_legendre_yp(Pm,x_leg,w_leg,cL,dkeparam.method,gridDKE.mhu,XXf0);
0035 end
0036
0037
0038
0039 if test,
0040 if iscell(XXf0_interp)
0041 for it = 1:length(XXf0_interp),
0042 normfinterp(it) = test_finterp_legendre_yp(Pm,x_leg,cL,dkeparam.method,gridDKE.pn2,gridDKE.dpn,gridDKE.mhu,XXf0{it},XXf0_interp{it});
0043 end
0044 else
0045 normfinterp = test_finterp_legendre_yp(Pm,x_leg,cL,dkeparam.method,gridDKE.pn2,gridDKE.dpn,gridDKE.mhu,XXf0,XXf0_interp);
0046 end
0047 end
0048
0049 end
0050
0051 function XXf0_leg = finterp_legendre_yp(Pm,x_leg,w_leg,cL,method,mhu,XXf0)
0052
0053 XXf0_leg = zeros(size(XXf0,1),length(cL),size(XXf0,3));
0054
0055 for ir = 1:size(XXf0,3),
0056 XXf0_leg(:,:,ir) = (interp1(mhu(:),XXf0(:,:,ir)',x_leg(:),method)'.*(w_leg*ones(1,size(XXf0,1)))')*Pm';
0057 end
0058
0059 end
0060
0061 function normfinterp = test_finterp_legendre_yp(Pm,x_leg,cL,method,pn2,dpn,mhu,XXf0,XXf0_leg)
0062
0063 for ir = 1:size(XXf0_leg,3),
0064 Xf0_i1 = (Pm.'*(XXf0_leg(:,:,ir).*(ones(size(XXf0_leg(:,:,ir),1),1)*cL.')).').';
0065 Xf0_i2 = interp1(x_leg(:),Xf0_i1.',mhu(:),method).';
0066 normfinterp.norm0(ir) = 2*pi*integral_dke_jd(dpn.',pn2.'.*trapz_dke_yp([mhu(:),XXf0(:,:,ir).']).',1);
0067 normfinterp.normi1(ir) = 2*pi*integral_dke_jd(dpn.',pn2.'.*trapz_dke_yp([x_leg(:),Xf0_i1.']).',1);
0068 normfinterp.normi2(ir) = 2*pi*integral_dke_jd(dpn.',pn2.'.*trapz_dke_yp([mhu(:),Xf0_i2.']).',1);
0069 end
0070
0071 end
0072