Changeset 1137 for trunk/src/calc_field_tps.m
- Timestamp:
- Apr 24, 2024, 7:45:09 PM (2 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/calc_field_tps.m
r1127 r1137 108 108 109 109 %% loop on subdomains 110 NbSubDomain 110 111 for isub=1:NbSubDomain 111 112 nbvec_sub=NbCentre(isub); 112 113 check_range=(Coord_interp >=ones(nb_sites,1)*SubRange(:,1,isub)' & Coord_interp<=ones(nb_sites,1)*SubRange(:,2,isub)'); 113 ind_sel=find(sum(check_range,2)==nb_coord);% select points whose all coordinates are in the prescribed range 114 nbval(ind_sel)=nbval(ind_sel)+1;% records the number of values for eacn interpolation point (in case of subdomain overlap) 114 ind_sel=find(sum(check_range,2)==nb_coord);% select points whose all coordinates are in the prescribed range 115 x_width=(SubRange(1,2,isub)-SubRange(1,1,isub))/pi;%width of the subdomain/pi 116 y_width=(SubRange(2,2,isub)-SubRange(2,1,isub))/pi;%width of the subdomain/pi 117 CentreX=(SubRange(1,2,isub)+SubRange(1,1,isub))/2;%centre of the subdomain 118 CentreY=(SubRange(2,2,isub)+SubRange(2,1,isub))/2; 119 x_dist=(Coord_interp(ind_sel,1)-CentreX)/x_width;% relative x distance to the retangle centre*pi/2 120 y_dist=(Coord_interp(ind_sel,2)-CentreY)/y_width;% relative ydistance to the retangle centre 121 weight=cos(x_dist).*cos(y_dist);%weighting fct =1 at the rectangle center and 0 at edge 122 nbval(ind_sel)=nbval(ind_sel)+weight;% records the number of values for eacn interpolation point (in case of subdomain overlap) 115 123 if check_grid 116 124 EM = tps_eval(Coord_interp(ind_sel,:),Coord_tps(1:nbvec_sub,:,isub));%kernels for calculating the velocity from tps 'sources' … … 122 130 switch FieldName{ilist} 123 131 case 'vec(U,V)' 124 DataOut.U(ind_sel)=DataOut.U(ind_sel)+ EM *FieldVar(1:nbvec_sub+3,isub,1);125 DataOut.V(ind_sel)=DataOut.V(ind_sel)+ EM *FieldVar(1:nbvec_sub+3,isub,2);132 DataOut.U(ind_sel)=DataOut.U(ind_sel)+weight.*EM *FieldVar(1:nbvec_sub+3,isub,1); 133 DataOut.V(ind_sel)=DataOut.V(ind_sel)+weight.*EM *FieldVar(1:nbvec_sub+3,isub,2); 126 134 case 'U' 127 DataOut.U(ind_sel)=DataOut.U(ind_sel)+ EM *FieldVar(1:nbvec_sub+3,isub,1);135 DataOut.U(ind_sel)=DataOut.U(ind_sel)+weight.*EM *FieldVar(1:nbvec_sub+3,isub,1); 128 136 case 'V' 129 DataOut.V(ind_sel)=DataOut.V(ind_sel)+ EM *FieldVar(1:nbvec_sub+3,isub,2);137 DataOut.V(ind_sel)=DataOut.V(ind_sel)+weight.*EM *FieldVar(1:nbvec_sub+3,isub,2); 130 138 case 'norm(U,V)' 131 U=DataOut.U(ind_sel)+ EM *FieldVar(1:nbvec_sub+3,isub,1);132 V=DataOut.V(ind_sel)+ EM *FieldVar(1:nbvec_sub+3,isub,2);139 U=DataOut.U(ind_sel)+weight.*EM *FieldVar(1:nbvec_sub+3,isub,1); 140 V=DataOut.V(ind_sel)+weight.*EM *FieldVar(1:nbvec_sub+3,isub,2); 133 141 DataOut.norm(ind_sel)=sqrt(U.*U+V.*V); 134 142 case 'curl(U,V)' 135 DataOut.curl(ind_sel)=DataOut.curl(ind_sel)- EMDY *FieldVar(1:nbvec_sub+3,isub,1)+EMDX *FieldVar(1:nbvec_sub+3,isub,2);143 DataOut.curl(ind_sel)=DataOut.curl(ind_sel)-weight.*EMDY *FieldVar(1:nbvec_sub+3,isub,1)+weight.*EMDX *FieldVar(1:nbvec_sub+3,isub,2); 136 144 case 'div(U,V)' 137 DataOut.div(ind_sel)=DataOut.div(ind_sel)+ EMDX*FieldVar(1:nbvec_sub+3,isub,1)+EMDY *FieldVar(1:nbvec_sub+3,isub,2);145 DataOut.div(ind_sel)=DataOut.div(ind_sel)+weight.*EMDX*FieldVar(1:nbvec_sub+3,isub,1)+EMDY *FieldVar(1:nbvec_sub+3,isub,2); 138 146 case 'strain(U,V)' 139 DataOut.strain(ind_sel)=DataOut.strain(ind_sel)+ EMDY*FieldVar(1:nbvec_sub+3,isub,1)+EMDX *FieldVar(1:nbvec_sub+3,isub,2);147 DataOut.strain(ind_sel)=DataOut.strain(ind_sel)+weight.*EMDY*FieldVar(1:nbvec_sub+3,isub,1)+EMDX *FieldVar(1:nbvec_sub+3,isub,2); 140 148 case 'DUDX(U,V)' 141 DataOut.DUDX(ind_sel)=DataOut.DUDX(ind_sel)+ EMDX *FieldVar(1:nbvec_sub+3,isub,1);149 DataOut.DUDX(ind_sel)=DataOut.DUDX(ind_sel)+weight.*EMDX *FieldVar(1:nbvec_sub+3,isub,1); 142 150 case 'DUDY(U,V)' 143 DataOut.DUDY(ind_sel)=DataOut.DUDY(ind_sel)+ EMDY*FieldVar(1:nbvec_sub+3,isub,1);151 DataOut.DUDY(ind_sel)=DataOut.DUDY(ind_sel)+weight.*EMDY*FieldVar(1:nbvec_sub+3,isub,1); 144 152 case 'DVDX(U,V)' 145 DataOut.DVDX(ind_sel)=DataOut.DVDX(ind_sel)+ EMDX*FieldVar(1:nbvec_sub+3,isub,2);153 DataOut.DVDX(ind_sel)=DataOut.DVDX(ind_sel)+weight.*EMDX*FieldVar(1:nbvec_sub+3,isub,2); 146 154 case 'DVDY(U,V)' 147 DataOut.DVDY(ind_sel)=DataOut.DVDY(ind_sel)+ EMDY *FieldVar(1:nbvec_sub+3,isub,2);155 DataOut.DVDY(ind_sel)=DataOut.DVDY(ind_sel)+weight.*EMDY *FieldVar(1:nbvec_sub+3,isub,2); 148 156 end 149 157 end
Note: See TracChangeset
for help on using the changeset viewer.