opm-core/makeTest.m

61 lines
1.9 KiB
Matlab

function g = makeTest(dims, drop)
physDims = [1, 1, 1];
g.cartDims = reshape(dims, 1, []);
%% Make pillars
[X,Y,Z] = ndgrid(linspace(0, physDims(1), dims(1) + 1), ...
linspace(0, physDims(2), dims(2) + 1), ...
linspace(0, physDims(3), 2));
n = prod(dims(1:2) + 1);
lines = zeros([n, 6]);
lines(:, [1, 4]) = reshape(X(:,:,[1, end]), [n, 2]);
lines(:, [2, 5]) = reshape(Y(:,:,[1, end]), [n, 2]);
lines(:, [3, 6]) = reshape(Z(:,:,[1, end]), [n, 2]);
g.COORD = reshape(lines.', [], 1);
layer_thickness = @(x, y) 0.2+0.4*sin(6*pi*(x+rand)).*sin(2*pi*(y+rand));
bottom_layer = @(x, y) 0.5+0.02*sin(2*pi*x).*sin(2*pi*y);
[X, Y, Z] = ndgrid(linspace(0, physDims(1), dims(1) + 1), ...
linspace(0, physDims(2), dims(2) + 1), ...
zeros(dims(3)+1, 1));
Z(:,:,1) = bottom_layer (X(:,:,1) ./ physDims(1), Y(:,:,1) ./ physDims(2));
for k = 2 : dims(3) + 1,
xi = X(:,:,k) ./ physDims(1);
eta = Y(:,:,k) ./ physDims(2);
Z(:,:,k) = Z(:,:,k-1) + max(0, layer_thickness(xi, eta)*physDims(3)/dims(3));
end
%% Assign z-coordinates
%ind = @(d) [1, rldecode(2:dims(d), repmat(2,[1,dims(d)-1]), 2), dims(d)+1];
ind = @(d) [1, kron((2:dims(d)), [1,1]), dims(d)+1];
z = Z(ind(1), ind(2), ind(3));
%% Add fault
%if nargin > 1, z(end/2+1:end,:,:) = z(end/2+1:end,:,:) + drop; end
if nargin > 1, z(end/2+1:end,[1:2:end,end],:) =bsxfun(@plus, z(end/2+1:end,[1:2:end,end],:) , drop(linspace(0,physDims(2), dims(2)+1)));end
if nargin > 1, z(end/2+1:end,2:2:end-1,:) =z(end/2+1:end,3:2:end,:);end
g.ZCORN = z(:);
%% Assign active cells
actnum = reshape(ones(dims, 'int32'), [], 1);
%[i,j,k] = ndgrid(1:dims(1), 1:dims(2), 1:dims(3));
%actnum((i-dims(1)/2).^2+(j-dims(2)/2).^2> 4*min(dims(1)/2, dims(2)/2).^2)=0;
z = reshape(g.ZCORN, 2*g.cartDims);
%actnum(z(1:2:end, 1:2:end,1:2:end)<0.5)=0;
ix = max(1, round(rand(1,1)*prod(dims)));
actnum(ix)=0;
g.ACTNUM = actnum(:);