rbmatlab 0.10.01
|
00001 function diffusivity = diffusivity_composite(glob, params) 00002 %function diffusivity = diffusivity_composite(glob, params) 00003 % 00004 % function computing the diffusivity pointwise evaluation in the point 00005 % sequences indicated by global coordinates in the columns of the matrix glob. 00006 % It returns a piecewise constant diffusion coefficient. 00007 % 00008 % glob is a npoints times 2 matrix 00009 % 00010 % required fields of params: 00011 % B1, B2: number of composite blocks 00012 % mu1, mu2,.... mu(B1*B2-1) 00013 % 00014 % generated fields of diffusivity: 00015 % diffusivity: vector with diffusivity values 00016 00017 00018 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 00019 %%%Diffu 00020 EPS = 1e-10; 00021 xB=params.B1; 00022 yB=params.B2; 00023 00024 x_range=0:(1/xB):1; 00025 y_range=0:(1/yB):1; 00026 00027 dx=1/params.B1; 00028 dy=1/params.B2; 00029 00030 nob=xB*yB; 00031 00032 % params.mu_names = {'mu1','mu2',..}; 00033 % params.mu1 = 1; 00034 % params.mu2 = 2; 00035 % params.mu3 = 3; 00036 % params.... 00037 00038 % diffu = [1,2,3] 00039 %diffu_value = params.get_mu(params); 00040 diffu_value = [params.get_mu(params), 1]; 00041 %diffu_value=params.diffu; 00042 %DIFF_M=flipud(reshape(diffu_value, xB,yB)); 00043 00044 params.diffu_value=diffu_value; 00045 %das folgende ohne Schleife: 00046 % % diffu_value = get_mu(model); 00047 % % diffu_value = [mu(:);1]; 00048 %dx ist 1/B1 , dy = 1/B2 00049 00050 xblocknum = ceil(glob(:,1) /dx); 00051 yblocknum = ceil(glob(:,2) /dy); 00052 blocknum = xblocknum+ params.B1*(yblocknum-1); 00053 diffusivity = params.diffu_value(blocknum); 00054 00055 diffusivity=diffusivity'; 00056 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%55 00057 %%%%%%%%%%%%%%%%%%%%%%%%%%%% 00058 00059 % i=0; 00060 % for i=1:length(com_t) 00061 % x_check_com_t(i)=com_t{i}(1); 00062 % y_check_com_t(i)=com_t{i}(2); 00063 % 00064 % tmp_x_range_sort=sort([x_range, x_check_com_t(i)]); 00065 % tmp_y_range_sort=sort([y_range, y_check_com_t(i)]); 00066 % 00067 % xBlock(i)=find(tmp_x_range_sort <= (x_check_com_t(i)+EPS) & tmp_x_range_sort >= (x_check_com_t(i)-EPS))-1; 00068 % yBlock(i)=find(tmp_y_range_sort <= (y_check_com_t(i)+EPS) & tmp_y_range_sort >= (y_check_com_t(i)-EPS))-1; 00069 % 00070 % c_test(i)=DIFF_M(xBlock(i),yBlock(i)); 00071 % end 00072 00073 00074 00075 00076 00077 00078 00079 00080 00081 00082 00083 00084 00085 00086 00087 00088 00089 00090 00091 00092 00093 00094