void
StructuralInterfaceMaterial :: give2dStiffnessMatrix_Eng(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
{
    FloatMatrix answer3D;
    give3dStiffnessMatrix_Eng(answer3D, mode, gp, tStep);
    IntArray mask = {1, 3};
    answer.beSubMatrixOf(answer3D, mask, mask);

#if 0
    //debug
    printf("analytical tangent \n");
    answer3D.printYourself();

    FloatMatrix answerNum;
    StructuralInterfaceMaterial :: giveStiffnessMatrix_dTdj_Num(answerNum, mode, gp, tStep);
    printf("numerical tangent \n");
    answerNum.printYourself();

    FloatMatrix comp;
    comp = answer3D;
    comp.subtract(answerNum);
    printf("difference in numerical tangent to mat method \n");
    comp.printYourself();
#endif
}
void
StructuralInterfaceMaterial :: give1dStiffnessMatrix_Eng(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
{
    FloatMatrix answer3D;
    give3dStiffnessMatrix_Eng(answer3D, mode, gp, tStep);
    answer.resize(1, 1);
    answer.at(1, 1) = answer3D.at(3, 3);

}