function dotq = three_element_square_object_push_param( t, q, npoint, M, ...
    Jlambda, Jmu, lambda, mu, lambdav1, muv1, lambdav2, muv2, ...
    npush, A_push, push, dotpush, nfixed, A_fixed, alpha )
% 運動方程式（弾塑性正方形の上部を押しているとき）
% 押している節点と床に固定されている節点に制約が生じる
    u = q(1:npoint*2);
    v = q(npoint*2+1:npoint*4);
    flambda = q(npoint*4+1:npoint*6);
    fmu     = q(npoint*6+1:npoint*8);

    dotu = v;
    
    coef = [ M, -A_fixed, -A_push; ...
            -A_fixed', zeros(nfixed*2,nfixed*2), zeros(nfixed*2,npush*2); ...
            -A_push',  zeros(npush*2,nfixed*2),  zeros(npush*2,npush*2) ];
    vecb = push(t);
    vecdotb = dotpush(t);
    vec = [ -flambda-fmu; ...
             A_fixed'*(2*alpha*v + alpha^2*u); ...
             2*alpha*(A_push'*v-vecdotb) + alpha^2*(A_push'*u-vecb) ];
    sol = coef\vec;
    dotv = sol(1:npoint*2);
    
    dotflambda = (-lambda/(lambdav1+lambdav2))*flambda ...
        + (lambda*lambdav2/(lambdav1+lambdav2))*Jlambda*v ...
        + (lambdav1*lambdav2/(lambdav1+lambdav2))*Jlambda*dotv;
    
    dotfmu = (-mu/(muv1+muv2))*fmu ...
        + (mu*muv2/(muv1+muv2))*Jmu*v ...
        + (muv1*muv2/(muv1+muv2))*Jmu*dotv;
    
    dotq = [dotu; dotv; dotflambda; dotfmu];
end
