LoginSignup
0
1

More than 1 year has passed since last update.

Windows 10 でCode_Asterの計算速度比較

Last updated at Posted at 2021-12-29

はじめに

windows(wsl)で複数のCode_aser 環境ができたので計算速度を比較してみたいと思います。

計算対象

下記の2次シェル要素の静解析で計算時間を比較してみたいと思います。

------------ MAILLAGE MAILBASE - IMPRESSIONS NIVEAU  1 ------------
NOMBRE DE NOEUDS                      284573
NOMBRE DE MAILLES                     142986
                              SEG3                 1400
                              TRIA6              141586
NOMBRE DE GROUPES DE MAILLES               3
                              Face                            141586
                              hold                               100
                              load                               100

計算結果の比較(MECA_STATIQUEの部分のみ)

N1の参考値です。UNITE=6 messファイルに出力される値を示しています。

単一版

windows版はsalomeでインストールされるasterを利用します。
vscodeのterminalでas_run.bat ~.export を実施しています。

OS_ASTER-VER SOLVER OPTION RESUTL USER RESULT SYSTEM
Windows10_14.4 MULT_FRONT --- --- ---
Windows10_14.4 MUMPS POSTTRAITEMENTS='MINI' 72.27 16.77
wsl_14.6 MULT_FRONT --- 46.33 9.28
wsl_14.6 MUMPS POSTTRAITEMENTS='MINI' 55.67 24.37

並列版

mpi_nbcpu-ncpus SOLVER OPTION RESUTL USER RESULT SYSTEM
1-0 MULT_FRONT --- 46.55 9.28
1-2 MULT_FRONT --- 53.11 8.73
1-0 MUMPS POSTTRAITEMENTS='MINI' 57.25 23.98
2-0 MUMPS POSTTRAITEMENTS='MINI' 42.22 10.85
4-0 MUMPS POSTTRAITEMENTS='MINI' 50.92 47.50
2-2 MUMPS POSTTRAITEMENTS='MINI' 49.54 10.64

考察

wsl 環境で計算を行っても遅くなることはないようです。
設定不備か規模の問題と思いますが並列効果が全く得られていません。
引き続き検討を行いたいと思います。 問題点のコメントいただけると幸いです。
今回使用したCOMMファイルは以下になります。

stress.comm(クリックして表示)
stress.comm
# !python

DEBUT(IGNORE_ALARM='UTILITAI4_2')

MAILBASE = LIRE_MAILLAGE(FORMAT='MED',
                         UNITE=20)

MAIL = CREA_MAILLAGE(MAILLAGE=MAILBASE,
                     MODI_MAILLE=_F(OPTION='TRIA6_7',
                                    TOUT='OUI'))

mode = AFFE_MODELE(AFFE=_F(MODELISATION='3D',
                           PHENOMENE='MECANIQUE',
                           TOUT='OUI'),
                   MAILLAGE=MAILBASE)

model = AFFE_MODELE(AFFE=_F(MODELISATION='COQUE_3D',
                            PHENOMENE='MECANIQUE',
                            TOUT='OUI'),
                    MAILLAGE=MAIL)

elempro0 = AFFE_CARA_ELEM(COQUE=_F(EPAIS=1.2,
                                   GROUP_MA=('Face', )),
                          MODELE=model)

mater = DEFI_MATERIAU(ELAS=_F(E=210000.0,
                              NU=0.3,
                              RHO=7.8e-09))

materfl = AFFE_MATERIAU(AFFE=_F(MATER=(mater, ),
                                TOUT='OUI'),
                        MODELE=model)

mecabc = AFFE_CHAR_MECA(DDL_IMPO=_F(DRX=0.0,
                                    DRY=0.0,
                                    DRZ=0.0,
                                    DX=0.0,
                                    DY=0.0,
                                    DZ=0.0,
                                    GROUP_MA=('hold', )),
                        MODELE=model)

CHARGE = AFFE_CHAR_MECA(FORCE_ARETE=_F(FY=-0.02,
                                      GROUP_MA='load'),
                        MODELE=model)

RESULT = MECA_STATIQUE(CARA_ELEM=elempro0,
                       CHAM_MATER=materfl,
                       EXCIT=(_F(CHARGE=mecabc),
                              _F(CHARGE=CHARGE)),
                       MODELE=model,
                       SOLVEUR=_F(
                               METHODE="MULT_FRONT",
                             # METHODE='MUMPS'
                             # POSTTRAITEMENTS='MINI',
                               ),
                        )

# RESULT = CALC_CHAMP(
#                     reuse=RESULT,
#                     FORCE=('REAC_NODA', ),
#                     RESULTAT=RESULT)

# RES = PROJ_CHAMP(MODELE_1=model,
#                  MODELE_2=mode,
#                  RESULTAT=RESULT)

# RESULT = CALC_CHAMP(
#                     reuse=RESULT,
#                     CONTRAINTE=('SIEF_ELNO',),
#                     CRITERES=('SIEQ_ELNO'),
#                     RESULTAT=RESULT)

# RES_SUP = POST_CHAMP(
#                  EXTR_COQUE=_F(NIVE_COUCHE='SUP',
#                                NOM_CHAM=('SIEF_ELNO', 'SIEQ_ELNO',),
#                                NUME_COUCHE=1),
#                  RESULTAT=RESULT)
# RES_SUP = CALC_CHAMP(
#                     reuse=RES_SUP,
#                     # CONTRAINTE=('SIEF_NOEU'),
#                     CRITERES=('SIEQ_NOEU'),
#                     RESULTAT=RES_SUP)
# SUP = PROJ_CHAMP(MODELE_1=model,
#                  MODELE_2=mode,
#                  RESULTAT=RES_SUP)

# RES_INF = POST_CHAMP(
#                  EXTR_COQUE=_F(NIVE_COUCHE='INF',
#                                NOM_CHAM=('SIEF_ELNO', 'SIEQ_ELNO',),
#                                NUME_COUCHE=1),
#                  RESULTAT=RESULT)
# RES_INF = CALC_CHAMP(
#                     reuse=RES_INF,
#                     # CONTRAINTE=('SIEF_NOEU'),
#                     CRITERES=('SIEQ_NOEU'),
#                     RESULTAT=RES_INF)
# INF = PROJ_CHAMP(MODELE_1=model,
#                  MODELE_2=mode,
#                  RESULTAT=RES_INF)

# RES_MOY = POST_CHAMP(
#                  EXTR_COQUE=_F(NIVE_COUCHE='INF',
#                                NOM_CHAM=('SIEF_ELNO', 'SIEQ_ELNO',),
#                                NUME_COUCHE=1),
#                  RESULTAT=RESULT)
# RES_MOY = CALC_CHAMP(
#                     reuse=RES_MOY,
#                     # CONTRAINTE=('SIEF_NOEU'),
#                     CRITERES=('SIEQ_NOEU'),
#                     RESULTAT=RES_MOY)
# MOY = PROJ_CHAMP(MODELE_1=model,
#                  MODELE_2=mode,
#                  RESULTAT=RES_MOY)

# IMPR_RESU(
#           FORMAT='MED',
#         #   FORMAT='RESULTAT',
#           RESU=(
#                 _F(RESULTAT=SUP), 
#                 # _F(RESULTAT=INF), 
#                 # _F(RESULTAT=MOY), 
#                 _F(
#                 #   MAILLAGE=MAILBASE,
#                   NOM_CHAM=("DEPL", 'REAC_NODA', ),
#                   RESULTAT=RES), 
#                 ),
#           UNITE=80)

# IMPR_RESU(
#         #   FORMAT='MED',
#           FORMAT='RESULTAT',
#           RESU=(_F(GROUP_MA='hold',
#                    NOM_CHAM='SIEQ_NOEU',
#                    RESULTAT=SUP),
#                 _F(GROUP_MA='load',
#                   #  MAILLAGE=MAILBASE,
#                    NOM_CHAM='DEPL',
#                    RESULTAT=RES)),
#           UNITE=8)
FIN()

ありがとうございました。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1