function [malha_kv,base_h,A_h,inib_h,tamb_h] = ...
    acrescenta_elemento_hier2(malha_kv,NP,base_h,A_h,inib_h,tamb_h,...
    elemj,Aj,kv,passov,iv)
%acrescenta o elemento elemj cuja coluna da matriz A eh Aj aa nova base
%como parte do nivel kv. Tambem acrescenta aa malha as celulas relevantes
%para esse elemento. 

fprintf(2,'--- inicio de acrescenta elemento hier2 ------------\n');
[jnovo,base_h,A_h,inib_h,tamb_h] = abre_espaco_hier2(base_h,...
    A_h,inib_h,tamb_h,kv,passov,iv);
base_h.elementos(jnovo) = elemj;
base_h.uniforme = false; %por via das duvidas
A_h(:,jnovo) = Aj;
posj = elemj.pos;
K = posj; 
assert(size(K,1) == 1)
assert(size(K,2) == 2)
[E,Q] = determina_elementos_relevantes(K,malha_kv.NC,malha_kv.LD,...
    elemj.raio_abs,elemj.tipobase,false);

%Q conjunto das celulas que devemos acrescentar na malha 
malha_kv = acrescenta_celulas_na_malha_hier2(malha_kv,Q,NP);
fprintf(2,'--- fim de acrescenta elemento hier2 ------------\n');