Commits

Mickael Abbas committed 4f75ded

[#22401] Plane stress internal algorithm parameters are changed (back 22335)

  • Participants
  • Parent commits 06bc31e

Comments (0)

Files changed (17)

astest/comp001h.comm

 tabres2=TEST_COMPOR(OPTION='MECA',
                     MODELISATION='C_PLAN',SUPPORT='ELEMENT',
 
-                   COMPORTEMENT=_F(RELATION=compor,RESI_INTE_RELA=1.E-6,ITER_INTE_MAXI=50,
-                          ITER_CPLAN_MAXI=50),
+                   COMPORTEMENT=_F(RELATION=compor,RESI_INTE_RELA=1.E-6,ITER_INTE_MAXI=50),
               NEWTON=_F(REAC_ITER=1),
               LIST_MATER=ACIER,
               LIST_NPAS=4*[1] + [1, 5, 25],

astest/ssns106c.comm

                                 FONC_MULT=chf1,),
                              _F(CHARGE=COND_1,
                                 FONC_MULT=chf1,),),
-                      COMPORTEMENT=(_F(RELATION='ENDO_ISOT_BETON',ITER_CPLAN_MAXI = 1,
+                      COMPORTEMENT=(_F(RELATION='ENDO_ISOT_BETON',
                                     GROUP_MA='DALLE',),
                                  _F(RELATION='GRILLE_ISOT_LINE',
                                     GROUP_MA=('ACIER1L','ACIER2L','ACIER1T','ACIER2T',),),),
                                 FONC_MULT=chf2,),
                              _F(CHARGE=COND_2_F,
                                 FONC_MULT=chf1,),),
-                      COMPORTEMENT=(_F(RELATION='ENDO_ISOT_BETON', ITER_CPLAN_MAXI = 1,
+                      COMPORTEMENT=(_F(RELATION='ENDO_ISOT_BETON',
                                     GROUP_MA='DALLE',),
                                  _F(RELATION='GRILLE_ISOT_LINE',
                                     GROUP_MA=('ACIER1L','ACIER2L','ACIER1T','ACIER2T',),),),

astest/ssnv101b.comm

                 FONC_MULT = COEF,
                 TYPE_CHARGE = 'FIXE_CSTE'),
                          COMPORTEMENT=_F(
-                RESI_CPLAN_RELA=1.E-4,ITER_CPLAN_MAXI=1,
+                RESI_CPLAN_RELA=1.E-4,
                 ALGO_INTE='SECANTE',
                 RELATION = 'VMIS_CIN2_CHAB',
                 DEFORMATION = 'PETIT',

astest/ssnv169c.comm

                    _F(CHARGE = CH2)
                  ),
        COMPORTEMENT=_F(
-                 RELATION = 'KIT_DDI',ITER_CPLAN_MAXI = 1,
+                 RELATION = 'KIT_DDI',
                  RELATION_KIT=('BETON_UMLV_FP','ENDO_ISOT_BETON'),
                                ITER_INTE_MAXI = 1000),
                  INCREMENT=_F(LIST_INST = L_INST,

astest/ssnv169f.comm

                               ),
                      COMPORTEMENT = _F(RELATION = 'KIT_DDI',
                                     RELATION_KIT = ('BETON_UMLV_FP', 'MAZARS'),
-                                    DEFORMATION = 'PETIT', ITER_CPLAN_MAXI = 1,
+                                    DEFORMATION = 'PETIT',
                                     GROUP_MA = 'Q',),
                      INCREMENT = _F(LIST_INST = DEFLIST,
                                     INST_FIN = 5250000.,

bibfor/algorith/hypela.F90

             end do
         end do
     else if (typmod(1)(1:6) .eq. 'C_PLAN') then
-        epsi   = abs(crit(8))
-        nitmax = nint(crit(9))
+        epsi   = abs(crit(3))
+        nitmax = abs(nint(crit(1)))
 
 ! --- CALCUL DES ELONGATIONS
         c11 = 2.d0*epstot(1)+1.d0

bibfor/algorith/hypinc.F90

 ! ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
 !    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
 ! ======================================================================
+! aslint: disable=W0104
 ! person_in_charge: mickael.abbas at edf.fr
 !
     integer :: kpg, ksp, ndim
             end do
         end do
     else if (typmod(1)(1:6) .eq. 'C_PLAN') then
-        epsi   = abs(crit(8))
-        nitmax = nint(crit(9))
+        epsi   = abs(crit(3))
+        nitmax = abs(nint(crit(1)))
 ! --- CALCUL DES ELONGATIONS
         c11 = 2.d0*epstot(1)+1.d0
         c12 = 2.d0*epstot(4)

bibfor/algorith/pmdorc.F90

     iocc = 1
 !
     algo_inte  = p_info_carc_valk(2*(iocc-1) + 2)
-    call nmdocv(keywordfact, iocc, algo_inte, 'RESI_INTE_RELA', resi_inte_rela)
-    call nmdocv(keywordfact, iocc, algo_inte, 'ITER_INTE_MAXI', iter_inte_maxi)
+    call nmdocv(keywordfact   , iocc, algo_inte, 'RESI_INTE_RELA', resi_inte_rela)
+    call nmdocv(keywordfact   , iocc, algo_inte, 'ITER_INTE_MAXI', iter_inte_maxi)
     call utlcal('NOM_VALE', algo_inte, algo_inte_r)
 !
     carcri(1)  =  iter_inte_maxi

bibfor/comport/nmecmi.F90

     real(kind=8) :: depsth(6), valres(3), pm, xp(6), plast, para_vale
     real(kind=8) :: depsmo, sigmmo, e, nu, troisk, rprim, rp, hp, gp, g1, rpm
     real(kind=8) :: sieleq, sigeps, seuil, dp, coef, dsde, sigy, xm(6)
-    real(kind=8) :: sigedv(6), signul
+    real(kind=8) :: sigedv(6)
     real(kind=8) :: kron(6), depsdv(6), sigmdv(6), sigpdv(6), sigdv(6), cc
     real(kind=8) :: em, num, troikm, deumum, sigmp(6), sigel(6)
     real(kind=8) :: hsg, pp, prag, pragm, precr, tm, tp, epsthe
 !     -- 1 INITIALISATIONS :
 !     ----------------------
     cplan = typmod(1) .eq. 'C_PLAN'
-    signul = crit(3)
     ndimsi = 2*ndim
     imate2=imate
     iret=0
         else
             plast = 1.d0
             if (cplan) then
-                prec   = crit(8)
-                niter  = nint(crit(9))
-                if (prec .gt. 0.d0) then
-                    if (sigy .lt. signul) then
-                        precr = prec
-                    else
-                        precr = prec*sigy
-                    endif
-                else
-                    precr = abs(prec)
-                endif
+                prec  = abs(crit(3))
+                niter = abs(nint(crit(1)))
+                precr = prec * sigy
 !
 !             CALCUL DE L'APPROXIMATION : DP SANS CONTRAINTE PLANE
 !

bibfor/comport/nmelnl.F90

     real(kind=8) :: kdess, bendo, ther, epsth(6), epsmo, epsdv(6), epseq, sieleq
     real(kind=8) :: p, rp, rprim, g, coef, epsi, airerp
     real(kind=8) :: approx, prec, x, kron(6), divu, biot
-    real(kind=8) :: coco, dp0, rprim0, xap, precr, signul
+    real(kind=8) :: coco, dp0, rprim0, xap, precr
 !
 !====================================================================
 !---COMMONS NECESSAIRES A HENCKY C_PLAN (NMCRI1)
     data  kron/1.d0,1.d0,1.d0,0.d0,0.d0,0.d0/
     cplan = typmod(1) .eq. 'C_PLAN'
     inco = typmod(2) .eq. 'INCO'
-    signul = crit(8)
     elas = (compor(1)(1:5) .eq. 'ELAS ')
     vmis = (compor(1)(1:9) .eq. 'ELAS_VMIS')
     line = (compor(1)(1:14).eq. 'ELAS_VMIS_LINE')
             endif
 !         CALCUL DE P (EQUATION PROPRE AUX CONTRAINTES PLANES)
             approx = 2.d0*epseq/3.d0 - sigy/1.5d0/deuxmu
-            prec   = crit(8)
-            niter  = nint(crit(9))
-            if (prec .gt. 0.d0) then
-                if (sigy .lt. signul) then
-                    precr = prec
-                else
-                    precr = prec*sigy
-                endif
-            else
-                precr = abs(prec)
-            endif
+            prec  = abs(crit(3)) * sigy
+            niter = abs(nint(crit(1)))
             call zerofr(0, 'DEKKER', nmcri1, 0.d0, approx,&
-                        precr, niter, p, iret, ibid)
+                        prec, niter, p, iret, ibid)
             if (iret .ne. 0) then
                 call utmess('F', 'ALGORITH8_65')
             endif

bibfor/comport/nmisex.F90

     real(kind=8) :: kron(6), depsdv(6), sigmdv(6), sigpdv(6), sigdv(6)
     real(kind=8) :: em, num, troikm, deumum, sigmp(6), sigel(6), a
     real(kind=8) :: defam(6), defap(6), line
-    real(kind=8) :: precr, dp0, xap, signul, prec
+    real(kind=8) :: precr, dp0, xap
     real(kind=8) :: valrm(2)
     real(kind=8) :: rac2
     integer :: icodre(3)
     cplan = typmod(1) .eq. 'C_PLAN'
     inco = typmod(2) .eq. 'INCO'
     dech = option(11:14).eq.'ELAS'
-    signul = crit(3)
     if (inco) then
         co = 0.d0
     else
                 pm = vim(1)
 !
                 if (cplan) then
-                    prec   = crit(8)
-                    niter  = nint(crit(9))
-                    if (prec .gt. 0.d0) then
-                        if (sigy .lt. signul) then
-                            precr = prec
-                        else
-                            precr = prec*sigy
-                        endif
-                    else
-                        precr = abs(prec)
-                    endif
+                    niter = abs(nint(crit(1)))
+                    precr = abs(crit(3)) * sigy
 !
 !             CALCUL DE L'APPROXIMATION : DP SANS CONTRAINTE PLANE
 !

bibfor/comport/nmisot.F90

     character(len=8) :: nomres(3)
     character(len=8) :: nompar(3), para_type
     character(len=10) :: phenom
-    real(kind=8) :: valpam(3), valpap(3), para_vale, valrm(2), signul, prec
+    real(kind=8) :: valpam(3), valpap(3), para_vale, valrm(2)
     real(kind=8) :: bendom, bendop, kdessm, kdessp, rac2, xm(6), xp(6)
 !-----------------------------------------------------------------------
     integer :: lgpg
     nbvalp = 0
     jprolp = 0
     jvalep = 0
-    signul = crit(3)
 !
     cplan = typmod(1) .eq. 'C_PLAN'
     inco = typmod(2) .eq. 'INCO'
             vip(2) = 1.d0
             pm = vim(1)
             if (cplan) then
-                prec   = crit(8)
-                niter  = nint(crit(9))
-                if (prec .gt. 0.d0) then
-                    if (sigy .lt. signul) then
-                        precr = prec
-                    else
-                        precr = prec*sigy
-                    endif
-                else
-                    precr = abs(prec)
-                endif
+                niter  = abs(nint(crit(1)))
                 jprol2 = jprolp
                 jvale2 = jvalep
                 nbval2 = nbvalp
+                precr  = abs(crit(3)) * sigy
 
 !
 !             CALCUL DE L'APPROXIMATION : DP SANS CONTRAINTE PLANE

bibfor/include/asterfort/get_elasth_para.h

File contents unchanged.

bibfor/modelisa/carc_read.F90

     integer :: iocc, iret, nbocc
     character(len=16) :: algo_inte, type_matr_tang, method, post_iter
     real(kind=8) :: parm_theta, vale_pert_rela
-    real(kind=8) :: resi_cplan_maxi, seuil, amplitude, taux_retour, parm_alpha, resi_radi_rela
-    integer :: type_matr_t, iter_inte_pas, iter_cplan_maxi
+    real(kind=8) :: resi_deborst_max, seuil, amplitude, taux_retour, parm_alpha, resi_radi_rela
+    integer :: type_matr_t, iter_inte_pas, iter_deborst_max
     character(len=16) :: rela_comp, rela_comp_py, kit_comp(9)
     character(len=16) :: rela_thmc, rela_hydr, rela_ther, rela_meca, rela_meca_py
     logical :: l_kit_thm
 !
 ! ----- Get ITER_CPLAN_MAXI/RESI_CPLAN_MAXI/RESI_CPLAN_RELA (Deborst method)
 !
-        resi_cplan_maxi = 1.d-6
-        iter_cplan_maxi = 10
-        call getvis(keywordfact, 'ITER_CPLAN_MAXI', iocc = iocc, scal = iter_cplan_maxi)
-        call getvr8(keywordfact, 'RESI_CPLAN_MAXI', iocc = iocc, scal = resi_cplan_maxi, &
+        resi_deborst_max = 1.d-6
+        iter_deborst_max = 1
+        call getvis(keywordfact, 'ITER_CPLAN_MAXI', iocc = iocc, scal = iter_deborst_max)
+        call getvr8(keywordfact, 'RESI_CPLAN_MAXI', iocc = iocc, scal = resi_deborst_max, &
                     nbret = iret)
         if (iret .ne. 0) then
-            resi_cplan_maxi = -resi_cplan_maxi
+            resi_deborst_max = -resi_deborst_max
         else
-            call getvr8(keywordfact, 'RESI_CPLAN_RELA', iocc = iocc, scal = resi_cplan_maxi)
+            call getvr8(keywordfact, 'RESI_CPLAN_RELA', iocc = iocc, scal = resi_deborst_max)
         endif
 !
 ! ----- Get TYPE_MATR_TANG/VALE_PERT_RELA/SEUIL/AMPLITUDE/TAUX_RETOUR
         info_carc_valr(13*(iocc-1) + 5)  = iter_inte_pas
         info_carc_valr(13*(iocc-1) + 6)  = 0.d0
         info_carc_valr(13*(iocc-1) + 7)  = vale_pert_rela
-        info_carc_valr(13*(iocc-1) + 8)  = resi_cplan_maxi
-        info_carc_valr(13*(iocc-1) + 9)  = iter_cplan_maxi
+        info_carc_valr(13*(iocc-1) + 8)  = resi_deborst_max
+        info_carc_valr(13*(iocc-1) + 9)  = iter_deborst_max
         info_carc_valr(13*(iocc-1) + 10) = seuil
         info_carc_valr(13*(iocc-1) + 11) = amplitude
         info_carc_valr(13*(iocc-1) + 12) = taux_retour

bibfor/modelisa/carc_save.F90

     real(kind=8), pointer :: p_carc_valv(:) => null()
     character(len=16) :: algo_inte, rela_comp
     real(kind=8) :: iter_inte_maxi, resi_inte_rela, parm_theta, vale_pert_rela, algo_inte_r
-    real(kind=8) :: resi_cplan_maxi, seuil, amplitude, taux_retour, parm_alpha
-    integer :: type_matr_t, iter_inte_pas, iter_cplan_maxi
+    real(kind=8) :: resi_deborst_max, seuil, amplitude, taux_retour, parm_alpha
+    integer :: type_matr_t, iter_inte_pas, iter_deborst_max
     logical :: plane_stress
 !
 ! --------------------------------------------------------------------------------------------------
         iter_inte_pas   = int(info_carc_valr(13*(iocc-1) + 5))
         algo_inte_r     =     info_carc_valr(13*(iocc-1) + 6)
         vale_pert_rela  =     info_carc_valr(13*(iocc-1) + 7)
-        resi_cplan_maxi =     info_carc_valr(13*(iocc-1) + 8)
-        iter_cplan_maxi = int(info_carc_valr(13*(iocc-1) + 9))
+        resi_deborst_max =     info_carc_valr(13*(iocc-1) + 8)
+        iter_deborst_max = int(info_carc_valr(13*(iocc-1) + 9))
         seuil           =     info_carc_valr(13*(iocc-1) + 10)
         amplitude       =     info_carc_valr(13*(iocc-1) + 11)
         taux_retour     =     info_carc_valr(13*(iocc-1) + 12)
 !
 ! ----- Get RESI_INTE_RELA/ITER_INTE_MAXI
 !
-        call nmdocv(keywordfact, iocc, algo_inte, 'RESI_INTE_RELA', resi_inte_rela)
-        call nmdocv(keywordfact, iocc, algo_inte, 'ITER_INTE_MAXI', iter_inte_maxi)
+        call nmdocv(keywordfact   , iocc, algo_inte, 'RESI_INTE_RELA', resi_inte_rela)
+        call nmdocv(keywordfact   , iocc, algo_inte, 'ITER_INTE_MAXI', iter_inte_maxi)
 !
 ! ----- Set in <CARTE>
 !
         p_carc_valv(5)  = iter_inte_pas
         p_carc_valv(6)  = algo_inte_r
         p_carc_valv(7)  = vale_pert_rela
-        p_carc_valv(8)  = resi_cplan_maxi
-        p_carc_valv(9)  = iter_cplan_maxi
+        p_carc_valv(8)  = resi_deborst_max
+        p_carc_valv(9)  = iter_deborst_max
         p_carc_valv(10) = seuil
         p_carc_valv(11) = amplitude
         p_carc_valv(12) = taux_retour

bibfor/nonlinear/nmdocv.F90

 !
     character(len=16), intent(in) :: keywordfact
     integer, intent(in) :: iocc
+    character(len=16), intent(in) :: algo_inte
     character(len=14), intent(in) :: keyword
-    character(len=16), intent(in) :: algo_inte
     real(kind=8), intent(out) :: value
 !
 ! --------------------------------------------------------------------------------------------------
 !
 ! --------------------------------------------------------------------------------------------------
 !
-! In  keywordfact  : factor keyword to read (COMPORTEMENT)
-! In  iocc         : factor keyword index in COMPORTEMENT
-! In  keyword      : keyword 
-! In  algo_inte    : integration algorithm
-! Out value        : real value of keyword
+! In  keywordfact     : factor keyword to read (COMPORTEMENT)
+! In  iocc            : factor keyword index in COMPORTEMENT
+! In  algo_inte       : integration algorithm
+! In  keyword         : keyword 
+! Out value           : real value of keyword
 !
 ! --------------------------------------------------------------------------------------------------
 !
-    integer :: iarg, iret, vali
+    integer :: iarg, iret, vali, iter_cplan
+    real(kind=8) :: inte_rela_anal
 !
 ! --------------------------------------------------------------------------------------------------
 !
     else if (keyword.eq.'ITER_INTE_MAXI') then
         call getvis(keywordfact, keyword, iocc=iocc, scal=vali, nbret=iret,&
                     isdefault=iarg)
-        value = vali
+        value      = vali
+        iter_cplan = value
     endif
 !
     ASSERT(iret.ne.0)
 !
+! - Number of iterations for plane stress
+!
+    inte_rela_anal = -iter_cplan
+!
 ! - Checking
 !
     if (iarg .eq. 0) then
         if (algo_inte .eq. 'ANALYTIQUE') then
             call utmess('A', 'COMPOR4_70', sk=keyword)
-            value = -999.d0
+            value = inte_rela_anal
         endif
     else
         if (algo_inte .eq. 'ANALYTIQUE') then
             if (keyword .eq. 'ITER_INTE_MAXI') then
-                value = -999.d0
+                value = inte_rela_anal
             endif
         endif
     endif

catapy/commun/c_comportement.capy

                                       fr="Critère d'arret relatif pour assurer la condition de contraintes planes"),
                                   ),
 
-              ITER_CPLAN_MAXI =SIMP(statut='f',typ='I',defaut= 10,
+              ITER_CPLAN_MAXI =SIMP(statut='f',typ='I',defaut= 1,
                                       fr="Nombre d'itérations maxi pour assurer la condition de contraintes planes"),
            #
            RESI_INTE_RELA    =SIMP(statut='f',typ='R',defaut= 1.0E-6),