Changeset 675 for trunk/src/calc_field_tps.m
- Timestamp:
- Aug 27, 2013, 11:25:21 PM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/calc_field_tps.m
r651 r675 6 6 % OUTPUT: 7 7 % DataOut: structure representing the output fields 8 % VarAttribute: cell array of structures coontaining the variable attributes 9 % errormsg: error msg , = '' by default 8 10 % 9 11 % INPUT: … … 14 16 % NbCentre: nbre of tps centres for each subdomain, of dimension nb_subdomain 15 17 % SubRange: coordinate range for each subdomain, of dimensions [nb_coord,2,nb_subdomain] 16 % FieldVar: cell array of list of variables needed to calculate the requested fields 18 % FieldVar: array representing the input fields as tps weights with dimension (nbvec_sub+3,NbSubDomain,nb_dim) 19 % nbvec_sub= max nbre of vectors in a subdomain 20 % NbSubDomain =nbre of subdomains 21 % nb_dim: nbre of dimensions for vector components (x-> 1, y->2) 17 22 % FieldName: cell array representing the list of operations (eg div(U,V), rot(U,V)) 18 23 % Coord_interp: coordinates of sites on which the fields need to be calculated of dimensions … … 49 54 check_grid=0; 50 55 check_der=0; 56 check_vec=0; 57 check_remove=false(size(FieldName)); 58 VarAttribute={}; 51 59 for ilist=1:length(FieldName) 52 FieldNameType=regexprep(FieldName{ilist},'(.+',''); 60 FieldNameType=regexprep(FieldName{ilist},'(.+','');% detect the char string before the parenthesis 61 VarAttributeNew={}; 53 62 switch FieldNameType 54 63 case 'vec' … … 56 65 DataOut.U=zeros(nb_sites,1); 57 66 DataOut.V=zeros(nb_sites,1); 58 VarAttribute{1}.Role='vector_x'; 59 VarAttribute{2}.Role='vector_y'; 60 case {'U','V','norm'} 67 VarAttributeNew{1}.Role='vector_x'; 68 VarAttributeNew{2}.Role='vector_y'; 69 check_vec=1; 70 case {'U','V'} 71 if check_vec% no new data needed 72 check_remove(ilist)=1; 73 else 61 74 check_grid=1; 62 75 DataOut.(FieldNameType)=zeros(nb_sites,1); 63 VarAttribute{1}.Role='scalar'; 76 VarAttributeNew{1}.Role='scalar'; 77 end 78 case 'norm' 79 check_grid=1; 80 DataOut.(FieldNameType)=zeros(nb_sites,1); 81 VarAttributeNew{1}.Role='scalar'; 64 82 case {'curl','div','strain'} 65 83 check_der=1; 66 84 DataOut.(FieldNameType)=zeros(nb_sites,1); 67 VarAttribute {1}.Role='scalar';85 VarAttributeNew{1}.Role='scalar'; 68 86 end 87 VarAttribute=[VarAttribute VarAttributeNew]; 69 88 end 70 89 Attr_FF.Role='errorflag'; 71 90 VarAttribute=[VarAttribute {Attr_FF}]; 91 FieldName(check_remove)=[]; 72 92 73 93 %% loop on subdomains … … 83 103 [EMDX,EMDY] = tps_eval_dxy(Coord_interp(ind_sel,:),Coord_tps(1:nbvec_sub,:,isub));%kernels for calculating the spatial derivatives from tps 'sources' 84 104 end 85 ListVar={};105 % ListVar={}; 86 106 for ilist=1:length(FieldName) 87 var_count=numel(ListVar);107 % var_count=numel(ListVar); 88 108 switch FieldName{ilist} 89 109 case 'vec(U,V)' 90 ListVar=[ListVar {'U', 'V'}];91 VarAttribute{var_count+1}.Role='vector_x';92 VarAttribute{var_count+2}.Role='vector_y';110 % ListVar=[ListVar {'U', 'V'}]; 111 % VarAttribute{var_count+1}.Role='vector_x'; 112 % VarAttribute{var_count+2}.Role='vector_y'; 93 113 DataOut.U(ind_sel)=DataOut.U(ind_sel)+EM *FieldVar(1:nbvec_sub+3,isub,1); 94 114 DataOut.V(ind_sel)=DataOut.V(ind_sel)+EM *FieldVar(1:nbvec_sub+3,isub,2); 95 115 case 'U' 96 ListVar=[ListVar {'U'}];97 VarAttribute{var_count+1}.Role='scalar';116 % ListVar=[ListVar {'U'}]; 117 % VarAttribute{var_count+1}.Role='scalar'; 98 118 DataOut.U(ind_sel)=DataOut.U(ind_sel)+EM *FieldVar(1:nbvec_sub+3,isub,1); 99 119 case 'V' 100 ListVar=[ListVar {'V'}];101 VarAttribute{var_count+1}.Role='scalar';120 % ListVar=[ListVar {'V'}]; 121 % VarAttribute{var_count+1}.Role='scalar'; 102 122 DataOut.V(ind_sel)=DataOut.V(ind_sel)+EM *FieldVar(1:nbvec_sub+3,isub,2); 103 123 case 'norm(U,V)' 104 ListVar=[ListVar {'norm'}];105 VarAttribute{var_count+1}.Role='scalar';124 % ListVar=[ListVar {'norm'}]; 125 % VarAttribute{var_count+1}.Role='scalar'; 106 126 U=DataOut.U(ind_sel)+EM *FieldVar(1:nbvec_sub+3,isub,1); 107 127 V=DataOut.V(ind_sel)+EM *FieldVar(1:nbvec_sub+3,isub,2); 108 128 DataOut.norm(ind_sel)=sqrt(U.*U+V.*V); 109 129 case 'curl(U,V)' 110 ListVar=[ListVar {'curl'}];111 VarAttribute{var_count+1}.Role='scalar';130 % ListVar=[ListVar {'curl'}]; 131 % VarAttribute{var_count+1}.Role='scalar'; 112 132 DataOut.curl(ind_sel)=DataOut.curl(ind_sel)-EMDY *FieldVar(1:nbvec_sub+3,isub,1)+EMDX *FieldVar(1:nbvec_sub+3,isub,2); 113 133 case 'div(U,V)' 114 ListVar=[ListVar {'div'}];115 VarAttribute{var_count+1}.Role='scalar';134 % ListVar=[ListVar {'div'}]; 135 % VarAttribute{var_count+1}.Role='scalar'; 116 136 DataOut.div(ind_sel)=DataOut.div(ind_sel)+EMDX*FieldVar(1:nbvec_sub+3,isub,1)+EMDY *FieldVar(1:nbvec_sub+3,isub,2); 117 137 case 'strain(U,V)' 118 ListVar=[ListVar {'strain'}];119 VarAttribute{var_count+1}.Role='scalar';138 % ListVar=[ListVar {'strain'}]; 139 % VarAttribute{var_count+1}.Role='scalar'; 120 140 DataOut.strain(ind_sel)=DataOut.strain(ind_sel)+EMDY*FieldVar(1:nbvec_sub+3,isub,1)+EMDX *FieldVar(1:nbvec_sub+3,isub,2); 121 141 end
Note: See TracChangeset
for help on using the changeset viewer.