diff --git a/NonLinearSolver/internalPoints/CMakeLists.txt b/NonLinearSolver/internalPoints/CMakeLists.txt
index 446b7faa7b792a87ef3ad770e3a5757c53a9fce6..a399f88b53a6b1e332014d4002b1a591ca76dfc1 100644
--- a/NonLinearSolver/internalPoints/CMakeLists.txt
+++ b/NonLinearSolver/internalPoints/CMakeLists.txt
@@ -60,7 +60,6 @@ set(SRC
   ipVoidState.cpp
   ipLinearElecMagInductor.cpp
   ipGenericTM.cpp
-  ipGenericRM.cpp
   ipElecMagGenericThermoMech.cpp
   ipElecMagInductor.cpp
   ipNonLinearTVM.cpp
diff --git a/NonLinearSolver/internalPoints/ipGenericRM.cpp b/NonLinearSolver/internalPoints/ipGenericRM.cpp
deleted file mode 100644
index 947d7d47477f1dd32824e5fcb794e3b1d3ff2158..0000000000000000000000000000000000000000
--- a/NonLinearSolver/internalPoints/ipGenericRM.cpp
+++ /dev/null
@@ -1,91 +0,0 @@
-//
-// Created by mohib on 14.08.24.
-//
-
-#include "ipGenericRM.h"
-#include "ipField.h"
-
-IPGenericRM::IPGenericRM(const STensor3 &_FRes) : IPVariableMechanics()
-{
-    _ipMeca=NULL;
-    FRes=_FRes;
-}
-
-IPGenericRM::IPGenericRM(const IPGenericRM &source) :
-IPVariableMechanics(source), _ipMeca(NULL)
-{
-    if(source._ipMeca!=NULL)
-    {
-        if(_ipMeca!=NULL)
-        {
-            delete _ipMeca;
-            _ipMeca=NULL;
-        }
-        _ipMeca = dynamic_cast<IPVariableMechanics *>(source.getConstRefToIpMeca().clone());
-    }
-    FRes=source.FRes;
-}
-
-IPGenericRM& IPGenericRM::operator=(const IPVariable &source)
-{
-    IPVariableMechanics::operator=(source);
-    const IPGenericRM* src = dynamic_cast<const IPGenericRM*>(&source);
-    if(src)
-    {
-        if(src->_ipMeca!=NULL)
-        {
-            if(_ipMeca!=NULL)
-            {
-                _ipMeca->operator=(dynamic_cast<const IPVariable &> (*(src->_ipMeca)));
-            }
-            else
-                _ipMeca = dynamic_cast<IPVariableMechanics *>((src->getConstRefToIpMeca()).clone());
-        }
-        FRes=src->FRes;
-    }
-    return *this;
-}
-
-void IPGenericRM::restart()
-{
-    _ipMeca->restart();
-    restartManager::restart(FRes);
-    IPVariableMechanics::restart();
-}
-
-double IPGenericRM::get(const int comp) const
-{
-   if(comp==IPField::FfAM_XX)
-     return FRes(0,0);
-   else    if(comp==IPField::FfAM_YY)
-     return FRes(1,1);
-   else    if(comp==IPField::FfAM_ZZ)
-     return FRes(2,2);
-   else    if(comp==IPField::FfAM_XY)
-     return FRes(0,1);
-   else    if(comp==IPField::FfAM_ZX)
-     return FRes(0,2);
-   else    if(comp==IPField::FfAM_YZ)
-     return FRes(1,2);
-   else 
-       return _ipMeca->get(comp);
-
-}
-
-double & IPGenericRM::getRef(const int comp)
-{
-  if(comp==IPField::FfAM_XX)
-     return FRes(0,0);
-   else    if(comp==IPField::FfAM_YY)
-     return FRes(1,1);
-   else    if(comp==IPField::FfAM_ZZ)
-     return FRes(2,2);
-   else    if(comp==IPField::FfAM_XY)
-     return FRes(0,1);
-   else    if(comp==IPField::FfAM_ZX)
-     return FRes(0,2);
-   else    if(comp==IPField::FfAM_YZ)
-     return FRes(1,2);
-   else 
-       return _ipMeca->getRef(comp);
-}
diff --git a/NonLinearSolver/internalPoints/ipGenericRM.h b/NonLinearSolver/internalPoints/ipGenericRM.h
deleted file mode 100644
index 69411a4290358816f4c10ed0b76e24108153ceba..0000000000000000000000000000000000000000
--- a/NonLinearSolver/internalPoints/ipGenericRM.h
+++ /dev/null
@@ -1,65 +0,0 @@
-//
-// Created by mohib on 14.08.24.
-//
-
-#ifndef IPGENERICRM_H_
-#define IPGENERICRM_H_
-
-#include "ipvariable.h"
-#include "STensor3.h"
-#include "STensorOperations.h"
-
-class IPGenericRM : public IPVariableMechanics
-{
-protected:
-    IPVariableMechanics * _ipMeca;
-    STensor3 FRes;
-public:
-    IPGenericRM(const STensor3 &_FRes);
-
-public:
-    ~IPGenericRM()
-    {
-        if(_ipMeca!=NULL)
-        {
-            delete _ipMeca;
-            _ipMeca=NULL;
-        }
-    }
-
-    IPGenericRM(const IPGenericRM &source);
-    virtual IPGenericRM& operator=(const IPVariable &source);
-    virtual double defoEnergy() const{return _ipMeca->defoEnergy();};
-    virtual double plasticEnergy() const{return _ipMeca->plasticEnergy();}
-    virtual double damageEnergy() const{return  _ipMeca->damageEnergy();}
-    virtual double irreversibleEnergy() const{return  _ipMeca->irreversibleEnergy();}
-
-    virtual void restart();
-    virtual void setValueForBodyForce(const STensor43& K, const int ModuliType){ _ipMeca->setValueForBodyForce(K,ModuliType); }
-    virtual const STensor43 &getConstRefToTangentModuli() const{return _ipMeca->getConstRefToTangentModuli();};
-    virtual void computeBodyForce(const STensor33& G, SVector3& B) const { _ipMeca->computeBodyForce(G,B); }
-
-    virtual IPVariable* clone() const {return new IPGenericRM(*this);};
-
-    const IPVariableMechanics& getConstRefToIpMeca() const {return *_ipMeca;}
-    IPVariableMechanics& getRefToIpMeca() {return *_ipMeca;}
-    void setIpMeca(IPVariable& ipMeca)
-    {
-        if(_ipMeca!=NULL)
-        {
-            delete _ipMeca;
-            _ipMeca=NULL;
-        }
-        _ipMeca= (dynamic_cast<IPVariableMechanics *>(ipMeca.clone()));
-    }
-    const STensor3 & getConstRefToFRes() const { return FRes;}
-    STensor3 & getRefToFRes(){ return FRes;}
-
-    virtual double get(const int comp) const;
-    virtual double & getRef(const int comp);
-  private:
-      IPGenericRM(){};
-
-};
-
-#endif //IPGENERICTM_H_
diff --git a/NonLinearSolver/materialLaw/CMakeLists.txt b/NonLinearSolver/materialLaw/CMakeLists.txt
index 77dac38ffd8a018d8ebca0c5abc27afff6325ec3..bed4818d58f43a62c966e84079fdc99d77bc8d92 100644
--- a/NonLinearSolver/materialLaw/CMakeLists.txt
+++ b/NonLinearSolver/materialLaw/CMakeLists.txt
@@ -101,7 +101,6 @@ set(SRC
   mlawNonLocalPorousWithFailure.cpp
   mlawLinearElecMagInductor.cpp
   mlawGenericTM.cpp
-  mlawGenericRM.cpp
   mlawElecMagGenericThermoMech.cpp
   mlawElecMagInductor.cpp
   mlawNonLinearTVM.cpp
diff --git a/NonLinearSolver/materialLaw/mlaw.h b/NonLinearSolver/materialLaw/mlaw.h
index 218d8146015db8556ff42162a89a4e3d230dc177..4f2ed086c46255a0c2e818fbdd6f2e7383561547 100644
--- a/NonLinearSolver/materialLaw/mlaw.h
+++ b/NonLinearSolver/materialLaw/mlaw.h
@@ -36,7 +36,7 @@ class materialLaw{
                  localDamageJ2SmallStrain,nonLocalDamageJ2SmallStrain,cluster,tfa,ANN, DMN, torchANN, NonlocalDamageTorchANN, LinearElecMagTherMech, LinearElecMagInductor, hyperviscoelastic,
                  GenericThermoMechanics, ElecMagGenericThermoMechanics, ElecMagInductor,
                  nonlineartvm,nonlinearTVE,nonlinearTVP,vevpmfh, VEVPUMAT, IMDEACPUMAT, Hill48,nonlinearTVEnonlinearTVP,nonlinearTVEnonlinearTVP2,
-                 MultipleLaws,GenericResidualStrain};
+                 MultipleLaws};
 
 
  protected :
diff --git a/NonLinearSolver/materialLaw/mlawGenericRM.cpp b/NonLinearSolver/materialLaw/mlawGenericRM.cpp
deleted file mode 100644
index 4a29b7ada504166bfc56443581d84bba8d9e761d..0000000000000000000000000000000000000000
--- a/NonLinearSolver/materialLaw/mlawGenericRM.cpp
+++ /dev/null
@@ -1,331 +0,0 @@
-// C++ Interface: material law
-//              Generic Residual Strain law
-// Author:  <mohib>, (C) 2024
-//
-// Copyright: See COPYING file that comes with this distribution
-//
-#include "mlawGenericRM.h"
-#include <math.h>
-#include "MInterfaceElement.h"
-
-mlawGenericTM::mlawGenericRM(const int num, const char* inputname, const bool init) :
-        materialLaw(num, init)
-{
-    _mecaLaw=NULL;
-    inputfilename = inputname;
-    _FRes = new constantScalarFunction(1.);
-
-}
-
-void mlawGenericTM::setLawForFRes(const scalarFunction& funcFRes)
-{
-    if (_FRes != NULL) delete _FRes;
-    _FRes = funcFRes.clone();
-}
-
-mlawGenericRM::mlawGenericRM(const mlawGenericRM& source) : materialLaw(source), _mecaLaw(NULL)
-{
-    inputfilename = source.inputfilename;
-    if(source._mecaLaw!=NULL)
-    {
-        if(_mecaLaw != NULL)
-        {
-            delete _mecaLaw;
-            _mecaLaw = NULL;
-        }
-        _mecaLaw=source._mecaLaw->clone();
-    }
-    _FRes = NULL;
-    if(source._FRes)
-        _FRes = source._FRes->clone();
-}
-
-mlawGenericRM& mlawGenericRM::operator=(const materialLaw& source)
-{
-    mlawCoupledThermoMechanics::operator=(source);
-    const mlawGenericRM* src =static_cast<const mlawGenericRM*>(&source);
-    if(src !=NULL)
-    {
-        if(src->_mecaLaw!=NULL)
-        {
-            if(_mecaLaw != NULL)
-            {
-                _mecaLaw->operator=(dynamic_cast<const materialLaw& >(*(src->_mecaLaw)));
-            }
-            else
-              _mecaLaw=src->_mecaLaw->clone();
-        }
-
-        if (_FRes!= NULL) delete _FRes; _FRes = NULL;
-        if (src->_Fres != NULL) _FRes = src->_FRes->clone();
-        inputfilename = src->inputname;
-
-    }
-    return *this;
-}
-
-//createIPVariable cf mlawTFA
-void mlawGenericRM::createIPState(IPStateBase* &ips,bool hasBodyForce, const bool* state_,const MElement *ele, const int nbFF_,
-                   const IntPt *GP, const int gpt) const
-{
-
-  bool inter=true;
-  const MInterfaceElement *iele = dynamic_cast<const MInterfaceElement*>(ele);
-  if(iele==NULL) inter=false;
-
-  static SPoint3 pt_Global;
-  ele->pnt(GP->pt[0],GP->pt[1],GP->pt[2],pt_Global);
-  static SVector3 GaussP;
-  GaussP[0] = pt_Global[0];
-  GaussP[1] = pt_Global[1];
-  GaussP[2] = pt_Global[2];
-  
-
-  // get the value? Reads the file     inputfilename and get the closest point @mohib do it in a function
-
-  
-  STensor3 FRes;
-
-  if(ips != NULL) delete ips;
-  IPGenericRM *ipvi=new IPGenericRM(FRes);
-  IPGenericRM *ipv1=new IPGenericRM(FRes);
-  IPGenericRM *ipv2=new IPGenericRM(FRes);
-
-  IPStateBase* ipsmeca=NULL;
-  getConstRefMechanicalMaterialLaw().createIPState(ipsmeca,hasBodyForce, state_,ele, nbFF_,GP, gpt);
-  std::vector<IPVariable*> allIP;
-  ipsmeca->getAllIPVariable(allIP);
-
-  ipvi->setIpMeca(*allIP[0]->clone());
-  ipv1->setIpMeca(*allIP[1]->clone());
-  ipv2->setIpMeca(*allIP[2]->clone());
-
-  ips = new IP3State(state_,ipvi,ipv1,ipv2);
-  delete ipsmeca;
-}
-
-void mlawGenericRM::createIPVariable(IPGenericRM* &ipv, bool hasBodyForce, const MElement *ele, const int nbFF,
-                                     const IntPt *GP, const int gpt) const
-{
-  bool inter=true;
-  const MInterfaceElement *iele = dynamic_cast<const MInterfaceElement*>(ele);
-  if(iele==NULL) inter=false;
-
-  static SPoint3 pt_Global;
-  ele->pnt(GP->pt[0],GP->pt[1],GP->pt[2],pt_Global);
-  static SVector3 GaussP;
-  GaussP[0] = pt_Global[0];
-  GaussP[1] = pt_Global[1];
-  GaussP[2] = pt_Global[2];
-  
-
-  // get the value? Reads the file     inputfilename and get the closest point @mohib do it in a function
-
-  
-  STensor3 FRes;
-
-    if(ipv != NULL)
-        delete ipv;
-    ipv = new IPGenericRM(FRes);
-
-    IPStateBase* ipsmeca=NULL;
-    const bool state_ = true;
-    getConstRefMechanicalMaterialLaw().createIPState(ipsmeca,hasBodyForce, &state_,ele, nbFF,GP, gpt);
-
-    std::vector<IPVariable*> allIP;
-    ipsmeca->getAllIPVariable(allIP);
-
-    ipv->setIpMeca(*allIP[0]->clone());
-    delete ipsmeca;
-}
-
-void mlawGenericRM::constitutive(            
-            const STensor3      &F0,                   // initial deformation gradient (input @ time n)
-            const STensor3      &Fn,                   // updated deformation gradient (input @ time n+1)
-            STensor3            &P,                    // updated 1st Piola-Kirchhoff stress tensor (output)
-            const IPVariable    *q0,                   // array of initial internal variable
-            IPVariable          *q1,                   // updated array of internal variable (in ipvcur on output),
-            STensor43           &Tangent,              // constitutive tangents (output)
-            const bool          stiff,
-            STensor43           *elasticTangent=NULL,
-            const bool dTangent =false,
-            STensor63* dCalgdeps = NULL
-
-                               ) const
-{
-    if(_mecaLaw == NULL)
-        Msg::Error("Mechanic law is null");
-
-    STensorOperation::zero(Tangent);
-
-    const double dh= getTimeStep();
-    const time=getTime();
-
-
-    const IPGenericRM &qRM0= dynamic_cast<const IPGenericRM &> (*q0);
-    IPGenericTM &qRM1= dynamic_cast<IPGenericRM &> (*q1);
-
-    static STensor3 FRes,FRes0,FResInv,FRes0Inv;
-    static STensor43 dFResdFn;
-    STensorOperation::zero(FRes);
-    STensorOperation::zero(FResInv);
-    STensorOperation::zero(dFResdFn);
-    STensorOperation::zero(FRes0);
-    STensorOperation::zero(FRes0Inv);
-
-    const STensor3 I2(1.0);
-    const STensor43 I4(2.0,0.0);
-
-    FRes = qRM1.getConstRefToFRes();
-    double scaleFactor=_FRes->get(time);
-    FRes-= I2;
-    FRes*=scaleFactor;
-    FRes+=I;
-    STensorOperation::inverseSTensor3(FRes, FResInv);
-
-    FRes0 = qRM0.getConstRefToFRes();
-    double time0=time;
-    if(getTimeStep()>0)
-     time0 -= getTimeStep():    
-    double scaleFactor0=_FRes->get(time0);
-    FRes0-= I2;
-    FRes0*=scaleFactor0;
-    FRes0+=I;
-    STensorOperation::inverseSTensor3(FRes0, FRes0Inv);
-
-
-    for (int i=0; i<3; i++){
-        for (int j=0; j<3; j++){
-            for (int k=0; k<3; k++){
-                for (int m=0; m<3; m++){
-                    for (int n=0; n<3; n++){
-                        dFResdFn(i,k,m,n) += FRes(i,j) * I2(j,m) * I2(k,n); /// to chnage to reflect order
-                    }
-                }
-            }
-        }
-    }
-    // need to updqte kt etc...
-    const double JacRes = FRes.determinant();
-
-
-    const IPVariableMechanics& qMeca0 = dynamic_cast<const IPGenericRM&>(*q0).getConstRefToIpMeca();
-    IPVariableMechanics& qMecan = dynamic_cast<IPGenericRM&>(*q1).getRefToIpMeca();
-
-
-    //Fmeca from F and Fthermal (possible using reference F?) for 0 and n
-    static STensor3 Fmeca, Fmeca0;
- 
-    // Fmeca from F and FRes
-    STensorOperation::multSTensor3(Fn,FRes, Fmeca);
-    // Fmeca from F and FRes
-    STensorOperation::multSTensor3(F0,FRes0, Fmeca0);
-
-    static STensor43 dFmecadF;
-    STensorOperation::zero(dFmecadF);
-
-    for (int i=0; i<3; i++){
-        for (int j=0; j<3; j++){
-            for (int k=0; k<3; k++){
-                for(int l = 0; l < 3; ++l){
-                    dFmecadF(i,j,k,l)=I2(i,k)*FResinv(l,j);
-                }
-            }
-        }
-    }
-
-    static STensor3 Pmeca;
-    static STensor43 TangentMeca;
-    static STensor43 elasticTangentMeca;
-    static Stensor63 dTangentMecadF;
-
-    STensorOperation::zero(Pmeca);
-    STensorOperation::zero(TangentMeca);
-    STensorOperation::zero(elasticTangentMeca);
-    STensorOperation::zero(dTangentMecadF);
-
-    _mecaLaw->constitutive(Fmeca0, Fmeca, Pmeca,
-                           &qTM0.getConstRefToIpMeca(),
-                           &qTM1.getRefToIpMeca(),
-                           TangentMeca, stiff,
-                           &elasticTangentMeca, dTangent,  &dTangentMecadF);
-
-
-    // P, Tangent etc..; from Pmeca and Fth and Fref
-
-    // get P
-    STensorOperation::multSTensor3(Pmeca, FResinvT, P);
-
-    // get Tangent
-    if(stiff){
-        for(int i=0; i<3; i++)
-        {
-            for(int J=0; J<3; J++)
-            {
-                for(int k=0; k<3; k++)
-                {
-                    for(int L=0; L<3; L++)
-                    {
-                        Tangent(i,J,k,L)=0.0;
-                        if elasticTangent!=0
-                          *elasticTangent(i,J,k,L)=0.0;
-                          
-                        for(int M=0; M<3; M++)
-                        {
-                            for(int o=0; o<3; o++)
-                            {
-                                for(int P=0; P<3; P++)
-                                {
-                                    Tangent(i,J,k,L)+=TangentMeca(i,M,o,P)*dFmecadF(o,P,k,L)*FResinvT(M,J);
-                                    if elasticTangent!=0
-                                       *elasticTangent(i,J,k,L)=*elasticTangentMeca(i,M,o,P)*dFmecadF(o,P,k,L)*FResinvT(M,J);;
-
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
-        if(dTangent)
-        {
-          for(int i=0; i<3; i++)
-          {
-            for(int J=0; J<3; J++)
-            {
-                for(int k=0; k<3; k++)
-                {
-                    for(int L=0; L<3; L++)
-                    {
-
-                      for(int r=0; r<3; r++)
-                      {
-                         for(int S=0; S<3; S++)
-                         {
-                            *dCalgdeps(i,J,k,L,r,S)=0.;
-
-                          
-                        for(int M=0; M<3; M++)
-                        {
-                            for(int o=0; o<3; o++)
-                            {
-                                for(int P=0; P<3; P++)
-                                {
-                                    *dCalgdeps(i,J,k,L,r,S)+=dTangentMecadF(i,M,k,L,o,P)*dFmecadF(o,P,r,S)*FResinvT(M,J); //to check
- 
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-          }
-        }
- 
-    }
-
-}
-
-void mlawGenericRM::ElasticStiffness(STensor43 *elasticStiffness) const {
-    getConstRefMechanicalMaterialLaw().ElasticStiffness(elasticStiffness);
-}
diff --git a/NonLinearSolver/materialLaw/mlawGenericRM.h b/NonLinearSolver/materialLaw/mlawGenericRM.h
deleted file mode 100644
index ee2d62453e9ebb36c197d075a72cbea29c954076..0000000000000000000000000000000000000000
--- a/NonLinearSolver/materialLaw/mlawGenericRM.h
+++ /dev/null
@@ -1,131 +0,0 @@
-// C++ Interface: material law
-//              Generic Residual Strain law
-// Author:  <mohib>, (C) 2024
-//
-// Copyright: See COPYING file that comes with this distribution
-//
-//
-
-#ifndef MLAWGENERICRM_H_
-#define MLAWGENERICRM_H_
-
-#include "mlaw.h"
-#include "STensor3.h"
-#include "STensor43.h"
-#include "STensor63.h"
-#include "scalarFunction.h"
-#include "ipGenericRM.h"
-#include "mlawCoupledThermoMechanics.h"
-
-
-class mlawGenericRM : public  materialLaw {
-protected:
-   //mechanical
-    materialLaw *_mecaLaw;
-    //
-    const char* inputfilename;
-    scalarFunction* _FRes;
-
-
-public:
-    mlawGenericRM(const int num, const char* inputfilename, const bool init = true);
-    const materialLaw &getConstRefMechanicalMaterialLaw() const
-    {
-        if(_mecaLaw == NULL)
-            Msg::Error("getConstRefMechanicalMaterialLaw: Mechanic law is null");
-        return *_mecaLaw;
-    }
-    materialLaw &getRefMechanicalMaterialLaw()
-    {
-        if(_mecaLaw == NULL)
-            Msg::Error("getRefMechanicalMaterialLaw: Mechanic law is null");
-        return *_mecaLaw;
-    }
-    virtual void setMechanicalMaterialLaw(const materialLaw *mlaw)
-    {
-        if(_mecaLaw != NULL)
-        {
-            delete _mecaLaw;
-            _mecaLaw = NULL;
-        }
-        _mecaLaw=mlaw->clone();
-
-    }
-    virtual void setTime(const double ctime,const double dtime){
-        mlawCoupledThermoMechanics::setTime(ctime,dtime);
-        if(_mecaLaw == NULL)
-            Msg::Error("setTime: Mechanic law is null");
-        _mecaLaw->setTime(ctime,dtime);
-    }
-    virtual void setMacroSolver(const nonLinearMechSolver* sv)
-    {
-        if(_mecaLaw == NULL)
-            Msg::Error("setMacroSolver: Mechanic law is null");
-        _mecaLaw->setMacroSolver( sv);
-    }
-#ifndef SWIG
-    virtual ~mlawGenericRM()
-    {
-        if(_mecaLaw != NULL)
-        {
-            delete _mecaLaw;
-            _mecaLaw = NULL;
-        }
-    }
-    mlawGenericRM(const mlawGenericRM& source);
-    virtual mlawGenericRM& operator=(const materialLaw& source);
-    virtual void initLaws(const std::map<int,materialLaw*> &maplaw){}; // this law is initialized so nothing to do
-    virtual double soundSpeed() const{
-        if(_mecaLaw == NULL)
-            Msg::Error("soundSpeed: Mechanic law is null");
-        return _mecaLaw->soundSpeed();
-    };
-    virtual double density() const{
-        if(_mecaLaw == NULL)
-            Msg::Error("density: Mechanic law is null");
-        return _mecaLaw->density();
-    };
-
-    virtual double ElasticShearModulus() const{
-        if(_mecaLaw == NULL)
-            Msg::Error("ElasticShearModulus: Mechanic law is null");
-        return _mecaLaw->getConstNonLinearSolverMaterialLaw()->ElasticShearModulus();
-    }
-    virtual void checkInternalState(IPVariable* ipv, const IPVariable* ipvprev) const{}; // do nothing
-    virtual materialLaw* clone() const {return new mlawGenericRM(*this);}
-    virtual bool withEnergyDissipation() const {
-            if(_mecaLaw == NULL)
-            Msg::Error("ElasticShearModulus: Mechanic law is null");
-        return _mecaLaw->withEnergyDissipation();
-
-    }
-    virtual matname getType() const{return materialLaw::GenericResidualStrain;}
-    virtual void createIPState(IPStateBase* &ips,bool hasBodyForce, const bool* state_=NULL,const MElement *ele=NULL, const int nbFF_=0,
-                               const IntPt *GP=NULL, const int gpt =0) const;
-    virtual void createIPVariable(IPGenericTM* &ipv, bool hasBodyForce, const MElement *ele, const int nbFF,
-                                  const IntPt *GP, const int gpt) const;
-
-    virtual void constitutive(
-            const STensor3      &F0,                   // initial deformation gradient (input @ time n)
-            const STensor3      &Fn,                   // updated deformation gradient (input @ time n+1)
-            STensor3            &P,                    // updated 1st Piola-Kirchhoff stress tensor (output)
-            const IPVariable    *q0,                   // array of initial internal variable
-            IPVariable          *q1,                   // updated array of internal variable (in ipvcur on output),
-            STensor43           &Tangent,              // constitutive tangents (output)
-            const bool          stiff,
-            STensor43           *elasticTangent=NULL,
-            const bool dTangent =false,
-            STensor63* dCalgdeps = NULL
-    ) const;
-
-    virtual void setLawForFRes(const scalarFunction& funcRes);
-    //const STensor43& getElasticityTensor() const { return _ElasticityTensor;};
-    virtual const STensor3&  getConductivityTensor() const { return _k;};
-    virtual const STensor3& getAlphaDilatation() const { return _alphaDilatation;};
-    //virtual void getStiff_alphaDilatation(STensor3 &stiff_alphaDilatation) const;
-    virtual void ElasticStiffness(STensor43 *elasticStiffness) const;
-
-#endif //SWIG
-};
-
-#endif //MLAWGENERICRM_H_
diff --git a/dG3D/src/dG3DIPVariable.h b/dG3D/src/dG3DIPVariable.h
index 30fb66223ba9390ad3a790026096109785b6e801..684b5cdb5304fb9b4f62c8c27455da3bb36db130 100644
--- a/dG3D/src/dG3DIPVariable.h
+++ b/dG3D/src/dG3DIPVariable.h
@@ -66,8 +66,6 @@
 #include "mlawLocalDamageIsotropicElasticity.h"
 #include "ipGenericTM.h"
 #include "mlawGenericTM.h"
-#include "ipGenericRM.h"
-#include "mlawGenericRM.h"
 #include "ipElecMagGenericThermoMech.h"
 #include "mlawElecMagGenericThermoMech.h"
 #include "ipElecMagInductor.h"
@@ -5510,9 +5508,6 @@ public:
     STensor3 & getRefToReferenceF();
 };
 
-//copy class GenericResidualMechanicsDG3DIPVariable : public dG3DIPVariableBase idem in Material
-
-
 class ElecMagGenericThermoMechanicsDG3DIPVariable : public ElecMagTherMechDG3DIPVariableBase
 {
 protected:
diff --git a/dG3D/src/dG3DMaterialLaw.cpp b/dG3D/src/dG3DMaterialLaw.cpp
index 6d68bf4b232a6556262971662396ed96dc4bc1a7..81dc1be39b05d4f9c47d3de0ecd43f86889b304f 100644
--- a/dG3D/src/dG3DMaterialLaw.cpp
+++ b/dG3D/src/dG3DMaterialLaw.cpp
@@ -252,7 +252,7 @@ void dG3DMaterialLawWithTangentByPerturbation::stress(IPVariable* ipv, const IPV
   ipvcur->getConstRefToDeformationGradient().print("F Analytique"); // FLE
   ipvcur->getConstRefToFirstPiolaKirchhoffStress().print("P Analytique"); // FLE
   ipvcur->getConstRefToTangentModuli().print("dPdE Analytique");
-  for (int k=0; k< numNonLocalVars; k++)
+ /* for (int k=0; k< numNonLocalVars; k++)
   {
     ipvcur->getConstRefToDLocalVariableDStrain()[k].print("dpdE Analyique");
   }
@@ -336,7 +336,7 @@ void dG3DMaterialLawWithTangentByPerturbation::stress(IPVariable* ipv, const IPV
     {
         Msg::Info("dp dExtraDofDiffusionField Analytique: %e",ipvcur->getRefTodLocalVariableDExtraDofDiffusionField()(k,i));
     }
-  }
+  }*/
   for (unsigned int i = 0; i < numCurlDof; ++i)
   {
       ipvcur->getConstRefTodPdVectorPotential()[i].print("dPdMagneticVectorPotential Analytique");
@@ -636,7 +636,7 @@ void dG3DMaterialLawWithTangentByPerturbation::stress(IPVariable* ipv, const IPV
         ipvcur->getConstRefToDIrreversibleEnergyDDeformationGradient().print("dEnedE Numerique");
       }
     }
-    for (int i=0; i< numNonLocalVars; i++)
+    /*for (int i=0; i< numNonLocalVars; i++)
     {
       for (int j=0; j< numNonLocalVars; j++)
       {
@@ -707,7 +707,7 @@ void dG3DMaterialLawWithTangentByPerturbation::stress(IPVariable* ipv, const IPV
         {
             Msg::Info("dp dExtraDofDiffusionField Numerique: %e",ipvcur->getRefTodLocalVariableDExtraDofDiffusionField()(k,i));
         }
-    }
+    }*/
     for (unsigned int i = 0; i < numCurlDof; ++i)
     {
       const unsigned int extradof_T = 0; // Thermal field EM source