function [FORCE, STIFF] = cntelm2d(OMEGAN, ELXY) %*********************************************************************** % SEARCH CONTACT POINT AND RETURN STIFFNESS AND RESIDUAL FORCE % IF CONTACTED FOR NORMAL CONTACT %*********************************************************************** % ZERO = 0.D0; ONE = 1.D0; EPS = 1.E-6; P05 = 0.05; FORCE=[]; STIFF=[]; XT = ELXY(:,3)-ELXY(:,2); %切向量 XLEN = norm(XT);%x1 x2的距离 if XLEN < EPS, return; end % % UNIT NORMAL AND TANGENTIAL VECTOR XT = XT/XLEN; XN = [-XT(2); XT(1)]; % % NORMAL GAP FUNCTION Gn = (X_s - X_1).N GAPN = (ELXY(:,1)-ELXY(:,2))'*XN;%公式3 % % CHECK IMPENETRATION CONDITION if (GAPN >= ZERO) || (GAPN <= -XLEN), return; end % % NATURAL COORDINATE AT CONTACT POINT ALPHA = (ELXY(:,1) - ELXY(:,2))'*XT/XLEN;%公式11 % % OUT OF SEGMENT if (ALPHA > ONE+P05) || (ALPHA < -P05), return; end % % CONTACT OCCURS IN THIS SEGMENT XLAMBN = -OMEGAN*GAPN; % % DEFINE VECTORS NN = [XN; -(ONE-ALPHA)*XN; -ALPHA*XN];%2*3 公式16 % TT = [XT; -(ONE-ALPHA)*XT; -ALPHA*XT]; % PP = [ZERO; ZERO; -XN; XN]; % QQ = [ZERO; ZERO; -XT; XT]; CN = NN;%去掉-之后的差别不大 % CN = NN - GAPN*QQ/XLEN; % CT = TT + GAPN*PP/XLEN; % % CONTACT FORCE FORCE = XLAMBN*CN; % FORM STIFFNESS STIFF = OMEGAN*(CN*CN'); end