# Versions Omher/Solver : V10.0.dev
# Modele BPmf avec calottes

Constantes_utilisateurs_

  # Modèle d'atmosphère pour calcul du modèle de couplage volume/pression
  double_ C__Ma      28.9644       # masse mol air
  double_ C__Mh      4.0026        # masse mol helium
  double_ C__R       8314.51       # constante des gaz parfaits R

  double_ C__Ta      2.166500e+02  # Température air à l'altitude vol
  double_ C__Pa      5.57548533e+03# Pression air à l'altitude vol
  double_ C__g       9.7454        # gravite à l'altitude vol
  
    # Paramètres de chargement
  double_ C__dP       1695.00    # Surpression dans le ballon
  double_ C__mgaz  0   # Masse de gaz dans le cas du chargement masseGaz

  # Contrôle pression ps
  double_ C__alpha   -0.10000
  double_ C__k        10.00000 
   
  # Paramètres pour le calcul des forces de torsion
  double_ C__nbNcal      1152 
  double_ C__Rcal      0.30000 
  double_ C__Mtor      0.0 
  
fin_Constantes_utilisateurs_ 

dimension 3
niveau_commentaire 3

TYPE_DE_CALCUL
combiner avec plus sauveMaillagesEnCours

liste_algorithmes_a_combiner_

# ============ algo 1 ============
dynamique_relaxation_dynam

PARA_TYPE_DE_CALCUL
typeCalRelaxation= 4 lambda= 1 type_calcul_mass= 2 option_recalcul_mass= 0
parametre_calcul_de_la_masse_ casMass_relax= 3
lambdaAvecPonderation_Globale_ f_lambda
propCinetiqueAvecPonderation_Globale_ f_propCinetique
parametre_calcul_de_la_viscosite_  type_calcul_visqu_critique= 1 opt_cal_C_critique= 1  f_= 0.9

avec_amortissement_cinetique_
   max_nb_decroit_pourRelaxDyn_   1
   taille_moyenne_glissante_      1
   coef_arret_pourRelaxDyn_       0.
   coef_redemarrage_pourRelaxDyn_ 0.
   max_deltaX_pourRelaxDyn_       0.01
   nb_deb_test_amort_cinetique_  1
   nb_max_dX_OK_pourRelaxDyn_     1 # 10
   nb_deb_testfin_pourRelaxDyn_   1 # 250
fi_parametre_amortissement_cinetique_

ARRET_A_EQUILIBRE_STATIQUE_ 2
# modulation_precision_equilibre_= f_precision
# mode_debug_= 10

# ============ algo 2 ============
non_dynamique

PARA_TYPE_DE_CALCUL 
# mode_debug_= 1

fin_liste_algorithmes_a_combiner_

PARA_TYPE_DE_CALCUL 
    choix_algo_ f_choix_algo 
    gestion_sauvegarde_ f_gestion_sauvegarde 
#------------------------------------------------------------------

< maillage.her

# def de mouvements solides du maillage film
def_mouvement_solide_initiaux_
mouvement_solide_
 translation_= -8.639380 0 0
 centre_=       0 0 0
 rotation_=     0 -1.57079633  0 en_radian_

fin_mouvement_solide_

#------------------------------------------------------------------

    les_courbes_1D #------------   
    


# Fonction ISO_ELAS_ESPO1D sigma = f(epsi_al)*epsi_al [Pa] - BP seulement



    les_fonctions_nD #------------

# Fonction pour piloter la précision de sortie (modulation_precision_equilibre_)
f_precision FONCTION_EXPRESSION_LITTERALE_nD
  un_argument= compteur_iteration_algo_global
  un_argument= compteur_increment_charge_algo_global  
  fct= (compteur_increment_charge_algo_global == 3) ? \
        (compteur_iteration_algo_global > 11 ) ? 1 : 1e-3 \
      : 1e-3
fin_parametres_fonction_expression_litterale_

# Fonction pour la gestion du choix de l'algo
f_choix_algo FONCTION_EXPRESSION_LITTERALE_nD
  un_argument= compteur_increment_charge_algo_global  
  un_argument= algo_global_actuel
  fct= (compteur_increment_charge_algo_global < 3) ? 1 : (algo_global_actuel == 16) ? 1 : 1 
fin_parametres_fonction_expression_litterale_ 

# Fonction pour la gestion de la convergence de chaque algo
f_gestion_sauvegarde FONCTION_EXPRESSION_LITTERALE_nD
  un_argument= compteur_increment_charge_algo_global  
  un_argument= algo_global_actuel
  fct= (compteur_increment_charge_algo_global < 3) ?  1 : (algo_global_actuel == 16) ? 1 : 1
fin_parametres_fonction_expression_litterale_

# Fonction pour la bascule en amortissement visqueux
f_propCinetique FONCTION_EXPRESSION_LITTERALE_nD
  un_argument= norme_de_convergence
  un_argument= compteur_increment_charge_algo_global  
  fct= (compteur_increment_charge_algo_global < 2) ? \
        (norme_de_convergence <  1.00e-03) ? 0 : 1 \
      : (compteur_increment_charge_algo_global < 3) ? \
        (norme_de_convergence <  1.00e-03) ? 0 : 1 \
      : (norme_de_convergence <  1.00e-03) ? 0 : 1 
fin_parametres_fonction_expression_litterale_

# Fonction pour le pilotage du lambda
f_lambda FONCTION_EXPRESSION_LITTERALE_nD
  un_argument= amor_cinet_visqueux  
  un_argument= temps_courant  
  fct= (temps_courant < 1.01 ) ? \ 
       (amor_cinet_visqueux == 1) ?   1.000 :   4.000  \
      : (temps_courant < 2.01 ) ? \
       (amor_cinet_visqueux == 1) ?   4.000 :   16.000  \
      :(amor_cinet_visqueux == 1) ?   20.000 :   40.000
fin_parametres_fonction_expression_litterale_

# Fonction de pondération pour le loi_melange
f_ponderation_loi_melange FONCTION_EXPRESSION_LITTERALE_nD  
  un_argument= temps_courant  
  fct= (temps_courant < 1.01) ?  1 : 1
  fin_parametres_fonction_expression_litterale_

# Fonction pour le pilotage du critere    
f_critere FONCTION_EXPRESSION_LITTERALE_nD
  un_argument= temps_courant  
  fct= (temps_courant < 1.01) ?  -1e9 :  -1e9
  fin_parametres_fonction_expression_litterale_
  
# Fonction pour la gestion de la stabilisation : en implicte ok en RD non
f_stabilisation_membrane FONCTION_EXPRESSION_LITTERALE_nD  
  un_argument= algo_global_actuel
  fct= (algo_global_actuel > 7) ? 0 :  0.00e+00
  fin_parametres_fonction_expression_litterale_

# Fonction additionnelle pour la gestion de la stabilisation
f_pond_stab_memb FONCTION_EXPRESSION_LITTERALE_nD  
  fct= 0
  fin_parametres_fonction_expression_litterale_
  
# Fonction pour la gestion du calcul de la direction des plis : en implicte non ; en RD oui
f_plis_dir FONCTION_EXPRESSION_LITTERALE_nD
  un_argument= algo_global_actuel
  fct= (algo_global_actuel > 7) ? 1 : -3
  fin_parametres_fonction_expression_litterale_   
  
# Fonction pour le pilotage de la température
f_temperature FONCTION_EXPRESSION_LITTERALE_nD
  un_argument= temps_courant  
  un_argument= compteur_iteration_algo_global
  fct=  (temps_courant < 1.01) ?  0 : 1     
  fin_parametres_fonction_expression_litterale_
  
# Fonction permettant de moduler la pression à l'inc1
f_surpression_ps FONC_SCAL_COMBINEES_ND 
   fct_base= f_ps
   fin_fcts_interne_fonction_combinee_
   deb_list_var_ temps_courant C__dP fin_list_var_ 
   fct= temps_courant < 1.01 ? \
          -1/10 * C__dP * f_ps\
        : temps_courant < 2.01 ? \    
          -(9/10*(temps_courant-1)+1/10) * C__dP \
        : -C__dP
   fin_parametres_fonction_combinee_   
   
# fonction produit scalaire pour contrôle pression 
f_ps FONCTION_EXPRESSION_LITTERALE_nD 
   deb_list_var_ X1 X2 X3 N_surf_1 N_surf_2 N_surf_3 C__alpha C__k fin_list_var_   
   fct=  (1-C__alpha)* (1/(1+exp(-C__k*(X1*N_surf_1 + X2*N_surf_2 + X3*N_surf_3) \
                               / sqrt(X1^2 + X2^2 + X3^2)))+(C__alpha/(1-C__alpha)))
   fin_parametres_fonction_expression_litterale_  

# calcul du volume total
f_volume FONCTION_EXPRESSION_LITTERALE_nD 
   deb_list_var_   X1 X2 X3 N_surf_1 N_surf_2 N_surf_3 fin_list_var_   
   fct= (X1*N_surf_1 + X2*N_surf_2 + X3*N_surf_3)/3 * 4
   fin_parametres_fonction_expression_litterale_  

# -----  Couplage volume/pression (modèle hydro)  ----------           
# Pression Dp(z) =  mg/vol_ballon * R*Ta/Mg - p_a
f_couplage  FONCTION_EXPRESSION_LITTERALE_nD 
   deb_list_var_ C__mgaz C__Ta C__R C__Mh C__Pa int_vol_E_quad_fct_nD_f_volume fin_list_var_
   fct= C__mgaz/int_vol_E_quad_fct_nD_f_volume * (C__R*C__Ta/C__Mh) - C__Pa
   fin_parametres_fonction_expression_litterale_ 
   
# Fonction 3D permettant d'appliquer un couple de torsion  
f_torsion FONCTION_EXPRESSION_LITTERALE_nD 
   deb_list_var_ temps_courant X1 X2 X3 C__nbNcal C__Rcal C__Mtor fin_list_var_   
   fct= -C__Mtor/(C__Rcal*C__nbNcal)*(temps_courant-2)*sin(atan2(X2,X1)), \
         C__Mtor/(C__Rcal*C__nbNcal)*(temps_courant-2)*cos(atan2(X2,X1)), 0
   fin_parametres_fonction_expression_litterale_  
   
# Fonction donnant le repère d'anisotropie (utilisé pour la loi OE et anisotropie par projection)
fct_repere_1  FONCTION_EXPRESSION_LITTERALE_nD
   # angle 0 :
   fct=  1. , 0. , 0. , 0. , 1. , 0.
  fin_parametres_fonction_expression_litterale_
  
# Fonctions nD complémentaires pour les lois

#------------------------------------------------------------------

	choix_materiaux #---------

E_quad_calotte	loi_calotte
E_quad_film	    loi_film
E_quad_ruban2D  loi_ruban2D
E_biel_bord     loi_rien1D
E_biel_pole     loi_biel_pole
E_quad_ruban_boutonniere_actif loi_ruban2D
E_quad_ruban_boutonniere       loi_rien2D

E_quad_film     loi_thermo_film
E_quad_calotte  loi_thermo_calotte
E_quad_ruban2D  loi_thermo_ruban2D

E_quad_ruban_boutonniere_actif loi_thermo_ruban2D



#------------------------------------------------------------------

    materiaux #---------

#-- Loi rien 1D
loi_rien1D LOI_RIEN1D

#-- Loi rien 2D
loi_rien2D LOI_RIEN2D_C

#-- Loi thermo calotte (dilatation)
loi_thermo_calotte LOI_ISO_THERMO
 alphaT= 0 lambda= 0 cp= 0
fin_thermique_isotrope

#-- Loi thermo film (dilatation)
loi_thermo_film LOI_ISO_THERMO
 alphaT= 0 lambda= 0 cp= 0
fin_thermique_isotrope

#-- Loi thermo ruban2D (dilatation)
loi_thermo_ruban2D LOI_ISO_THERMO
 alphaT= 0 lambda= 0 cp= 0
fin_thermique_isotrope

#-- Loi thermo tendonBC, BPL seulement


#-- Loi biel_pole (10GPa = très rigide)
loi_biel_pole ISOELAS1D
 10e+9  0.
permet_affichage_ -1

#-- Loi biel bord courbe, BPL seulement
loi_sangleBC LOI_CRITERE
  TYPE_DE_CRITERE_ PLISSEMENT_BIEL
      ISOELAS1D
        1.0000e+09  0.
      fin_loi_interne
  fin_loi_critere   
permet_affichage_ -1

#-- Loi calotte
loi_calotte  LOI_DES_MELANGES_EN_SIGMA
  les_grandeurs_de_controle_= temps_courant  fin_grandeurs_
  deb_fonct_= f_ponderation_loi_melange fin_fonct_

    #-- première loi
    ISOELAS2D_C demarre_a_prop_non_nulle_puis_strictement_decroissante_
        5.600e+09  0.3
    permet_affichage_ -1

   #-- seconde loi
    LOI_CRITERE demarre_a_prop_non_nulle_puis_strictement_decroissante_
    TYPE_DE_CRITERE_ PLISSEMENT_MEMBRANE avecNiveauSigmaI_mini_pour_plis_
        les_grandeurs_de_controle_= temps_courant  fin_grandeurs_
        deb_fonct_= f_critere fin_fonct_ 
        
        LOI_CONTRAINTES_PLANES 
            NEWTON_LOCAL  avec_parametres_de_reglage_
                nb_iteration_maxi_  20
                nb_dichotomie_maxi_ 20
                tolerance_residu_ 1  # Pa
                tolerance_residu_rel_ 1.e-5
                maxi_hsurh0_  4
                mini_hsurh0_  0.25       
                permet_affichage_ -1
            fin_parametres_reglage_Algo_Newton_
            
        ISOELAS
            5.600e+09  0.3
        fin_loi_contrainte_plane
    fin_loi_interne
    
    avec_parametres_controle_pour_loi_critere_
        choix_methode_cal_plis_memb_ 2
        recalcul_dir_plis_ f_plis_dir
    fin_parametres_controle_pour_loi_critere_
	
	fin_loi_critere 
fin_liste_lois_elementaires
permet_affichage_ -1

#-- Loi ruban2D
loi_ruban2D  LOI_DES_MELANGES_EN_SIGMA
  les_grandeurs_de_controle_= temps_courant  fin_grandeurs_
  deb_fonct_= f_ponderation_loi_melange fin_fonct_

    #-- première loi
    ISOELAS2D_C demarre_a_prop_non_nulle_puis_strictement_decroissante_
        5.600e+09  0.3
    permet_affichage_ -1

   #-- seconde loi
    LOI_CRITERE demarre_a_prop_non_nulle_puis_strictement_decroissante_
    TYPE_DE_CRITERE_ PLISSEMENT_MEMBRANE avecNiveauSigmaI_mini_pour_plis_
        les_grandeurs_de_controle_= temps_courant  fin_grandeurs_
        deb_fonct_= f_critere fin_fonct_ 
        
        LOI_CONTRAINTES_PLANES 
            NEWTON_LOCAL  avec_parametres_de_reglage_
                nb_iteration_maxi_  20
                nb_dichotomie_maxi_ 20
                tolerance_residu_ 10
                tolerance_residu_rel_ 1.e-4
                maxi_hsurh0_  4
                mini_hsurh0_  0.25       
                permet_affichage_ -1
            fin_parametres_reglage_Algo_Newton_
            
        ISOELAS
            5.600e+09  0.3
        fin_loi_contrainte_plane
    fin_loi_interne
    
    avec_parametres_controle_pour_loi_critere_
        choix_methode_cal_plis_memb_ 2
        recalcul_dir_plis_ f_plis_dir
    fin_parametres_controle_pour_loi_critere_
	
	fin_loi_critere 
fin_liste_lois_elementaires
permet_affichage_ -1


#-- Loi film
loi_film  LOI_DES_MELANGES_EN_SIGMA
  les_grandeurs_de_controle_= temps_courant  fin_grandeurs_
  deb_fonct_= f_ponderation_loi_melange fin_fonct_

    #-- première loi
    ISOELAS2D_C demarre_a_prop_non_nulle_puis_strictement_decroissante_
        5.600e+09  0.30
    permet_affichage_ -1

   #-- seconde loi
    LOI_CRITERE demarre_a_prop_non_nulle_puis_strictement_decroissante_
    TYPE_DE_CRITERE_ PLISSEMENT_MEMBRANE avecNiveauSigmaI_mini_pour_plis_
        les_grandeurs_de_controle_= temps_courant  fin_grandeurs_
        deb_fonct_= f_critere fin_fonct_ 
        
        LOI_CONTRAINTES_PLANES 
            NEWTON_LOCAL  avec_parametres_de_reglage_
                nb_iteration_maxi_  20
                nb_dichotomie_maxi_ 20
                tolerance_residu_ 1  # Pa
                tolerance_residu_rel_ 1.e-5
                maxi_hsurh0_  4
                mini_hsurh0_  0.25       
                permet_affichage_ -1
            fin_parametres_reglage_Algo_Newton_
            
		# Loi IsoElastique3D
		ISOELAS 
		    5.600e+09  0.30
		permet_affichage_ -1           
        fin_loi_contrainte_plane
    fin_loi_interne
    
    avec_parametres_controle_pour_loi_critere_
        choix_methode_cal_plis_memb_ 2
        recalcul_dir_plis_ f_plis_dir
    fin_parametres_controle_pour_loi_critere_
	
	fin_loi_critere 
fin_liste_lois_elementaires
permet_affichage_ -1
#------------------------------------------------------------------

	masse_volumique #---------
E_quad_film    0.000000e+00
E_quad_calotte 8.300000e+02
E_quad_ruban2D 8.300000e+02
E_biel_pole    0. 
E_biel_bord     0.000000e+00    
E_quad_ruban_boutonniere_actif 8.300000e+02
E_quad_ruban_boutonniere       0

    epaisseurs #------------
E_quad_film	    5.000000e-05
nom_mail= ballon E_quad_calotte_1 1.500000e-04
nom_mail= ballon E_quad_calotte_2 1.000000e-04
nom_mail= ballon E_quad_calotte_3 5.000000e-05

E_quad_ruban2D  5.000000e-05
E_quad_ruban_boutonniere_actif 5.000000e-05
E_quad_ruban_boutonniere       5.000000e-05

	sections  #---------
E_biel_bord_ext 2.000000e-06
E_biel_bord_int 1.000000e-06

E_biel_pole 100e-6 # valeur fixée

    variation_section  #---------
E_biel 0

    dilatation_thermique  #---------
E_quad_film    0    
E_quad_calotte 0    
E_quad_ruban2D 0
E_biel_bord    0
E_quad_ruban_boutonniere_actif 0

    repere_anisotropie_ #--------  


    integrale_sur_volume_  #---------
E_quad une_fonction_nD_ f_volume

    stabilisation_transvers_membrane_biel_   #---------
E_tout  STABMEMBRANE_BIEL_Gerschgorin_PREMIER_ITER \
    une_fonction_nD_ f_stabilisation_membrane \
    ponderation_f_stab_t_ f_pond_stab_memb \
fin_bloc_gene_
#------------------------------------------------------------------
    charges #---------
# surpression
F_tout  PRESSION 1 Fonction_nD_CHARGE: f_surpression_ps


# Chargement pression hydro (si altitude donnée)


#------------------------------------------------------------------

    blocages #---------
N_poleN  UX UY
N_poleS  UX UY
N_bord1 UX
N_bord2 UY

N_poleS     UZ TEMPS_MINI= 1
N_equateur  UZ TEMPS_MAXI= 1

N_tout UX UY UZ TEMPS_MINI= 4.01

# Température unitaire pour la dilatation
N_tout   'TEMP= Fonction_nD_CHARGE: f_temperature'
#------------------------------------------------------------------

# Déploiement ISOELAS_2D à p/10
    controle #------------
TEMPSFIN    1
DELTAt      1
DELTAtMINI  1
DELTAtMAXI  1
ITERATIONS  200000
NORME       E_cinetique/E_statique_ET_Res/Reac_et_Fext
PRECISION   5.00e-04
SAUVEGARDE  1
RESTART     0

    para_affichage #------------
FREQUENCE_AFFICHAGE_INCREMENT  1
FREQUENCE_AFFICHAGE_ITERATION  1
FREQUENCE_SORTIE_FIL_DU_CALCUL 1

para_pilotage_equi_global
INIT_INCRE_AVEC_PAS_PREC 0

resultats  pas_de_sortie_finale_
COPIE 0

_suite_point_info_

# Phase 2 : CP + pression p/10 à p
    controle #------------
TEMPSFIN    2
DELTAt      0.50
DELTAtMAXI  0.50
PRECISION   5.00e-04
RESTART     0

==PARA_SPECIFIQUE_SOUS_ALGO== 2
    controle #------------ 
PRECISION 1e-3
NORME min(Res,Res/Reaction)_et_verification_ddouble 
ITERATIONS 30		
==FIN_PARA_SPECIFIQUE_SOUS_ALGO_==

# Chargement masse gaz (si spécifié sinon même chargement t=2)
_suite_point_info_

    controle #------------
TEMPSFIN    3
DELTAt      1
DELTAtMAXI  1
PRECISION   5.00e-04
RESTART     0

# Critère pli
_suite_point_info_

    controle #------------
TEMPSFIN    4
RESTART     0
PRECISION   5.00e-04


# Encastrement
    controle #------------
TEMPSFIN    5
DELTAt      1
DELTAtMINI  1
DELTAtMAXI  1
RESTART     0

_fin_point_info_