From c292c1bc6744f0c4cd7693d117f141dadf79c87e Mon Sep 17 00:00:00 2001 From: troufflard <> Date: Thu, 15 Mar 2018 19:00:21 +0000 Subject: [PATCH] modif script Perl/test.pl (cf doc_procedure_verification.tex pour le suivi des modifs du 2018-03-15) --- Doc/doc_procedure_verification.tex | 1 + Perl/test.pl | 134 +++++++++- Rapport/rapport_test_R.txt | 395 +++++++++++++++++++---------- doc_procedure_verification.pdf | Bin 216652 -> 218584 bytes 4 files changed, 389 insertions(+), 141 deletions(-) diff --git a/Doc/doc_procedure_verification.tex b/Doc/doc_procedure_verification.tex index 52b78f6..fe2715a 100644 --- a/Doc/doc_procedure_verification.tex +++ b/Doc/doc_procedure_verification.tex @@ -1234,6 +1234,7 @@ autre modif : harmonisation des affichages des commentaires \begin{itemize} \item[-] modif du script \verb|verifier_exeHZ.pl| : ajout d'une vérification de la présence des commandes suivantes : \verb|tcsh|, \verb|Perl/genere_rapport.pl| et \verb|Perl/test.pl| \item[-] modif du script \verb|Perl/test.pl| : la précision relative par défaut et la comparaison relative ne sont maintenant plus en pourcent. La variable \verb|$PREC_RELATIVE_POURCENT| a été renommée en \verb|$PREC_RELATIVE_DEFAUT| (remarque : la variable \verb|$PREC_ABSOLU| a également été renommée en \verb|$PREC_ABSOLU_DEFAUT|). De m\^eme, la variable \verb|$diff_relative_pourcent| a été renommée en \verb|$diff_relative|. Le mot "pourcent" a été retiré de tous les commentaires. L'affichage dans les rapports de test n'est plus en pourcent pour la comparaison relative. +\item[-] modif du script \verb|Perl/test.pl| : (MODIF CONSEQUENTE) il y avait un problème de la surveillance de l'activité CPU d'un calcul dans le cas où \verb|verifier_exeHZ.pl| était utilisé non pas sur un exécutable Herezh mais sur un script qui appelle Herezh (une sorte de surcouche). Dans ce cas, c'est l'activité de ce script qui était surveillée, or elle peut \^etre quasi-nulle alors que le processus Herezh est lui en pleine activité. Ce qui provoquait l'arr\^et du test. La solution choisie est de créer un lien symbolique du fichier .info. Ceci permet de repérer le processus Herezh qui utilise ce .info avec la commande \verb|ps|. La subroutine \verb|lancement_commande()| a été modifiée pour créer ce lien symbolique, le prendre en compte dans le lancement de la commande, repérer les processus où apparait le lien symbolique (variable \verb|@process| dans le \verb|fork()| de surveillane) et gérer le renommage des fichiers résultats une fois le calcul terminé (création de la subroutine \verb|renommage_arborescence()| dans ce but) \end{itemize}%tiret diff --git a/Perl/test.pl b/Perl/test.pl index 2c62dbc..f6276eb 100755 --- a/Perl/test.pl +++ b/Perl/test.pl @@ -1176,6 +1176,14 @@ sub printRapport { # "probleme lancement calcul" => le calcul ne s est pas lance # "activite cpu nulle" => calcul ne s arretait pas alors qu il avait une activite cpu nulle # "..." => divers messages d erreur produit par Herezh (voir variable @liste_message_erreur) +# +# Remarques : +# le calcul est lance via des liens symboliques vers l executable Herezh et sur le fichier .info (s il existe dans la commande $commande). +# Le nom de ces liens symboliques permet de reperer facilement les processus Herezh avec la commande ps. Et ce reperage de processus est l unique but +# de ces liens symboliques. +# +# +# sub lancement_commande { use IO::Handle; @@ -1198,6 +1206,46 @@ sub lancement_commande { system("ln -s $hzchemin_original $lien_symbolique_HZ"); + ############################################################## + #creation d un lien symbolique vers le fichier .info (si il y en a un dans $commande) + # rq : l utilite de ce lien est qu il permettra de rechercher les pid de processus en reperant ce nom unique genere aleatoirement (pour eviter de tuer d autres processus Herezh qui n ont rien a voir avec la batterie de test) + # + # rq 2 : a l issue du calcul, il faudra renommer les fichiers resultats car ils vont etre nommes par Herezh en fonction du nom du lien symbolique. Il faudra donc + # leur redonner un nom coherent avec le nom du .info d origine (voir en fin de cette subroutine au moment de l appel a la subroutine renommage_arborescence() ) + ############################################################## + my $racine_lien_symbolique_finfo; + my $racine_finfo; + + if($commande =~ /\.info/) { + my @commandes = split(/\s+/, $commande); + + foreach my $cmd (@commandes) { + next if(not $cmd =~ /^(\S+)\.info$/); + $racine_finfo = $1; + + $racine_lien_symbolique_finfo = "$racine_finfo".int(rand(99999999999)); + #creation du lien symbolique + system("ln -s $racine_finfo.info $racine_lien_symbolique_finfo.info"); + $cmd = "$racine_lien_symbolique_finfo.info";#remplacement du nom .info par "$racine_lien_symbolique_finfo.info" dans @commandes + last; + } + + #si on a trouve un fichier .info, il faut : + # - reconstituer la commande $commande en prenant le lien symbolique pour le fichier .info + # - creer un .CVisu qui correspond au .info symbolique si un .CVisu existe + if(defined "$racine_finfo.info") { + #on recree la commande avec le nouveau nom du fichier .info + $commande = join(' ', @commandes); + + #on fait egalement un lien symbolique vers l eventuel .CVisu + my $fCVisu = "$racine_finfo.CVisu"; + if(-e $fCVisu) { + system("ln -s $fCVisu $racine_lien_symbolique_finfo.CVisu"); + } + } + } + + ############################################################## #lancement du calcul Herezh dans un pipe # rq : redirection de l affichage dans le fichier $fredir_tee @@ -1322,6 +1370,12 @@ sub lancement_commande { #liste des processus sous le format "pid %cpu commande" dont la commande contient le mot $lien_symbolique_HZ et pas le mot grep my @process = qx(ps -U $ENV{USER} -o pid,%cpu,command | grep $lien_symbolique_HZ | grep -v grep); + #ajout des processus dont la commande contient le nom "$racine_lien_symbolique_finfo.info" (s il existe) et pas le mot grep + if(defined $racine_lien_symbolique_finfo) { + my @process_tmp = qx(ps -U $ENV{USER} -o pid,%cpu,command | grep $racine_lien_symbolique_finfo | grep -v grep); + push(@process, @process_tmp); + } + #liste des pid correspondants my @pid_process = (); foreach my $process (@process) { @@ -1466,15 +1520,93 @@ sub lancement_commande { #suppression des eventuels fichiers de communication system("rm -f $fic_com_taille_max $fic_com_activite_cpu"); - #suppression du lien symbolique + + #suppression du lien symbolique commande Herezh system("rm -f $lien_symbolique_HZ"); + #suppression du lien symbolique .info et .CVisu eventuels + if(defined $racine_lien_symbolique_finfo) { + system("rm -f $racine_lien_symbolique_finfo.info $racine_lien_symbolique_finfo.CVisu"); + } + + #tous les fichiers crees par Herezh ont un nom qui ont la meme racine que $racine_lien_symbolique_finfo + # => il faut les renommer (notamment on aura besoin du .BI et .PI si on doit faire des restarts pour les prochaines .CVisu[i], du _princ.maple pour la comparaison et meme des fichiers _Gmsh un jour peut-etre) + renommage_arborescence('.', $racine_lien_symbolique_finfo, $racine_finfo); + return $status_calcul; }#sub lancement_commande +##################################################################################################### +#subroutine qui renomme les fichiers et repertoires en fouillant dans toute une arborescence depuis un repertoire de depart +##################################################################################################### +# en entree : +# - repertoire de depart +# - chaine de caracteres a trouver dans les noms de fichiers initiaux +# - chaine de caracteres qui doit remplacer la chaine initiale +# +# en sortie : +# pas de sortie (les fichiers et repertoires ont ete renommes) +# +sub renommage_arborescence { + my $rep = shift; + my $chaine_ini = shift; + my $chaine_fin = shift; + + + #astuce : inversion des motifs de reconnaissance pour faire une substitution en commencant par la fin + my $inversion_chaine_ini = join('', reverse split(//, $chaine_ini)); + my $inversion_chaine_fin = join('', reverse split(//, $chaine_fin)); + + + #d abord on renomme les fichiers + my @liste_fichiers; + + my @liste_tmp = glob("$rep/*$chaine_ini*"); + while($#liste_tmp > -1) { + my $elt = shift(@liste_tmp); + if(-d $elt) { + push(@liste_tmp, glob("$elt/*$chaine_ini*")); + } + else { + push(@liste_fichiers, $elt); + } + } + + foreach my $fic (@liste_fichiers) { + my $inversion_nom = join('', reverse split(//, $fic)); + (my $nouveau_nom = $inversion_nom) =~ s/$inversion_chaine_ini/$inversion_chaine_fin/; + $nouveau_nom = join('', reverse split(//, $nouveau_nom)); + system("mv -f $fic $nouveau_nom"); + } + + + #ensuite on renomme les repertoires + my @liste_repertoires; + + @liste_tmp = glob("$rep/*$chaine_ini*"); + while($#liste_tmp > -1) { + my $elt = shift(@liste_tmp); + if(-d $elt) { + push(@liste_repertoires, $elt); + push(@liste_tmp, glob("$elt/*$chaine_ini*")); + } + } + + #on commence par ceux de la fin (ce sont les plus loins dans l arborescence) + foreach my $rep (reverse @liste_repertoires) { + my $inversion_nom = join('', reverse split(//, $rep)); + (my $nouveau_nom = $inversion_nom) =~ s/$inversion_chaine_ini/$inversion_chaine_fin/; + $nouveau_nom = join('', reverse split(//, $nouveau_nom)); + system("mv -f $rep $nouveau_nom"); + } +} + + + + ##################################################################################################### #subroutine qui recherche l existence d une commande et renvoie le premier path trouve (renvoie 0 si commande introuvable) ##################################################################################################### diff --git a/Rapport/rapport_test_R.txt b/Rapport/rapport_test_R.txt index c7df255..45c3a9a 100644 --- a/Rapport/rapport_test_R.txt +++ b/Rapport/rapport_test_R.txt @@ -4,7 +4,7 @@ - version HZ++ : HZppfast 6.828 - date : 15/03/2018 -- heure : 13:59 (heure locale) +- heure : 19:46 (heure locale) - machine : hdom-1057.univ-ubs.fr --------------------------------------- @@ -12,9 +12,12 @@ ./Batterie/FONCTION_UNIQUE/CONDITIONS_LIMITES/Test_R_cisaillement_CLL_periodique/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:01.179 (processeur : 98.3%) - | temps systeme : 00:00:00.027 (processeur : 98.3%) - | temps reel : 00:00:01.21 + | temps cpu : 00:00:01.218 (processeur : 97.6%) + | temps systeme : 00:00:00.028 (processeur : 97.6%) + | temps reel : 00:00:01.26 + | temps cpu : 00:00:01.355 (processeur : 83.8%) + | temps systeme : 00:00:00.100 (processeur : 83.8%) + | temps reel : 00:00:01.73 ------------------------------------------------------- -> comparaison .maple : OK (pour toutes les grandeurs testees) @@ -26,6 +29,9 @@ | temps cpu : 00:00:00.093 (processeur : 90.0%) | temps systeme : 00:00:00.008 (processeur : 90.0%) | temps reel : 00:00:00.10 + | temps cpu : 00:00:00.188 (processeur : 47.0%) + | temps systeme : 00:00:00.068 (processeur : 47.0%) + | temps reel : 00:00:00.51 ------------------------------------------------------- -> comparaison .maple : OK (pour toutes les grandeurs testees) @@ -34,9 +40,12 @@ ./Batterie/FONCTION_UNIQUE/CONDITIONS_LIMITES/Test_R_traction_plane_CLL/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:00.181 (processeur : 94.7%) - | temps systeme : 00:00:00.007 (processeur : 94.7%) + | temps cpu : 00:00:00.179 (processeur : 89.4%) + | temps systeme : 00:00:00.008 (processeur : 89.4%) | temps reel : 00:00:00.19 + | temps cpu : 00:00:00.270 (processeur : 55.9%) + | temps systeme : 00:00:00.066 (processeur : 55.9%) + | temps reel : 00:00:00.59 ------------------------------------------------------- -> comparaison .maple : OK (pour toutes les grandeurs testees) @@ -45,9 +54,12 @@ ./Batterie/FONCTION_UNIQUE/CONTACT/Test_R_contact_axi_non_dynamique/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:02.994 (processeur : 99.3%) - | temps systeme : 00:00:00.037 (processeur : 99.3%) - | temps reel : 00:00:03.04 + | temps cpu : 00:00:03.144 (processeur : 99.3%) + | temps systeme : 00:00:00.043 (processeur : 99.3%) + | temps reel : 00:00:03.20 + | temps cpu : 00:00:03.235 (processeur : 92.5%) + | temps systeme : 00:00:00.100 (processeur : 92.5%) + | temps reel : 00:00:03.60 ------------------------------------------------------- -> comparaison .maple : ECHEC @@ -287,8 +299,11 @@ ./Batterie/FONCTION_UNIQUE/CONTACT/Test_R_contact_basique_axi_deformable_solide/.CVisu1 ------------------------------------------------------- | temps cpu : 00:00:00.135 (processeur : 93.3%) - | temps systeme : 00:00:00.013 (processeur : 93.3%) + | temps systeme : 00:00:00.016 (processeur : 93.3%) | temps reel : 00:00:00.15 + | temps cpu : 00:00:00.282 (processeur : 58.7%) + | temps systeme : 00:00:00.090 (processeur : 58.7%) + | temps reel : 00:00:00.63 ------------------------------------------------------- -> comparaison .maple : ECHEC @@ -497,9 +512,12 @@ ./Batterie/FONCTION_UNIQUE/FONCTIONS_ET_COURBES/Test_R_Fonc_scal_combinees_nD/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:00.105 (processeur : 91.6%) - | temps systeme : 00:00:00.016 (processeur : 91.6%) - | temps reel : 00:00:00.12 + | temps cpu : 00:00:00.115 (processeur : 92.8%) + | temps systeme : 00:00:00.025 (processeur : 92.8%) + | temps reel : 00:00:00.14 + | temps cpu : 00:00:00.211 (processeur : 52.6%) + | temps systeme : 00:00:00.093 (processeur : 52.6%) + | temps reel : 00:00:00.57 ------------------------------------------------------- -> comparaison .maple : OK (pour toutes les grandeurs testees) @@ -508,9 +526,12 @@ ./Batterie/FONCTION_UNIQUE/FONCTIONS_ET_COURBES/Test_R_fonction_nD/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:00.056 (processeur : 83.3%) - | temps systeme : 00:00:00.009 (processeur : 83.3%) - | temps reel : 00:00:00.06 + | temps cpu : 00:00:00.058 (processeur : 85.7%) + | temps systeme : 00:00:00.013 (processeur : 85.7%) + | temps reel : 00:00:00.07 + | temps cpu : 00:00:00.153 (processeur : 45.8%) + | temps systeme : 00:00:00.075 (processeur : 45.8%) + | temps reel : 00:00:00.48 ------------------------------------------------------- -> comparaison .maple : OK (pour toutes les grandeurs testees) @@ -518,43 +539,18 @@ ./Batterie/FONCTION_UNIQUE/FONCTIONS_ET_COURBES/Test_R_fonction_nD/.CVisu2 - ------------------------------------------------------- - | temps cpu : 00:00:00.010 (processeur : 100.0%) - | temps systeme : 00:00:00.003 (processeur : 100.0%) - | temps reel : 00:00:00.01 - ------------------------------------------------------- - - -> comparaison .maple : OK (pour toutes les grandeurs testees) - - - -./Batterie/FONCTION_UNIQUE/FONCTIONS_ET_COURBES/Test_R_fonction_nD/.CVisu3 - ------------------------------------------------------- - | temps cpu : 00:00:00.009 (processeur : 0.0%) - | temps systeme : 00:00:00.002 (processeur : 0.0%) - | temps reel : 00:00:00.01 - ------------------------------------------------------- - - -> comparaison .maple : OK (pour toutes les grandeurs testees) - - - -./Batterie/FONCTION_UNIQUE/FONCTIONS_ET_COURBES/Test_R_fonction_nD/.CVisu4 - ------------------------------------------------------- - | temps cpu : 00:00:00.011 (processeur : 100.0%) - | temps systeme : 00:00:00.003 (processeur : 100.0%) - | temps reel : 00:00:00.01 - ------------------------------------------------------- - - -> comparaison .maple : OK (pour toutes les grandeurs testees) + -> ECHEC : le calcul a produit le message d erreur suivant : erreur (Sortie) detectee ./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/CP_venant_du_3D/Test_R_loi_3DCP_FAVIER_MAXWELL/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:04.618 (processeur : 99.7%) - | temps systeme : 00:00:00.030 (processeur : 99.7%) - | temps reel : 00:00:04.65 + | temps cpu : 00:00:04.845 (processeur : 99.5%) + | temps systeme : 00:00:00.039 (processeur : 99.5%) + | temps reel : 00:00:04.89 + | temps cpu : 00:00:05.003 (processeur : 94.8%) + | temps systeme : 00:00:00.127 (processeur : 94.8%) + | temps reel : 00:00:05.40 ------------------------------------------------------- -> comparaison .maple : OK (pour toutes les grandeurs testees) @@ -562,21 +558,18 @@ ./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/CP_venant_du_3D/Test_R_loi_3DCP_FAVIER_MAXWELL/.CVisu2 - ------------------------------------------------------- - | temps cpu : 00:00:04.950 (processeur : 100.0%) - | temps systeme : 00:00:00.030 (processeur : 100.0%) - | temps reel : 00:00:04.98 - ------------------------------------------------------- - - -> comparaison .maple : OK (pour toutes les grandeurs testees) + -> ECHEC : le calcul a produit le message d erreur suivant : erreur (Sortie) detectee ./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/CP_venant_du_3D/Test_R_quadrangle_isohyper3dorgeas1_CP_traction/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:00.089 (processeur : 88.8%) - | temps systeme : 00:00:00.009 (processeur : 88.8%) - | temps reel : 00:00:00.09 + | temps cpu : 00:00:00.089 (processeur : 80.0%) + | temps systeme : 00:00:00.009 (processeur : 80.0%) + | temps reel : 00:00:00.10 + | temps cpu : 00:00:00.176 (processeur : 46.9%) + | temps systeme : 00:00:00.063 (processeur : 46.9%) + | temps reel : 00:00:00.49 ------------------------------------------------------- -> comparaison .maple : OK (pour toutes les grandeurs testees) @@ -585,9 +578,12 @@ ./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/HYPO_ELAS/Test_R_HYPO_ELAS2D_C_traction/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:00.048 (processeur : 80.0%) - | temps systeme : 00:00:00.008 (processeur : 80.0%) + | temps cpu : 00:00:00.045 (processeur : 80.0%) + | temps systeme : 00:00:00.009 (processeur : 80.0%) | temps reel : 00:00:00.05 + | temps cpu : 00:00:00.137 (processeur : 42.2%) + | temps systeme : 00:00:00.066 (processeur : 42.2%) + | temps reel : 00:00:00.45 ------------------------------------------------------- -> comparaison .maple : OK (pour toutes les grandeurs testees) @@ -596,9 +592,12 @@ ./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/HYPO_ELAS/Test_R_HYPO_ELAS3D_LOI_CONTRAINTES_PLANES_traction/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:00.059 (processeur : 83.3%) + | temps cpu : 00:00:00.054 (processeur : 83.3%) | temps systeme : 00:00:00.009 (processeur : 83.3%) | temps reel : 00:00:00.06 + | temps cpu : 00:00:00.144 (processeur : 43.4%) + | temps systeme : 00:00:00.067 (processeur : 43.4%) + | temps reel : 00:00:00.46 ------------------------------------------------------- -> comparaison .maple : OK (pour toutes les grandeurs testees) @@ -607,9 +606,12 @@ ./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/HYPO_ELAS/Test_R_HYPO_ELAS3D_traction/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:00.084 (processeur : 88.8%) + | temps cpu : 00:00:00.081 (processeur : 88.8%) | temps systeme : 00:00:00.009 (processeur : 88.8%) | temps reel : 00:00:00.09 + | temps cpu : 00:00:00.170 (processeur : 46.9%) + | temps systeme : 00:00:00.065 (processeur : 46.9%) + | temps reel : 00:00:00.49 ------------------------------------------------------- -> comparaison .maple : OK (pour toutes les grandeurs testees) @@ -618,9 +620,12 @@ ./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/ISOHYPER3DFAVIER3/Test_R_cube_ISOHYPER3DFAVIER3_cisaillement/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:00.076 (processeur : 87.5%) - | temps systeme : 00:00:00.008 (processeur : 87.5%) + | temps cpu : 00:00:00.071 (processeur : 100.0%) + | temps systeme : 00:00:00.010 (processeur : 100.0%) | temps reel : 00:00:00.08 + | temps cpu : 00:00:00.163 (processeur : 45.8%) + | temps systeme : 00:00:00.067 (processeur : 45.8%) + | temps reel : 00:00:00.48 ------------------------------------------------------- -> comparaison .maple : OK (pour toutes les grandeurs testees) @@ -629,9 +634,12 @@ ./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/ISOHYPER3DFAVIER3/Test_R_cube_ISOHYPER3DFAVIER3_traction/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:00.096 (processeur : 90.0%) - | temps systeme : 00:00:00.009 (processeur : 90.0%) - | temps reel : 00:00:00.10 + | temps cpu : 00:00:00.101 (processeur : 100.0%) + | temps systeme : 00:00:00.011 (processeur : 100.0%) + | temps reel : 00:00:00.11 + | temps cpu : 00:00:00.190 (processeur : 49.0%) + | temps systeme : 00:00:00.069 (processeur : 49.0%) + | temps reel : 00:00:00.51 ------------------------------------------------------- -> comparaison .maple : OK (pour toutes les grandeurs testees) @@ -643,6 +651,9 @@ | temps cpu : 00:00:00.020 (processeur : 100.0%) | temps systeme : 00:00:00.004 (processeur : 100.0%) | temps reel : 00:00:00.02 + | temps cpu : 00:00:00.114 (processeur : 39.5%) + | temps systeme : 00:00:00.066 (processeur : 39.5%) + | temps reel : 00:00:00.43 ------------------------------------------------------- -> comparaison .maple : OK (pour toutes les grandeurs testees) @@ -651,9 +662,12 @@ ./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/LOI_VIA_UMAT/Test_R_LOI_VIA_UMAT_1/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:00.067 (processeur : 77.7%) - | temps systeme : 00:00:00.016 (processeur : 77.7%) + | temps cpu : 00:00:00.063 (processeur : 77.7%) + | temps systeme : 00:00:00.017 (processeur : 77.7%) | temps reel : 00:00:00.09 + | temps cpu : 00:00:00.153 (processeur : 44.8%) + | temps systeme : 00:00:00.072 (processeur : 44.8%) + | temps reel : 00:00:00.49 ------------------------------------------------------- -> comparaison .maple : OK (pour toutes les grandeurs testees) @@ -663,8 +677,11 @@ ./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/LOI_VIA_UMAT/Test_R_LOI_VIA_UMAT_THERMO_DEPENDANTE/.CVisu1 ------------------------------------------------------- | temps cpu : 00:00:00.068 (processeur : 70.0%) - | temps systeme : 00:00:00.017 (processeur : 70.0%) + | temps systeme : 00:00:00.018 (processeur : 70.0%) | temps reel : 00:00:00.10 + | temps cpu : 00:00:00.157 (processeur : 44.0%) + | temps systeme : 00:00:00.075 (processeur : 44.0%) + | temps reel : 00:00:00.50 ------------------------------------------------------- -> comparaison .maple : OK (pour toutes les grandeurs testees) @@ -673,9 +690,12 @@ ./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/MAXWELL3D/Test_R_cube_MAXWELL3D_traction_relaxation/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:00.710 (processeur : 98.6%) - | temps systeme : 00:00:00.019 (processeur : 98.6%) - | temps reel : 00:00:00.73 + | temps cpu : 00:00:00.714 (processeur : 98.6%) + | temps systeme : 00:00:00.023 (processeur : 98.6%) + | temps reel : 00:00:00.74 + | temps cpu : 00:00:00.803 (processeur : 77.1%) + | temps systeme : 00:00:00.081 (processeur : 77.1%) + | temps reel : 00:00:01.14 ------------------------------------------------------- -> comparaison .maple : OK (pour toutes les grandeurs testees) @@ -684,9 +704,12 @@ ./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/MOONEY_RIVLIN_3D/Test_R_cube_MOONEY_RIVLIN_3D_cisaillement/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:00.057 (processeur : 83.3%) - | temps systeme : 00:00:00.008 (processeur : 83.3%) + | temps cpu : 00:00:00.057 (processeur : 100.0%) + | temps systeme : 00:00:00.010 (processeur : 100.0%) | temps reel : 00:00:00.06 + | temps cpu : 00:00:00.151 (processeur : 44.6%) + | temps systeme : 00:00:00.069 (processeur : 44.6%) + | temps reel : 00:00:00.47 ------------------------------------------------------- -> comparaison .maple : OK (pour toutes les grandeurs testees) @@ -695,9 +718,12 @@ ./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/MOONEY_RIVLIN_3D/Test_R_cube_MOONEY_RIVLIN_3D_traction/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:00.076 (processeur : 87.5%) - | temps systeme : 00:00:00.008 (processeur : 87.5%) + | temps cpu : 00:00:00.071 (processeur : 100.0%) + | temps systeme : 00:00:00.010 (processeur : 100.0%) | temps reel : 00:00:00.08 + | temps cpu : 00:00:00.163 (processeur : 45.8%) + | temps systeme : 00:00:00.069 (processeur : 45.8%) + | temps reel : 00:00:00.48 ------------------------------------------------------- -> comparaison .maple : OK (pour toutes les grandeurs testees) @@ -706,9 +732,12 @@ ./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/Orgeas/Test_R_cube_isohyperd3dorgeas1_traction/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:00.174 (processeur : 94.4%) - | temps systeme : 00:00:00.008 (processeur : 94.4%) + | temps cpu : 00:00:00.175 (processeur : 100.0%) + | temps systeme : 00:00:00.010 (processeur : 100.0%) | temps reel : 00:00:00.18 + | temps cpu : 00:00:00.266 (processeur : 55.1%) + | temps systeme : 00:00:00.066 (processeur : 55.1%) + | temps reel : 00:00:00.58 ------------------------------------------------------- -> comparaison .maple : OK (pour toutes les grandeurs testees) @@ -717,9 +746,12 @@ ./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/Test_R_barre_PRANDTL_REUSS1D_traction/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:00.009 (processeur : 0.0%) - | temps systeme : 00:00:00.003 (processeur : 0.0%) - | temps reel : 00:00:00.01 + | temps cpu : 00:00:00.014 (processeur : 50.0%) + | temps systeme : 00:00:00.005 (processeur : 50.0%) + | temps reel : 00:00:00.02 + | temps cpu : 00:00:00.107 (processeur : 38.0%) + | temps systeme : 00:00:00.063 (processeur : 38.0%) + | temps reel : 00:00:00.42 ------------------------------------------------------- -> comparaison .maple : OK (pour toutes les grandeurs testees) @@ -728,9 +760,12 @@ ./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/Test_R_cube_ISOHYPERBULK3_compression_hydrostatique/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:00.077 (processeur : 87.5%) - | temps systeme : 00:00:00.009 (processeur : 87.5%) - | temps reel : 00:00:00.08 + | temps cpu : 00:00:00.068 (processeur : 85.7%) + | temps systeme : 00:00:00.009 (processeur : 85.7%) + | temps reel : 00:00:00.07 + | temps cpu : 00:00:00.158 (processeur : 43.7%) + | temps systeme : 00:00:00.065 (processeur : 43.7%) + | temps reel : 00:00:00.48 ------------------------------------------------------- -> comparaison .maple : OK (pour toutes les grandeurs testees) @@ -739,9 +774,12 @@ ./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/Test_R_dilatation_thermique_LOI_ADDITIVE/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:00.096 (processeur : 90.0%) - | temps systeme : 00:00:00.008 (processeur : 90.0%) + | temps cpu : 00:00:00.094 (processeur : 90.0%) + | temps systeme : 00:00:00.009 (processeur : 90.0%) | temps reel : 00:00:00.10 + | temps cpu : 00:00:00.187 (processeur : 48.0%) + | temps systeme : 00:00:00.065 (processeur : 48.0%) + | temps reel : 00:00:00.50 ------------------------------------------------------- -> comparaison .maple : OK (pour toutes les grandeurs testees) @@ -750,9 +788,12 @@ ./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/Test_R_dilatation_thermique_LOI_ADDITIVE_MELANGES/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:00.101 (processeur : 90.9%) + | temps cpu : 00:00:00.102 (processeur : 90.9%) | temps systeme : 00:00:00.008 (processeur : 90.9%) | temps reel : 00:00:00.11 + | temps cpu : 00:00:00.191 (processeur : 49.0%) + | temps systeme : 00:00:00.063 (processeur : 49.0%) + | temps reel : 00:00:00.51 ------------------------------------------------------- -> comparaison .maple : OK (pour toutes les grandeurs testees) @@ -761,9 +802,12 @@ ./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/Test_R_dilatation_thermique_LOI_ADDITIVE_MELANGES_2/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:00.124 (processeur : 92.3%) - | temps systeme : 00:00:00.008 (processeur : 92.3%) + | temps cpu : 00:00:00.119 (processeur : 84.6%) + | temps systeme : 00:00:00.008 (processeur : 84.6%) | temps reel : 00:00:00.13 + | temps cpu : 00:00:00.209 (processeur : 49.0%) + | temps systeme : 00:00:00.064 (processeur : 49.0%) + | temps reel : 00:00:00.53 ------------------------------------------------------- -> comparaison .maple : OK (pour toutes les grandeurs testees) @@ -772,9 +816,12 @@ ./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/Test_R_dilatation_thermique_LOI_ADDITIVE_MELANGES_3/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:00.140 (processeur : 93.3%) - | temps systeme : 00:00:00.009 (processeur : 93.3%) - | temps reel : 00:00:00.15 + | temps cpu : 00:00:00.137 (processeur : 100.0%) + | temps systeme : 00:00:00.010 (processeur : 100.0%) + | temps reel : 00:00:00.14 + | temps cpu : 00:00:00.226 (processeur : 51.8%) + | temps systeme : 00:00:00.065 (processeur : 51.8%) + | temps reel : 00:00:00.54 ------------------------------------------------------- -> OK (pas de verification pour ce test) @@ -783,9 +830,12 @@ ./Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/Test_R_dilatation_thermique_LOI_DES_MELANGES/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:00.101 (processeur : 90.9%) - | temps systeme : 00:00:00.008 (processeur : 90.9%) + | temps cpu : 00:00:00.101 (processeur : 100.0%) + | temps systeme : 00:00:00.010 (processeur : 100.0%) | temps reel : 00:00:00.11 + | temps cpu : 00:00:00.189 (processeur : 47.0%) + | temps systeme : 00:00:00.066 (processeur : 47.0%) + | temps reel : 00:00:00.51 ------------------------------------------------------- -> comparaison .maple : OK (pour toutes les grandeurs testees) @@ -802,9 +852,12 @@ ./Batterie/FONCTION_UNIQUE/SORTIES/Test_R_non_dynamique_suite_point_info/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:00.103 (processeur : 100.0%) - | temps systeme : 00:00:00.010 (processeur : 100.0%) + | temps cpu : 00:00:00.097 (processeur : 90.9%) + | temps systeme : 00:00:00.011 (processeur : 90.9%) | temps reel : 00:00:00.11 + | temps cpu : 00:00:00.188 (processeur : 47.0%) + | temps systeme : 00:00:00.067 (processeur : 47.0%) + | temps reel : 00:00:00.51 ------------------------------------------------------- -> resultat .verif : OK (resultat fourni par le script de verification non_dynamique_suite_point_info.verif1) @@ -813,9 +866,12 @@ ./Batterie/FONCTION_UNIQUE/SORTIES/Test_R_post_trait_defs-log-Almansi-Green_Lagrange/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:00.010 (processeur : 100.0%) - | temps systeme : 00:00:00.003 (processeur : 100.0%) - | temps reel : 00:00:00.01 + | temps cpu : 00:00:00.015 (processeur : 50.0%) + | temps systeme : 00:00:00.004 (processeur : 50.0%) + | temps reel : 00:00:00.02 + | temps cpu : 00:00:00.111 (processeur : 39.5%) + | temps systeme : 00:00:00.064 (processeur : 39.5%) + | temps reel : 00:00:00.43 ------------------------------------------------------- -> comparaison .maple : OK (pour toutes les grandeurs testees) @@ -824,9 +880,12 @@ ./Batterie/FONCTION_UNIQUE/SORTIES/Test_R_sortie_contrainte_individuelle_a_chaque_loi_a_t_1/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:00.083 (processeur : 88.8%) - | temps systeme : 00:00:00.009 (processeur : 88.8%) - | temps reel : 00:00:00.09 + | temps cpu : 00:00:00.077 (processeur : 87.5%) + | temps systeme : 00:00:00.008 (processeur : 87.5%) + | temps reel : 00:00:00.08 + | temps cpu : 00:00:00.171 (processeur : 46.9%) + | temps systeme : 00:00:00.067 (processeur : 46.9%) + | temps reel : 00:00:00.49 ------------------------------------------------------- -> comparaison .maple : OK (pour toutes les grandeurs testees) @@ -835,9 +894,12 @@ ./Batterie/FONCTION_UNIQUE/SORTIES/Test_R_sortie_suite_point_info/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:00.174 (processeur : 100.0%) - | temps systeme : 00:00:00.011 (processeur : 100.0%) - | temps reel : 00:00:00.18 + | temps cpu : 00:00:00.176 (processeur : 94.7%) + | temps systeme : 00:00:00.016 (processeur : 94.7%) + | temps reel : 00:00:00.19 + | temps cpu : 00:00:00.271 (processeur : 56.6%) + | temps systeme : 00:00:00.073 (processeur : 56.6%) + | temps reel : 00:00:00.60 ------------------------------------------------------- -> comparaison .maple : OK (pour toutes les grandeurs testees) @@ -846,9 +908,12 @@ ./Batterie/FONCTION_UNIQUE/TYPE_CHARGEMENT/Force_ponctuelle/Test_R_1D_constant/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:00.008 (processeur : 0.0%) - | temps systeme : 00:00:00.003 (processeur : 0.0%) + | temps cpu : 00:00:00.007 (processeur : 0.0%) + | temps systeme : 00:00:00.002 (processeur : 0.0%) | temps reel : 00:00:00.01 + | temps cpu : 00:00:00.099 (processeur : 36.5%) + | temps systeme : 00:00:00.062 (processeur : 36.5%) + | temps reel : 00:00:00.41 ------------------------------------------------------- -> comparaison .maple : OK (pour toutes les grandeurs testees) @@ -857,9 +922,12 @@ ./Batterie/FONCTION_UNIQUE/TYPE_CHARGEMENT/VOLUMIQUE/Test_R_chargement_VOLUMIQUE_3D/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:00.042 (processeur : 80.0%) - | temps systeme : 00:00:00.008 (processeur : 80.0%) + | temps cpu : 00:00:00.041 (processeur : 80.0%) + | temps systeme : 00:00:00.007 (processeur : 80.0%) | temps reel : 00:00:00.05 + | temps cpu : 00:00:00.132 (processeur : 42.2%) + | temps systeme : 00:00:00.067 (processeur : 42.2%) + | temps reel : 00:00:00.45 ------------------------------------------------------- -> comparaison .maple : OK (pour toutes les grandeurs testees) @@ -868,9 +936,12 @@ ./Batterie/FONCTION_UNIQUE/TYPE_CHARGEMENT/VOLUMIQUE/Test_R_chargement_VOLUMIQUE_3D/.CVisu2 ------------------------------------------------------- - | temps cpu : 00:00:00.046 (processeur : 80.0%) - | temps systeme : 00:00:00.009 (processeur : 80.0%) - | temps reel : 00:00:00.05 + | temps cpu : 00:00:00.039 (processeur : 75.0%) + | temps systeme : 00:00:00.007 (processeur : 75.0%) + | temps reel : 00:00:00.04 + | temps cpu : 00:00:00.129 (processeur : 40.9%) + | temps systeme : 00:00:00.062 (processeur : 40.9%) + | temps reel : 00:00:00.44 ------------------------------------------------------- -> comparaison .maple : OK (pour toutes les grandeurs testees) @@ -879,9 +950,12 @@ ./Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_chung_lee_dynamique_explicite/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:01.329 (processeur : 99.2%) - | temps systeme : 00:00:00.044 (processeur : 99.2%) - | temps reel : 00:00:01.37 + | temps cpu : 00:00:01.389 (processeur : 98.6%) + | temps systeme : 00:00:00.049 (processeur : 98.6%) + | temps reel : 00:00:01.44 + | temps cpu : 00:00:01.478 (processeur : 85.3%) + | temps systeme : 00:00:00.103 (processeur : 85.3%) + | temps reel : 00:00:01.84 ------------------------------------------------------- -> comparaison .maple : OK (pour toutes les grandeurs testees) @@ -890,9 +964,12 @@ ./Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_dynamique_explicite/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:01.259 (processeur : 99.2%) - | temps systeme : 00:00:00.042 (processeur : 99.2%) - | temps reel : 00:00:01.30 + | temps cpu : 00:00:01.303 (processeur : 99.2%) + | temps systeme : 00:00:00.046 (processeur : 99.2%) + | temps reel : 00:00:01.35 + | temps cpu : 00:00:01.393 (processeur : 85.1%) + | temps systeme : 00:00:00.102 (processeur : 85.1%) + | temps reel : 00:00:01.75 ------------------------------------------------------- -> comparaison .maple : ECHEC @@ -970,9 +1047,12 @@ ./Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_dynamique_relaxation_dynam/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:00.648 (processeur : 90.5%) - | temps systeme : 00:00:00.036 (processeur : 90.5%) - | temps reel : 00:00:00.74 + | temps cpu : 00:00:00.658 (processeur : 97.1%) + | temps systeme : 00:00:00.029 (processeur : 97.1%) + | temps reel : 00:00:00.69 + | temps cpu : 00:00:00.754 (processeur : 76.3%) + | temps systeme : 00:00:00.090 (processeur : 76.3%) + | temps reel : 00:00:01.10 ------------------------------------------------------- -> comparaison .maple : ECHEC @@ -1007,9 +1087,12 @@ ./Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_dynamique_relaxation_dynam_visco/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:04.969 (processeur : 60.1%) - | temps systeme : 00:00:00.216 (processeur : 60.1%) - | temps reel : 00:00:08.60 + | temps cpu : 00:00:04.594 (processeur : 57.9%) + | temps systeme : 00:00:00.185 (processeur : 57.9%) + | temps reel : 00:00:08.23 + | temps cpu : 00:00:04.685 (processeur : 57.0%) + | temps systeme : 00:00:00.243 (processeur : 57.0%) + | temps reel : 00:00:08.63 ------------------------------------------------------- -> comparaison .maple : ECHEC @@ -1044,9 +1127,12 @@ ./Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_non_dynamique/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:00.068 (processeur : 75.0%) - | temps systeme : 00:00:00.009 (processeur : 75.0%) - | temps reel : 00:00:00.08 + | temps cpu : 00:00:00.066 (processeur : 100.0%) + | temps systeme : 00:00:00.010 (processeur : 100.0%) + | temps reel : 00:00:00.07 + | temps cpu : 00:00:00.157 (processeur : 43.7%) + | temps systeme : 00:00:00.066 (processeur : 43.7%) + | temps reel : 00:00:00.48 ------------------------------------------------------- -> comparaison .maple : OK (pour toutes les grandeurs testees) @@ -1055,9 +1141,12 @@ ./Batterie/FONCTION_UNIQUE/TYPE_DE_CALCUL/Test_R_zhai_dynamique_explicite/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:02.373 (processeur : 100.0%) - | temps systeme : 00:00:00.071 (processeur : 100.0%) - | temps reel : 00:00:02.44 + | temps cpu : 00:00:02.553 (processeur : 99.2%) + | temps systeme : 00:00:00.089 (processeur : 99.2%) + | temps reel : 00:00:02.65 + | temps cpu : 00:00:02.645 (processeur : 90.8%) + | temps systeme : 00:00:00.148 (processeur : 90.8%) + | temps reel : 00:00:03.06 ------------------------------------------------------- -> comparaison .maple : ECHEC @@ -1125,9 +1214,12 @@ ./Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-elements-supperposes/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:00.041 (processeur : 80.0%) - | temps systeme : 00:00:00.008 (processeur : 80.0%) - | temps reel : 00:00:00.05 + | temps cpu : 00:00:00.037 (processeur : 75.0%) + | temps systeme : 00:00:00.008 (processeur : 75.0%) + | temps reel : 00:00:00.04 + | temps cpu : 00:00:00.127 (processeur : 40.0%) + | temps systeme : 00:00:00.066 (processeur : 40.0%) + | temps reel : 00:00:00.45 ------------------------------------------------------- -> resultat .verif : ECHEC (resultat fourni par le script de verification fusion_elements_supperposes.verif1) @@ -1136,9 +1228,12 @@ ./Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-maillage/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:00.038 (processeur : 75.0%) - | temps systeme : 00:00:00.006 (processeur : 75.0%) - | temps reel : 00:00:00.04 + | temps cpu : 00:00:00.043 (processeur : 100.0%) + | temps systeme : 00:00:00.010 (processeur : 100.0%) + | temps reel : 00:00:00.05 + | temps cpu : 00:00:00.137 (processeur : 43.4%) + | temps systeme : 00:00:00.071 (processeur : 43.4%) + | temps reel : 00:00:00.46 ------------------------------------------------------- -> resultat .verif : OK (resultat fourni par le script de verification fusion_maillage.verif1) @@ -1147,9 +1242,12 @@ ./Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_fusion-noeuds-voisins/.CVisu1 ------------------------------------------------------- - | temps cpu : 00:00:00.040 (processeur : 100.0%) - | temps systeme : 00:00:00.007 (processeur : 100.0%) + | temps cpu : 00:00:00.038 (processeur : 75.0%) + | temps systeme : 00:00:00.009 (processeur : 75.0%) | temps reel : 00:00:00.04 + | temps cpu : 00:00:00.130 (processeur : 42.2%) + | temps systeme : 00:00:00.066 (processeur : 42.2%) + | temps reel : 00:00:00.45 ------------------------------------------------------- -> resultat .verif : OK (resultat fourni par le script de verification fusion_noeuds_voisins.verif1) @@ -1159,9 +1257,26 @@ ./Batterie/FONCTION_UNIQUE/UTILITAIRES/Test_R_suppression-noeuds-non-references/.CVisu1 ------------------------------------------------------- | temps cpu : 00:00:00.037 (processeur : 75.0%) - | temps systeme : 00:00:00.007 (processeur : 75.0%) + | temps systeme : 00:00:00.008 (processeur : 75.0%) | temps reel : 00:00:00.04 + | temps cpu : 00:00:00.129 (processeur : 40.0%) + | temps systeme : 00:00:00.069 (processeur : 40.0%) + | temps reel : 00:00:00.45 ------------------------------------------------------- -> resultat .verif : OK (resultat fourni par le script de verification suppression_noeuds_non_references.verif1) + + +./Test_R_BPL3/.CVisu1 + ------------------------------------------------------- + | temps cpu : 00:07:33.988 (processeur : 99.5%) + | temps systeme : 00:00:03.913 (processeur : 99.5%) + | temps reel : 00:07:40.03 + | temps cpu : 00:07:34.081 (processeur : 99.4%) + | temps systeme : 00:00:03.973 (processeur : 99.4%) + | temps reel : 00:07:40.44 + ------------------------------------------------------- + + -> comparaison .maple : OK (pour toutes les grandeurs testees) + diff --git a/doc_procedure_verification.pdf b/doc_procedure_verification.pdf index a08ac1e96591e498779c904489525f4dbcd414b6..11d933c943a13b2036eee25266098b22d56fb97e 100644 GIT binary patch delta 17459 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 Ica=#0KQ2JsWdHyG delta 15563 zcma)icRba7|9?hyDIzi=dz7;WB74i;dlN!7IVF2%bSNq-d+)4d6OvgWduNNx->2)o zzu)`1&iOtbzx({-czxdQ*L=R#IcL1!(x=o*PbvvUH!+6#u}qy;15Am*(uyR&{qty*ZZ(LcVr@HG_5+GLz9ejQsNRD)_QM%`=}wWxaRN^iO#aOY&Y z(ny~iQ-m>g5*i3F6917}Aps&WE&k!$pXBlE!1**#G$6wAXCut_)b~;Un27&}#-&f~ zLYFMRFnXINKLxjrjk$7l?i~dd?um*mn#@v>{DAiDA4Np1_?Ea*4Ks99{7zg{;^Y;V zX8RbKLPl%5|6(dy>v#OPy|R}Ouli_f!L7ORdMOc1_kKnAt)FRH6e(|>?}RiUcly3| z9amn;ez5~0Te*8CXLox1OXM?EKV;;J36;s)K*u*vAyh#d2Uf}h6&!PG{f7}z0>wkW zzcF=7bKcf9uq0*wDXnidCg#Qj6BH4iB&h8$4=jhgD(@Wo5w+^X5!&w>XrXLZzqort zzON4U7Blm$sK4$;qK25pRd3&53hr9BwI7a&S4#swxi1hl*Qlm!-Mwj5tT=Fk;sI#~ ztz6+jPr?3urevFI{_|@;TCaptWHB^-6BGV^w$ZsheylLQaw-4`=?fx`PYLt9@a5WN zy#ZSAQ%0c<1-H`+q4bAVqa}*<=?;iHvg_i-vimHUSiagmkJI;Bqh59FY+O@oFLmqX zUz(w{n>&22cgd|~-_pwAGL5e*TBy~VShaZ8p!KD0y>{m0_Q~KguREcIA1S;$y7u1F z7=<{cgx=3J;q~a=n@(i9#6DK}yRqkNWn%~}H=eQ=Af0wtMfr=CjyqsOV)vLB{8s)+ z720%J1T&_d>?tkkHf(3R;y&1486DctUxn=nk}ThIHCw_kpc?Y_F4FmAs4_8ZlW z=L=7m-j<#pZ)fKR~<)!q0}pMUiio>IGIkV`GhFLx;AtI zg0=H6;&{9sHk~gu8)>a0fRHcfj1DlMP5aF-!5r0V$8CmnVf9Z9cZj^){*kI!?XLQR z!D!Lj=qb?b9yb=Dxjsf4f-ttbc*aZIdtj zf?Q?~!<=gG@Y}dBzug^~7g%{UJh(9{M%HGs-Bm(zculd%^v!<^|lmrQ>%-4+Xny6&(Mi3OBddWqpsXri>$hr&w`Z1Fbpmnb>elrBWzFGQc32k;vP*=tyadd zKgV1Ny}+B2WuTWHOju|KF|vD7*sHfwYH|7~stc|B?xlevC|W#D=2zW&HmBqu|J3ry zp0&Q&%eH~a``@RSk4}EDQFcZT5mt$(M&}t_UzQ+>Ix~8wJj}B}Y1JKb=&3WgRF}-u zeg!j~k(^2<5v@@^beQo>4V$*KXB=U4e^DM{xNB_N*UMq&H=54w=6h1A-ywTB-r8-J z+~X@l3Td-jaqZ1yzJyv@(N<=;=>7J0Z?l+!hR<@{xftz}isv5%vZf^$Gi<$fe77j; z+H`|z+v|LH!g@ySipx`Cd75{%6#Dy434`1ij%#fXQ^O6dMZ>R>LRbq0pI&DZnQ6H< zHX55jB5eKayLw!Z1Vg1(>Z0`>sh^;&Nch_ImKCGU+sxk8)K-y?KVsTOtgvf9^>wJt_ zywe4NEC|i69KOlRW<5{+805s>Q0`GCC9+P|+{u++&!|fpjkB_&jbzHVJeJ8^F}s`1 ziwTc1{224myGes}hm*&3K%^iFwbP)>_}ogYDC)Dv-npE$boe;pl|dr=GfyvLMsmg} z-j0Nx58VX~VzZMxY3TEH(VV++&CeTsul{@*L1i1aGXOs&<+L+G|9WT8Gcnvu%3x9tYgV?$Dc zUAGJEQLHIrlXdTTXItd6es5lrx%CA}gQ57&UN|#8T_lv|5+W%3#wIyGaATQS#r~Iv z829vrilo8R2%7~Msb5uLHzB0Kr$wq!@U4cD_`)-o^NK!yk;Vki3*D*)Cc40>mwUf4 z3H{7Bax{837K-*J^KJYHCFRA*vQ-t|vzHA0(h+q|og>*_QCp~M(I4Ql$(7_f=RD~< zNdVoswj_H_>?&0&`AFk2NyS_>hEP#n#@jmA zcNqGs&OS`GC$dV_eqF0xufr6t zH-txf60O-;X7>&|iqo^lxtm^G+q$O2viUul^hTt5#{tcR{Hp=Y8iE?~nTPtBQon8l zbneG2us$7nR{2XUX@(TCG0EiX)^;Lib#if=wbE^y6ms^!HjRfx_*}XpR%FkAM1MEd zN_pAdxAeJF9hjZOJ8aRI)Tua=?`a{X;?)a{Ff-|PmQJHNrtABX-HO}&RehDExtj@9 zmhjCMo(En6D)RI`@!T*6y~vlJ$JfklOCAdQ-4!#LHM0281$#)pf2EdCSh!4^BlHPJ zVy|Qi`LAasvi`E_H{w9|r0$tD6JK&t&b=dm7`nLl$@m$8^>3`z3HFN%ErX~-BqonU*DqZX2n!@?iVBop&tz zV{P2>y8IejHv}qk(?dNY)&^l8Tr`@8dUE;Zdr6ruHtKMK>XF4PGjU zzKuD%4;3<|eyT0Rwb;mt0y%cjcsMN7BDD=Ns1e!G)XKf| zBVCb9h%_fhb)Dtp9@lXS6~&n5%&Hkv&V7~q{^x!# z^nX7V^*no4neSmExyJYUyHo(-QU?t?FSzmX^F)6%rB{clihhpY0XTw690MCqU8!`W z*7kjgJ_0vi&R(dRecwQp#^GwE5Pc~EYCWMLa~pl1KBcUiq^Ej2H$H(4Y2w921Qk)qf;f1JN=d$&uIxc z8^0}`KOQ)^K%J5T-9&Hx^22O0U9}#HqzRXf4=&!=z--=!JoYzb;HL@Mrod^g#~uCLNkYeL zd%F2!I->07n0ZuEQLU~4ak0Y#-=X7!BbtkAwDWu%*Pq5bkZL&fx1#6-SNL0(e@>z0 zmX?u0WBf>hMMCAh`dn`;F)Z-xdbsbBA3T>mT6ZyGrV)H(w8A()XD60h@%zWexVN9l zQeuY(;Z~usu;h$fkKJcTL9(y4Aon3T^T@2oR&3V`S;5Gt9iux32I*U#(Nkq#Y)AS> z>PHXX|1R41qSm`!D`wX-?DdZN4cKC_>*?m@mvD^V9z)InB6e~XJQYx|TTM=DITf3B z4VjV=qFIp3I85dMhbP=nC`uR0n#!KYRUbBRfGwy-r;nR@|IqcHjiugcv!=MrYh>_iCa3iW^W$fFogsEf}%>Mjs_-^M6;2X zR1u?mDcvzQJ@Gc3(x4XeKB8TnYUI_b)PA;&`f2XhVdkC~4fRKP1jC}MmsV9ADB*EC zZ%Nb*`Cb^@XI3x8mqGeo+DIByy0S^b!OO$(>8`$`+H62}!Tx$05e%tw>T4Lkb zw;!`V@~!PX`M#gjSYt#G-aFHYEkf(q?@Y`Y%)h9&88yIr&(dE@eGfT9IIfmfn%7Ll z1RP)CnYD3&6bIFJQZHTK5&5lnCMS2Z^I6P~hPj>ouQPK&w?xv(7(aBd?Tv-62LH4; zRK|FJ;6IRIXQYrOx91}`jEwGMK`grwH+^7Z z5sD3U*6v0O&-LUut7m#mUI;L#V27Vy`lyCs-n`hmY>TB%L)e{8qL}Bnd`|h_KN6R) zzak+pVIe{2_MKuEEY-cc?QUeZ^dRX(bX}A-)v5PEy$Or$S6w+Nj9}+wJzIgAiN_98 zvJn}FIi(91r!1IQzFCLmyr7j%xqksnvIPlaWn%B(ZQ{M~ov)*^`kfS`vzW|X{zdk1 z49Rv~XibR|q@RE3eq!3)kS43*lBP&MSMMu#Y+ER&;wB1QC#$SGd+bHuZAs8un3c|7 zpS;$rB37K>UH+=)!U5H-XIJ;ynhe?Ef{{F8JW6@tmRqm9rw=SK=cmUv&Dlbcb1UnT zV$lN9^-B#RU^s^fuCq)=5&Wp{jAh1(R3rZ>U%+HPJot z`Nx6MyYh_z9k{)&L@R@T3w=oxNFucE9l_a#YD#y4V2ELP)wo7w2qN8aQnmm9a#7|0r%eRf>#b1H^KDn$2BCmmw? z)cFR(Twhb%VxY9Vd13!>ukI(UqPL3lQ^n9^8?AIGUsyIt@-R#AS6Q%QyT&Mg<;lv+ z&!f|xZ709x`KSU3h5~MseXumtfc%J3JZFBx;#V}gi)4Rs_xqId$(PdU(=w$O{;-Ej zH9WPfel($#G?C79G36KAd70?IeOKlCF*72S%^E8MLJ7Qag?WtH+HRfcdV!nnoZOw6 zu*BtQ(_ntIw=8mr4z_*3MVBl5;igPiU3RU+7mm~7t3A=Pl#|a#7^_)&cnjvgDia-F z2x;X^7G>$MAZ7jTnQC@%L6aPm6Q*rHfq_@I-Vz|11c!Z#ddrdHd6oI=>*xiVI*juY zPh_}=wCdcp;rPZ3!xiI)B3ju?u7^4bvAgDhTtn4g?p#>^rZOa+y5@U2NUd8kb#(Mu zS+~N2?c0T^w5C#|3D;CIp_AbFP?P-BL{Pp!t#jH!6LU4`!>)1ZgYnf2tJwU{v90IT zZAOnnA;WH54c3SWBz^1cPT`7~X$XdVw@g;gRf+0pX-II>LCND+36YRTsJ`OK6`!!Y zI|3!b^ZM1Ud4``2sL!7GRH)Mz1VjrBRF%8FC{zNSE714#8umcYYe@F9{ScS(v{E(UvlD@X zz(UO7$=%1)79Z#&nm=M@k$bOp52+P(=`x-vpT2%~^R>;xOTDw@8T?#1@}Uo!uSWG&4ZL4SH$^Vads-tN(LVXcLmPj219)P2%+ zR)Dm9lI3ymeqe<$BR0*L5e>v@PX@EU=)4sfqdiV}9H^Vb#nUyUXFq16&C)~m?Zz!X z9hoan4%)$2b)0KR)ZQDmzmDLiG8dU!yzc=EdtJt9u_jpgkeU=8ulwe~3i*rwJ)%07dLGy6F|)PT#74SQpPWZbvrxINU)G+_JM;bt%KZ3 z^tjn8g`AQ0N**|0)QSP-+LJFd*LpKwWD(~GBr6|Tg2q{^zSXY%G|*~&(|I4`_PF;; z!Shyv#H5mXjn5jMvYPi9VuZzbq{ZcGU;;kk{BpvHV?D_%(4nnY62s2KXxBbYJL_i8 z`e&iOO`-ImIvqL-2wN7dN4#=Hqqg=V?edZNgC@g*lh*?!)wWin;P%DpOqtkCNu}gi zG1L9570Ldl=10Qkw2a4BH8m|U)sA{vI?l|SZqK>0ZhukQU~0UW&0(|u>s|Gu=FQ-< z7lCJQjj7;ULi8Q2oz<5{i~~|^T(3`s?^nMaQ}9hiyf}+=*vX`8Wq0|-z%cC^>TZFPM<3=cIQ&6+x)7_CRQd@K!yy@UWm1S&=6C&YV}-gpVLsILLWnkxV5pd6qJ;a_uk&~T zcId=bsH-!lvu44Ui1^hs_90Bu(SGEby-OR*R|Q@oYvH$1rQK!h`J5{+`p^#1+}JDe ztI3cQ7{Xw2X#Vl+S9Y^qxY2#}-w{Duw`t#8EA!CEO3db))2JgmP|0^`Q#SVg+1*Vt z`>kdFDC!fTn2=OjxCY$B5Ax`$rnbHT#`@Z~kfryQo%Z7!-FC~QQU;_xUL1f_bYrk!lIK zlOC5szuWRrO5TtcPFh;holg`CvC;bIF5Pe@lbuz}#5+1962~vW*s(|a6Up42NPmOW(enxJi?L zpSSyd=Zg>i6PMH5J{AO(j0ZKU^U{FtV6^=Ls`>8*rtUe1Uo@v<`hdx^eBU@4J1o%# zbATWFq`y`CqPZk%m{fP!hda$A(I^M?HTX%4tr_pr54~zW>VnE7UOJ}X2I&XoH|52k z{h8!T%!iS*R2P0NdwJ9`YCm<;RxFIb7P~3{AN|^WT?$7s?lV>&8qS3e3=YVP!~Hmh zh9Ie6$-8A!2vDgDsvN^A)Y^MXYMb3(?QNMLK7`3yR+U60?bn9c9`hDULhMYylQ9>JG1S!cehoZI#sC-m5y~Poz&oG!Kfi8dOd>t$o=(5#gTE8@wF({nF3r zkvs1lgQ_}+Y}==QF}|99s;cWyUa{+AZ1m_vtWC7Z_f(?D;l35rR97RDPkV_3VU>S1 zv#9T3VU&|e!T8I?O-%Q(?(sq>o6T&-Ma^4o{+^q&3+yWryac~rgwFHSlgboHi6pNy z7qYpam$8%w=A0%$Cv~^)RWQ}Cig|5x&CKOo_NlFNI?x+HPMhlGTnvp(T&%3r*&WFa zUZ${Ml@!{0+8OAin#Mv_a^AN-!}P90)?2BSb%YM1;d1+c_&p}{7qrB;K8rlB%BZYz zuu9s1A>kp#a0EmvrC|J(UbiJVaRncjy?jjaHDT4K^LeZ8D*QhX0z8b?G_X%ypQ08m zmJihYm3E$I%`HE0r%00tNVIm17{{hZEc|jw$HAvhU4CqKdFZmXZ;F?V3e+ZWL*KOgJn;;=7b*$Wh2!moK@& z1(_8oG{f(u*dwV;4r!09Oqqmz0tEyoFvOEqLGAI*kCJB^G5usxQPZE>`&wq;D)X;O z7@<@vYR=UW6@2F-DlfMO`q_@s5@YDQcxs6sJ2Dkra7k=8y$yREk>)h>X7NFFt`*5sw`7!oAtr1iV6cKJ4fe3G>1l#tHP_oOk6)gDGR!ixaXZN5^LdV(*=}#cQu6kXckw=M(|5p|-t)}<@`5{b zT2}}5gGn9P$Is`M-h{R14=GuG(HPQD7vvBMFDwu!DimAraHnBa4p=8+QG4n=IP~L9 zfKr&B=wAym2D`eK{@ft5#6s&yn!eQr}9Z zytUzWs=_Bf3m211WW)WRyV>d(T>Vv{+nLwundyreins-3c}6|Za&?xPL+ddYJy}47 z!npZp@;32+BrIYl)kuYa-;955&)mGs?Q6$lCJYhj@+HB-P)EVvjuiB0mG)DYHyGu! zr4-N8nfoYFjrM-eX7}Tnq(@_$KVLH&eJB`G58*Z{>WSx|tN7ydvrsj3**t3yHsOOs zEtrBZ&l(l3Bh%k4-lOqVTBi8o{JL~vE2H5TYb`vl?B=jk?Ewi7cP;fn#yrL(KFR{FUy;b7aoi!0XVh@1+YT`e|YQ z*O>14n^2Jk4XyKy1mt-dO1jwyDq2ex%<{YavS#_lM14y%FX};3V#fPvvuigxf6IgD znk`sg#%7F+(=QT(Pztje4CTlbHS?x-3=7cxt6UN8H|NXdr#a2$>e4tLNHN_|Gv=!? zCDg*KEY%FMSdH&9P#0N_+UZ{}>LhSyW)bn++Li2h@@kwiytC$(SLNV?xeQ`WE3)*X zn_;$g<9s0o>=CzByCu!bUh6)%|caiQpodU?F=$1I?>wDUiRz zA5o63J-z>{L$&ptipbcfS7YxN54Uw%FFE)4Bh*bWdv?~3)zz(+U)#q zD0Q;Ib!_$bqhIwbB4wKsx{FDd-mtD2F*bNq*k{WyAv2;s%b~h-=9eC*gEbQkWFkU_ zgiK125^$z=oQD&jvjI9j~;I9%?sast1@I`Qo*d%qp?$JzU-)Wu?$ z@{=P)$rJ~-9!l@X58QzP1M(c9&fOUO!%v%CCrUxDyR`F*+oIBNmnGkgH&!4fJX}c)L(GvaoS-R}H^#!jy= zpe+h2PS$_^R#8>9?DEb|P<+D)v&tRPS%H*ZXvW}WPM$KXnt_gnkxAOwm7j~ROA5og zC4IWmvy2S$RQTlk7qYWAE}8fa5#%tL2w&~Ls_0mIxWJ@SqGUn7T z%wYT!1&c)mqOP?*!OrPh2j}xrfXfESpZ65PE~y`F+$?a5-^twXO0P637#QeM9ay;C zsT+41+vJ}U3AtUGA+L%-ne!B^UBoP+!}v~CqZWgbr7t_9_qix5U&>e35G>MOq>T3K zqGufs|H-X^G*|mIR2^5%)$T9wbOOV30VM<1Vdm+f|G*)=< zQSGe|?inpl}9d^_n}Lp6}dO6tga{4h;=*MQ#MyCty_vlTOaUK4#!# za~;IpK}xM2pUyw5DoG~=Z({Ble$LR0#y+gLn|{_Q8SY`1+21rXk5p5jKO;8euNta{h(ozvvjHt&-Fx(S#%QJ4csWCq9o%r-x)I(Q;yQGY2wPXARu#>Jp z?t-^tmwHD;53f(A#&33ZFS{hZOkuO#T8|+RByKIKKGY324%E@pyYQ$ArZcZV^*HKr zofsk_E}-$!=@H}ceopQ=0d@*WT_blyxG2I2GPgk@krp<$5g;V!HW+LJy$u3hx6N(9 z2n58^9E52nGRzq1gVI4PtX$!L&0zeo)8oSiAO`ikbh(NhX-&M3Bp$fh0hO( zfury=L?S_Wt_GvfcnYFG_(C9%Ki~iUdHu%_6c~>N1F-#TtO~bzwM8nZ|AVdRk!aWBAqi`*Tfna#p0z~{fbeR9R9|nT_!!>^d!$5$| zctYSXTm@kuGy-2R3Li%>B={fa0RKaPG=|{<4h9C}DFX#T@DL0GLlAh%fB`Cw(l9U_ zflot%h4G0f1TGd}5Wru!3?bO7vP8665GcMZ2n=5*2m&vvFbEPqGC*ZPVo~>qcrdsK zfR}NX)vIS;b{xSPktB_jl{Da@Z7)MY4X2$2?G@UN6`KN10eoAkNyG+435N$ zBMhjOxUPetP#~M;2K`r~isz<6dtL2x9l5EvW^!BrXthyDGWEFd57B^-g*p8!|l z)iW3zjqghYkUiL3DIyehU4n>?2*?KPp%l@dx{d(hMi+@d;$<@e1cT$AL&1>{+<+q> zNDxk5KtS;S1N?w3fNQz`SoR;6A)qikNFrbmD0Wzy2z3tuN8(`#0T_mh8w3za92!u# z5fH4h3=xVBjKJ$2Xw+Xx$^i5Rd}b&(7~2M1)B=M+xFrM)h5R3`MniGE0z;q?c#ube z;2^A;ED=f&2?62VKtiDSHvpeuD}fsTAn{rj3Mj(3T;Raigc~&k6pX@c5^yx|+bJBE zp`d`{acD3k4DlyG=zl~F3B&8XFeC!ME&~-Dg3Xd6Lh&JycsGzR6khJakk~7X#Cy{Lj%)1-Z>yvcr>6lVv`ks+=ZbL_>B&Yz#DpC zXe5wie=_ZFsfI?uaia?d4&bT)2Z8a*A{+!vyKErUe=vjt^8>DX;UN5O1_vSW?EF(v z(b!Z)AjiQVyk-Lj5)U_@0UF*24hI9(1A9#gNGLEqBH_TCjB6Y)&jG8GH*kXiC=a-a z0tbd|IJWCAen<#zGQz<~ytqQ4FaY6#%75$tP=w?1Kg|SJ1E4L#aA`pQhQqK~02c;e z$H7fYVA_X5uzPq)8AkRLZK0;Ke5CrsS>d>KoEFY3I{e95H?5^2qFZDw@bhw zK*HjP0cb$|UIuQ^p+I;&3JJ$;fX<7X0>HM1!iy0UKMSESAYE~V0?x(t9~=q{ zF?i>IT@j%Dqj12XC=?7kejf+}P_yxX1q0T6TsFYGg)0sU%p7=X!610!02~Ix>kGgb z@>h$*#;OsqYr%ja08bzS-#*yCZ24O}fh86AO)uVE6tKV(tN$?%SkZBx0u==pDR4Ll zPXhou_~ya!n<5M*tsR{iU?o-?}m|G(mBNAb|Y^H$4#$1YV~G25Q{d2pG74 z9Rw??O?1~(5&`^199WOgPzjKPtPB#UUnnpd36qcnx{|C6NKEwqd%~DPOpM}@ySbaY Vx0|&M1qA#Dl@wfDGWTUE{vYreGPeK#