├── .gitignore ├── CompositeShellExample ├── RunCase_1_Stage_1.comm └── _ExportedFromSalomeObject_0_1_2_3.med ├── CustomBeamProfile ├── RunCase_1_RunCase_1_Stage_1.comm └── _ExportedFromSalomeObject_0_1_1_3.med ├── DefineLocalAxes1D ├── RunCase_1_Stage_1.comm └── _ExportedFromSalomeObject_0_1_3_3.med ├── IFC2CA_PortalExample ├── portal_01.comm └── portal_01.med ├── LDA-Example ├── A-TMZ000.txt ├── A-TMZ270.txt ├── building.hdf ├── input.comm ├── model.med ├── processing.ipynb └── run.export ├── LDA-Modal-Example ├── A-TMZ000.txt ├── A-TMZ270.txt ├── execution_time_linear.png ├── input.comm ├── model.med ├── processing.ipynb └── run.export ├── LICENCE.md ├── NLDA-Example ├── A-TMZ000.txt ├── A-TMZ270.txt ├── input.comm ├── model.med ├── processing.ipynb └── run.export ├── NLDA-Modal-Example ├── A-TMZ000.txt ├── A-TMZ270.txt ├── execution_time_nonlinear.png ├── input.comm ├── model.med ├── processing.ipynb └── run.export ├── ParametricStudyExample ├── RunCase_1_Stage_1.comm ├── RunCase_2_Stage_1.comm └── _ExportedFromSalomeObject_0_1_2_3.med ├── README.md ├── RodExample ├── Mesh_1.med ├── cases.md ├── processing.ipynb └── rod.comm ├── TensegrityExample ├── RunCase_1_Stage_1.comm └── _ExportedFromSalomeObject_0_1_2_3.med ├── TensegritySeismic ├── RunCase_1_Stage_1.comm └── _ExportedFromSalomeObject_0_1_2_3.med ├── Tutorial_07 ├── RunCase_1_Stage_1.comm └── _ExportedFromSalomeObject_0_1_2_3.med ├── Tutorial_09 ├── RunCase_1_Stage_1.comm └── _ExportedFromSalomeObject_0_1_2_5.med ├── Tutorial_10 ├── Compound_Mesh_1.med └── non_conformal_mesh.comm ├── Tutorial_11 ├── conformal_mesh.comm └── conformal_mesh.med ├── Tutorial_12 ├── partition.comm └── partition.med ├── Tutorial_13 ├── modal_3D.comm └── modal_3D.med ├── Tutorials_01-03 ├── RunCase_1_beam.comm ├── _ExportedFromSalomeObject_0_1_2_3.med └── runCA.py └── Tutorials_04-06 ├── RunCase_1_Stage_1.comm ├── RunCase_2_Stage_2.comm └── _ExportedFromSalomeObject_0_1_2_3.med /.gitignore: -------------------------------------------------------------------------------- 1 | recipes/ 2 | *.astk 3 | *checkpoint.ipynb 4 | -------------------------------------------------------------------------------- /CompositeShellExample/RunCase_1_Stage_1.comm: -------------------------------------------------------------------------------- 1 | DEBUT(LANG='EN') 2 | 3 | 4 | mesh = LIRE_MAILLAGE(identifier='0:1', 5 | UNITE=20) 6 | 7 | model = AFFE_MODELE(identifier='1:1', 8 | AFFE=_F(MODELISATION=('DST', ), 9 | PHENOMENE='MECANIQUE', 10 | TOUT='OUI'), 11 | MAILLAGE=mesh) 12 | 13 | elemprop = AFFE_CARA_ELEM(identifier='2:1', 14 | COQUE=(_F(COQUE_NCOU=5, 15 | EPAIS=140.0, 16 | GROUP_MA=('panelA', ), 17 | VECTEUR=(0.0, 1.0, 0.0)), 18 | _F(COQUE_NCOU=1, 19 | EPAIS=140.0, 20 | GROUP_MA=('panelB', ), 21 | VECTEUR=(0.0, 1.0, 0.0))), 22 | MODELE=model) 23 | 24 | wood = DEFI_MATERIAU(identifier='3:1', 25 | ELAS_ORTH=_F(E_L=11600.0, 26 | E_N=300.0, 27 | E_T=300.0, 28 | G_LN=650.0, 29 | G_LT=650.0, 30 | G_TN=100.0, 31 | NU_LN=0.35, 32 | NU_LT=0.35, 33 | NU_TN=0.35, 34 | RHO=5e-10)) 35 | 36 | wood_eq = DEFI_MATERIAU(identifier='4:1', 37 | ELAS_ORTH=_F(E_L=10743.4, 38 | E_N=300.0, 39 | E_T=1156.6, 40 | G_LN=198.4, 41 | G_LT=325.0, 42 | G_TN=93.5, 43 | NU_LN=0.01, 44 | NU_LT=0.01, 45 | NU_TN=0.01, 46 | RHO=5e-10)) 47 | 48 | clt140 = DEFI_COMPOSITE(identifier='5:1', 49 | COUCHE=(_F(EPAIS=40.0, 50 | MATER=wood), 51 | _F(EPAIS=20.0, 52 | MATER=wood, 53 | ORIENTATION=90.0), 54 | _F(EPAIS=20.0, 55 | MATER=wood), 56 | _F(EPAIS=20.0, 57 | MATER=wood, 58 | ORIENTATION=90.0), 59 | _F(EPAIS=40.0, 60 | MATER=wood))) 61 | 62 | clt_eq = DEFI_COMPOSITE(identifier='6:1', 63 | COUCHE=_F(EPAIS=140.0, 64 | MATER=wood_eq)) 65 | 66 | fieldmat = AFFE_MATERIAU(identifier='7:1', 67 | AFFE=(_F(GROUP_MA=('panelA', ), 68 | MATER=(clt140, )), 69 | _F(GROUP_MA=('panelB', ), 70 | MATER=(clt_eq, ))), 71 | MODELE=model) 72 | 73 | support = AFFE_CHAR_MECA(identifier='8:1', 74 | DDL_IMPO=_F(DX=0.0, 75 | DY=0.0, 76 | DZ=0.0, 77 | GROUP_MA=('support', )), 78 | MODELE=model) 79 | 80 | load = AFFE_CHAR_MECA(identifier='9:1', 81 | FORCE_COQUE=_F(FZ=-0.002, 82 | TOUT='OUI'), 83 | MODELE=model, 84 | PESANTEUR=_F(DIRECTION=(0.0, 0.0, -1.0), 85 | GRAVITE=10000.0)) 86 | 87 | reslin = MECA_STATIQUE(identifier='10:1', 88 | CARA_ELEM=elemprop, 89 | CHAM_MATER=fieldmat, 90 | EXCIT=(_F(CHARGE=support), 91 | _F(CHARGE=load)), 92 | MODELE=model) 93 | 94 | reslin = CALC_CHAMP(identifier='11:1', 95 | reuse=reslin, 96 | CONTRAINTE=('EFGE_NOEU', 'SIGM_ELNO'), 97 | RESULTAT=reslin) 98 | 99 | unnamed0 = POST_CHAMP(identifier='12:1', 100 | EXTR_COQUE=_F(NIVE_COUCHE='INF', 101 | NOM_CHAM=('SIGM_ELNO', ), 102 | NUME_COUCHE=1), 103 | RESULTAT=reslin) 104 | 105 | unnamed1 = CALC_CHAMP(identifier='13:1', 106 | CONTRAINTE=('SIGM_NOEU', ), 107 | RESULTAT=unnamed0) 108 | 109 | IMPR_RESU(identifier='14:1', 110 | RESU=(_F(NOM_CHAM=('DEPL', 'EFGE_NOEU'), 111 | RESULTAT=reslin), 112 | _F(NOM_CHAM=('SIGM_NOEU', ), 113 | RESULTAT=unnamed1)), 114 | UNITE=80) 115 | 116 | FIN() -------------------------------------------------------------------------------- /CompositeShellExample/_ExportedFromSalomeObject_0_1_2_3.med: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jesusbill/code-aster-examples/73de5facfc4cf609b11ea66822cf0457986970b2/CompositeShellExample/_ExportedFromSalomeObject_0_1_2_3.med -------------------------------------------------------------------------------- /CustomBeamProfile/RunCase_1_RunCase_1_Stage_1.comm: -------------------------------------------------------------------------------- 1 | DEBUT(LANG='EN') 2 | 3 | 4 | mesh = LIRE_MAILLAGE(identifier='0:1', 5 | UNITE=20) 6 | 7 | model = AFFE_MODELE(identifier='1:1', 8 | AFFE=_F(MODELISATION=('POU_D_T', ), 9 | PHENOMENE='MECANIQUE', 10 | TOUT='OUI'), 11 | MAILLAGE=mesh) 12 | 13 | elemprop = AFFE_CARA_ELEM(identifier='2:1', 14 | MODELE=model, 15 | POUTRE=_F(CARA=('A', 'IY', 'IZ', 'AZ', 'AY', 'JX', 'RY', 'RZ'), 16 | GROUP_MA=('beam', ), 17 | SECTION='GENERALE', 18 | VALE=(5383.0, 36920000.0, 13360000.0, 2.98, 1.35, 204300.0, 100.0, 95.0), 19 | VARI_SECT='CONSTANT')) 20 | 21 | steel = DEFI_MATERIAU(identifier='3:1', 22 | ELAS=_F(E=200000.0, 23 | NU=0.2, 24 | RHO=7.8e-09)) 25 | 26 | fieldmat = AFFE_MATERIAU(identifier='4:1', 27 | AFFE=_F(MATER=(steel, ), 28 | TOUT='OUI'), 29 | MODELE=model) 30 | 31 | load = AFFE_CHAR_MECA(identifier='5:1', 32 | DDL_IMPO=_F(DRX=0.0, 33 | DX=0.0, 34 | DY=0.0, 35 | DZ=0.0, 36 | GROUP_NO=('supports', )), 37 | MODELE=model, 38 | PESANTEUR=_F(DIRECTION=(0.0, 0.0, -1.0), 39 | GRAVITE=10000.0)) 40 | 41 | reslin = MECA_STATIQUE(identifier='6:1', 42 | CARA_ELEM=elemprop, 43 | CHAM_MATER=fieldmat, 44 | EXCIT=_F(CHARGE=load), 45 | MODELE=model) 46 | 47 | reslin = CALC_CHAMP(identifier='7:1', 48 | reuse=reslin, 49 | CONTRAINTE=('EFGE_NOEU', 'SIPO_NOEU'), 50 | FORCE=('REAC_NODA', ), 51 | RESULTAT=reslin) 52 | 53 | table = POST_RELEVE_T(identifier='8:1', 54 | ACTION=_F(GROUP_NO=('supports', ), 55 | INTITULE='reactions', 56 | NOM_CHAM='REAC_NODA', 57 | OPERATION=('EXTRACTION', ), 58 | RESULTANTE=('DX', 'DY', 'DZ'), 59 | RESULTAT=reslin)) 60 | 61 | IMPR_RESU(identifier='9:1', 62 | RESU=_F(CARA_ELEM=elemprop, 63 | NOM_CHAM=('DEPL', 'EFGE_NOEU', 'SIPO_NOEU'), 64 | RESULTAT=reslin), 65 | UNITE=80) 66 | 67 | IMPR_TABLE(identifier='10:1', 68 | FORMAT='TABLEAU', 69 | FORMAT_R='E12.5', 70 | TABLE=table, 71 | UNITE=8) 72 | 73 | FIN() -------------------------------------------------------------------------------- /CustomBeamProfile/_ExportedFromSalomeObject_0_1_1_3.med: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jesusbill/code-aster-examples/73de5facfc4cf609b11ea66822cf0457986970b2/CustomBeamProfile/_ExportedFromSalomeObject_0_1_1_3.med -------------------------------------------------------------------------------- /DefineLocalAxes1D/RunCase_1_Stage_1.comm: -------------------------------------------------------------------------------- 1 | DEBUT(LANG='EN') 2 | 3 | 4 | mesh = LIRE_MAILLAGE(identifier='0:1', 5 | UNITE=20) 6 | 7 | model = AFFE_MODELE(identifier='1:1', 8 | AFFE=_F(MODELISATION=('POU_D_E', ), 9 | PHENOMENE='MECANIQUE', 10 | TOUT='OUI'), 11 | MAILLAGE=mesh) 12 | 13 | elemprop = AFFE_CARA_ELEM(identifier='2:1', 14 | MODELE=model, 15 | ORIENTATION=_F(CARA='ANGL_VRIL', 16 | GROUP_MA=('column2', ), 17 | VALE=-90.0), 18 | POUTRE=_F(CARA=('HY', 'HZ'), 19 | GROUP_MA=('elements', ), 20 | SECTION='RECTANGLE', 21 | VALE=(200.0, 400.0))) 22 | 23 | mater = DEFI_MATERIAU(identifier='3:1', 24 | ELAS=_F(E=200000.0, 25 | NU=0.3, 26 | RHO=7.8e-09)) 27 | 28 | fieldma0 = AFFE_MATERIAU(identifier='4:1', 29 | AFFE=_F(MATER=(mater, ), 30 | TOUT='OUI'), 31 | MODELE=model) 32 | 33 | load = AFFE_CHAR_MECA(identifier='5:1', 34 | DDL_IMPO=_F(GROUP_NO=('supports', ), 35 | LIAISON='ENCASTRE'), 36 | MODELE=model, 37 | PESANTEUR=_F(DIRECTION=(0.0, 0.0, -1.0), 38 | GRAVITE=10000.0)) 39 | 40 | reslin = MECA_STATIQUE(identifier='6:1', 41 | CARA_ELEM=elemprop, 42 | CHAM_MATER=fieldma0, 43 | EXCIT=_F(CHARGE=load), 44 | MODELE=model) 45 | 46 | IMPR_RESU(identifier='7:1', 47 | RESU=_F(NOM_CHAM=('DEPL', ), 48 | RESULTAT=reslin), 49 | UNITE=80) 50 | 51 | IMPR_CONCEPT(identifier='8:1', 52 | CONCEPT=_F(CARA_ELEM=elemprop, 53 | MODELE=model, 54 | REPERE_LOCAL='ELEM'), 55 | UNITE=80) 56 | 57 | FIN() -------------------------------------------------------------------------------- /DefineLocalAxes1D/_ExportedFromSalomeObject_0_1_3_3.med: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jesusbill/code-aster-examples/73de5facfc4cf609b11ea66822cf0457986970b2/DefineLocalAxes1D/_ExportedFromSalomeObject_0_1_3_3.med -------------------------------------------------------------------------------- /IFC2CA_PortalExample/portal_01.comm: -------------------------------------------------------------------------------- 1 | # Command file generated by IfcOpenShell/ifc2ca scripts 2 | 3 | # Linear Static Analysis With Self-Weight 4 | 5 | # STEP: INITIALIZE STUDY 6 | DEBUT( 7 | PAR_LOT = 'NON' 8 | ) 9 | 10 | # STEP: READ MED FILE 11 | mesh = LIRE_MAILLAGE( 12 | FORMAT = 'MED', 13 | UNITE = 20 14 | ) 15 | 16 | # STEP: DEFINE MODEL 17 | model = AFFE_MODELE( 18 | MAILLAGE = mesh, 19 | AFFE = ( 20 | _F( 21 | TOUT = 'OUI', 22 | PHENOMENE = 'MECANIQUE', 23 | MODELISATION = '3D' 24 | ), 25 | _F( 26 | GROUP_MA = ('ISCM_228', 'ISCM_263', 'ISCM_296'), 27 | PHENOMENE = 'MECANIQUE', 28 | MODELISATION = 'POU_D_E' 29 | ), 30 | _F( 31 | GROUP_MA = ('ISPC_236', 'ISPC_247', 'ISPC_271', 'ISPC_280'), 32 | PHENOMENE = 'MECANIQUE', 33 | MODELISATION = 'DIS_TR' 34 | ), 35 | ) 36 | ) 37 | 38 | # STEP: DEFINE MATERIALS 39 | mat_0 = DEFI_MATERIAU( 40 | ELAS = _F( 41 | E = 29000000.0, 42 | NU = 0.2946428571428572, 43 | RHO = 0.284011391108717 44 | ) 45 | ) 46 | 47 | material = AFFE_MATERIAU( 48 | MAILLAGE = mesh, 49 | AFFE = ( 50 | _F( 51 | GROUP_MA = ('ISCM_228', 'ISCM_263', 'ISCM_296'), 52 | MATER = mat_0, 53 | ), 54 | ) 55 | ) 56 | 57 | # STEP: DEFINE ELEMENTS 58 | element = AFFE_CARA_ELEM( 59 | MODELE = model, 60 | POUTRE = ( 61 | _F( 62 | GROUP_MA = ('ISCM_228', 'ISCM_263', 'ISCM_296'), 63 | SECTION = 'GENERALE', 64 | CARA = ('A', 'IY', 'IZ', 'JX'), 65 | VALE = (8.84, 170.0, 16.7, 0.622) 66 | ), 67 | ), 68 | COQUE = ( 69 | ), 70 | DISCRET = ( 71 | _F( 72 | GROUP_MA = 'ISPC_236', 73 | CARA = 'K_TR_D_N', 74 | VALE = (0.0, 0.0, 0.0, 0.0, 0.0, 0.0), 75 | REPERE = 'LOCAL' 76 | ), 77 | _F( 78 | GROUP_MA = 'ISPC_247', 79 | CARA = 'K_TR_D_N', 80 | VALE = (0.0, 0.0, 0.0, 0.0, 0.0, 0.0), 81 | REPERE = 'LOCAL' 82 | ), 83 | _F( 84 | GROUP_MA = 'ISPC_271', 85 | CARA = 'K_TR_D_N', 86 | VALE = (0.0, 0.0, 0.0, 0.0, 0.0, 0.0), 87 | REPERE = 'LOCAL' 88 | ), 89 | _F( 90 | GROUP_MA = 'ISPC_280', 91 | CARA = 'K_TR_D_N', 92 | VALE = (0.0, 0.0, 0.0, 0.0, 0.0, 0.0), 93 | REPERE = 'LOCAL' 94 | ), 95 | ), 96 | ORIENTATION = ( 97 | _F( 98 | GROUP_MA = 'ISCM_228', 99 | CARA = 'VECT_Y', 100 | VALE = (0.0, -1.0, 0.0) 101 | ), 102 | _F( 103 | GROUP_MA = 'ISCM_263', 104 | CARA = 'VECT_Y', 105 | VALE = (0.0, -1.0, 0.0) 106 | ), 107 | _F( 108 | GROUP_MA = 'ISCM_296', 109 | CARA = 'VECT_Y', 110 | VALE = (0.0, 1.0, 0.0) 111 | ), 112 | _F( 113 | GROUP_MA = 'ISPC_236', 114 | CARA = 'VECT_X_Y', 115 | VALE = (1.0, 0.0, 0.0, 0.0, 1.0, 0.0) 116 | ), 117 | _F( 118 | GROUP_MA = 'ISPC_247', 119 | CARA = 'VECT_X_Y', 120 | VALE = (1.0, 0.0, 0.0, 0.0, 1.0, 0.0) 121 | ), 122 | _F( 123 | GROUP_MA = 'ISPC_271', 124 | CARA = 'VECT_X_Y', 125 | VALE = (1.0, 0.0, 0.0, 0.0, 1.0, 0.0) 126 | ), 127 | _F( 128 | GROUP_MA = 'ISPC_280', 129 | CARA = 'VECT_X_Y', 130 | VALE = (1.0, 0.0, 0.0, 0.0, 1.0, 0.0) 131 | ), 132 | ), 133 | ) 134 | 135 | # STEP: DEFINE SUPPORTS AND CONSTRAINTS 136 | liaisons = AFFE_CHAR_MECA( 137 | MODELE = model, 138 | LIAISON_DDL = ( 139 | _F( 140 | GROUP_NO = ('ISPC_236', 'ISPC_236', 'ISPC_236'), 141 | DDL = ('DX', 'DY', 'DZ'), 142 | COEF_MULT = (1.0, 0.0, 0.0), 143 | COEF_IMPO = 0.0 144 | ), 145 | _F( 146 | GROUP_NO = ('ISPC_236', 'ISPC_236', 'ISPC_236'), 147 | DDL = ('DX', 'DY', 'DZ'), 148 | COEF_MULT = (0.0, 1.0, 0.0), 149 | COEF_IMPO = 0.0 150 | ), 151 | _F( 152 | GROUP_NO = ('ISPC_236', 'ISPC_236', 'ISPC_236'), 153 | DDL = ('DX', 'DY', 'DZ'), 154 | COEF_MULT = (0.0, 0.0, 1.0), 155 | COEF_IMPO = 0.0 156 | ), 157 | _F( 158 | GROUP_NO = ('ISPC_236', 'ISPC_236', 'ISPC_236'), 159 | DDL = ('DRX', 'DRY', 'DRZ'), 160 | COEF_MULT = (1.0, 0.0, 0.0), 161 | COEF_IMPO = 0.0 162 | ), 163 | _F( 164 | GROUP_NO = ('ISPC_236', 'ISPC_236', 'ISPC_236'), 165 | DDL = ('DRX', 'DRY', 'DRZ'), 166 | COEF_MULT = (0.0, 1.0, 0.0), 167 | COEF_IMPO = 0.0 168 | ), 169 | _F( 170 | GROUP_NO = ('ISPC_236', 'ISPC_236', 'ISPC_236'), 171 | DDL = ('DRX', 'DRY', 'DRZ'), 172 | COEF_MULT = (0.0, 0.0, 1.0), 173 | COEF_IMPO = 0.0 174 | ), 175 | _F( 176 | GROUP_NO = ('ISPC_236', 'ISPC_236', 'ISPC_236', 'ISCM_228_0DC_ISPC_236', 'ISCM_228_0DC_ISPC_236', 'ISCM_228_0DC_ISPC_236'), 177 | DDL = ('DX', 'DY', 'DZ', 'DX', 'DY', 'DZ'), 178 | COEF_MULT = (0.0, 0.0, 1.0, -0.0, -0.0, -1.0), 179 | COEF_IMPO = 0.0 180 | ), 181 | _F( 182 | GROUP_NO = ('ISPC_236', 'ISPC_236', 'ISPC_236', 'ISCM_228_0DC_ISPC_236', 'ISCM_228_0DC_ISPC_236', 'ISCM_228_0DC_ISPC_236'), 183 | DDL = ('DX', 'DY', 'DZ', 'DX', 'DY', 'DZ'), 184 | COEF_MULT = (0.0, -1.0, 0.0, -0.0, 1.0, -0.0), 185 | COEF_IMPO = 0.0 186 | ), 187 | _F( 188 | GROUP_NO = ('ISPC_236', 'ISPC_236', 'ISPC_236', 'ISCM_228_0DC_ISPC_236', 'ISCM_228_0DC_ISPC_236', 'ISCM_228_0DC_ISPC_236'), 189 | DDL = ('DX', 'DY', 'DZ', 'DX', 'DY', 'DZ'), 190 | COEF_MULT = (1.0, 0.0, -0.0, -1.0, -0.0, 0.0), 191 | COEF_IMPO = 0.0 192 | ), 193 | _F( 194 | GROUP_NO = ('ISPC_236', 'ISPC_236', 'ISPC_236', 'ISCM_228_0DC_ISPC_236', 'ISCM_228_0DC_ISPC_236', 'ISCM_228_0DC_ISPC_236'), 195 | DDL = ('DRX', 'DRY', 'DRZ', 'DRX', 'DRY', 'DRZ'), 196 | COEF_MULT = (0.0, 0.0, 1.0, -0.0, -0.0, -1.0), 197 | COEF_IMPO = 0.0 198 | ), 199 | _F( 200 | GROUP_NO = ('ISPC_236', 'ISPC_236', 'ISPC_236', 'ISCM_228_0DC_ISPC_236', 'ISCM_228_0DC_ISPC_236', 'ISCM_228_0DC_ISPC_236'), 201 | DDL = ('DRX', 'DRY', 'DRZ', 'DRX', 'DRY', 'DRZ'), 202 | COEF_MULT = (0.0, -1.0, 0.0, -0.0, 1.0, -0.0), 203 | COEF_IMPO = 0.0 204 | ), 205 | _F( 206 | GROUP_NO = ('ISPC_236', 'ISPC_236', 'ISPC_236', 'ISCM_228_0DC_ISPC_236', 'ISCM_228_0DC_ISPC_236', 'ISCM_228_0DC_ISPC_236'), 207 | DDL = ('DRX', 'DRY', 'DRZ', 'DRX', 'DRY', 'DRZ'), 208 | COEF_MULT = (1.0, 0.0, -0.0, -1.0, -0.0, 0.0), 209 | COEF_IMPO = 0.0 210 | ), 211 | _F( 212 | GROUP_NO = ('ISPC_247', 'ISPC_247', 'ISPC_247', 'ISCM_228_0DC_ISPC_247', 'ISCM_228_0DC_ISPC_247', 'ISCM_228_0DC_ISPC_247'), 213 | DDL = ('DX', 'DY', 'DZ', 'DX', 'DY', 'DZ'), 214 | COEF_MULT = (0.0, 0.0, 1.0, -0.0, -0.0, -1.0), 215 | COEF_IMPO = 0.0 216 | ), 217 | _F( 218 | GROUP_NO = ('ISPC_247', 'ISPC_247', 'ISPC_247', 'ISCM_228_0DC_ISPC_247', 'ISCM_228_0DC_ISPC_247', 'ISCM_228_0DC_ISPC_247'), 219 | DDL = ('DX', 'DY', 'DZ', 'DX', 'DY', 'DZ'), 220 | COEF_MULT = (0.0, -1.0, 0.0, -0.0, 1.0, -0.0), 221 | COEF_IMPO = 0.0 222 | ), 223 | _F( 224 | GROUP_NO = ('ISPC_247', 'ISPC_247', 'ISPC_247', 'ISCM_228_0DC_ISPC_247', 'ISCM_228_0DC_ISPC_247', 'ISCM_228_0DC_ISPC_247'), 225 | DDL = ('DX', 'DY', 'DZ', 'DX', 'DY', 'DZ'), 226 | COEF_MULT = (1.0, 0.0, -0.0, -1.0, -0.0, 0.0), 227 | COEF_IMPO = 0.0 228 | ), 229 | _F( 230 | GROUP_NO = ('ISPC_247', 'ISPC_247', 'ISPC_247', 'ISCM_228_0DC_ISPC_247', 'ISCM_228_0DC_ISPC_247', 'ISCM_228_0DC_ISPC_247'), 231 | DDL = ('DRX', 'DRY', 'DRZ', 'DRX', 'DRY', 'DRZ'), 232 | COEF_MULT = (0.0, 0.0, 1.0, -0.0, -0.0, -1.0), 233 | COEF_IMPO = 0.0 234 | ), 235 | _F( 236 | GROUP_NO = ('ISPC_247', 'ISPC_247', 'ISPC_247', 'ISCM_228_0DC_ISPC_247', 'ISCM_228_0DC_ISPC_247', 'ISCM_228_0DC_ISPC_247'), 237 | DDL = ('DRX', 'DRY', 'DRZ', 'DRX', 'DRY', 'DRZ'), 238 | COEF_MULT = (0.0, -1.0, 0.0, -0.0, 1.0, -0.0), 239 | COEF_IMPO = 0.0 240 | ), 241 | _F( 242 | GROUP_NO = ('ISPC_247', 'ISPC_247', 'ISPC_247', 'ISCM_228_0DC_ISPC_247', 'ISCM_228_0DC_ISPC_247', 'ISCM_228_0DC_ISPC_247'), 243 | DDL = ('DRX', 'DRY', 'DRZ', 'DRX', 'DRY', 'DRZ'), 244 | COEF_MULT = (1.0, 0.0, -0.0, -1.0, -0.0, 0.0), 245 | COEF_IMPO = 0.0 246 | ), 247 | _F( 248 | GROUP_NO = ('ISPC_247', 'ISPC_247', 'ISPC_247', 'ISCM_296_0DC_ISPC_247', 'ISCM_296_0DC_ISPC_247', 'ISCM_296_0DC_ISPC_247'), 249 | DDL = ('DX', 'DY', 'DZ', 'DX', 'DY', 'DZ'), 250 | COEF_MULT = (1.0, 0.0, 0.0, -1.0, -0.0, -0.0), 251 | COEF_IMPO = 0.0 252 | ), 253 | _F( 254 | GROUP_NO = ('ISPC_247', 'ISPC_247', 'ISPC_247', 'ISCM_296_0DC_ISPC_247', 'ISCM_296_0DC_ISPC_247', 'ISCM_296_0DC_ISPC_247'), 255 | DDL = ('DX', 'DY', 'DZ', 'DX', 'DY', 'DZ'), 256 | COEF_MULT = (0.0, 1.0, 0.0, -0.0, -1.0, -0.0), 257 | COEF_IMPO = 0.0 258 | ), 259 | _F( 260 | GROUP_NO = ('ISPC_247', 'ISPC_247', 'ISPC_247', 'ISCM_296_0DC_ISPC_247', 'ISCM_296_0DC_ISPC_247', 'ISCM_296_0DC_ISPC_247'), 261 | DDL = ('DX', 'DY', 'DZ', 'DX', 'DY', 'DZ'), 262 | COEF_MULT = (0.0, 0.0, 1.0, -0.0, -0.0, -1.0), 263 | COEF_IMPO = 0.0 264 | ), 265 | _F( 266 | GROUP_NO = ('ISPC_247', 'ISPC_247', 'ISPC_247', 'ISCM_296_0DC_ISPC_247', 'ISCM_296_0DC_ISPC_247', 'ISCM_296_0DC_ISPC_247'), 267 | DDL = ('DRX', 'DRY', 'DRZ', 'DRX', 'DRY', 'DRZ'), 268 | COEF_MULT = (1.0, 0.0, 0.0, -1.0, -0.0, -0.0), 269 | COEF_IMPO = 0.0 270 | ), 271 | _F( 272 | GROUP_NO = ('ISPC_247', 'ISPC_247', 'ISPC_247', 'ISCM_296_0DC_ISPC_247', 'ISCM_296_0DC_ISPC_247', 'ISCM_296_0DC_ISPC_247'), 273 | DDL = ('DRX', 'DRY', 'DRZ', 'DRX', 'DRY', 'DRZ'), 274 | COEF_MULT = (0.0, 1.0, 0.0, -0.0, -1.0, -0.0), 275 | COEF_IMPO = 0.0 276 | ), 277 | _F( 278 | GROUP_NO = ('ISPC_247', 'ISPC_247', 'ISPC_247', 'ISCM_296_0DC_ISPC_247', 'ISCM_296_0DC_ISPC_247', 'ISCM_296_0DC_ISPC_247'), 279 | DDL = ('DRX', 'DRY', 'DRZ', 'DRX', 'DRY', 'DRZ'), 280 | COEF_MULT = (0.0, 0.0, 1.0, -0.0, -0.0, -1.0), 281 | COEF_IMPO = 0.0 282 | ), 283 | _F( 284 | GROUP_NO = ('ISPC_271', 'ISPC_271', 'ISPC_271'), 285 | DDL = ('DX', 'DY', 'DZ'), 286 | COEF_MULT = (1.0, 0.0, 0.0), 287 | COEF_IMPO = 0.0 288 | ), 289 | _F( 290 | GROUP_NO = ('ISPC_271', 'ISPC_271', 'ISPC_271'), 291 | DDL = ('DX', 'DY', 'DZ'), 292 | COEF_MULT = (0.0, 1.0, 0.0), 293 | COEF_IMPO = 0.0 294 | ), 295 | _F( 296 | GROUP_NO = ('ISPC_271', 'ISPC_271', 'ISPC_271'), 297 | DDL = ('DX', 'DY', 'DZ'), 298 | COEF_MULT = (0.0, 0.0, 1.0), 299 | COEF_IMPO = 0.0 300 | ), 301 | _F( 302 | GROUP_NO = ('ISPC_271', 'ISPC_271', 'ISPC_271'), 303 | DDL = ('DRX', 'DRY', 'DRZ'), 304 | COEF_MULT = (1.0, 0.0, 0.0), 305 | COEF_IMPO = 0.0 306 | ), 307 | _F( 308 | GROUP_NO = ('ISPC_271', 'ISPC_271', 'ISPC_271'), 309 | DDL = ('DRX', 'DRY', 'DRZ'), 310 | COEF_MULT = (0.0, 1.0, 0.0), 311 | COEF_IMPO = 0.0 312 | ), 313 | _F( 314 | GROUP_NO = ('ISPC_271', 'ISPC_271', 'ISPC_271'), 315 | DDL = ('DRX', 'DRY', 'DRZ'), 316 | COEF_MULT = (0.0, 0.0, 1.0), 317 | COEF_IMPO = 0.0 318 | ), 319 | _F( 320 | GROUP_NO = ('ISPC_271', 'ISPC_271', 'ISPC_271', 'ISCM_263_0DC_ISPC_271', 'ISCM_263_0DC_ISPC_271', 'ISCM_263_0DC_ISPC_271'), 321 | DDL = ('DX', 'DY', 'DZ', 'DX', 'DY', 'DZ'), 322 | COEF_MULT = (0.0, 0.0, 1.0, -0.0, -0.0, -1.0), 323 | COEF_IMPO = 0.0 324 | ), 325 | _F( 326 | GROUP_NO = ('ISPC_271', 'ISPC_271', 'ISPC_271', 'ISCM_263_0DC_ISPC_271', 'ISCM_263_0DC_ISPC_271', 'ISCM_263_0DC_ISPC_271'), 327 | DDL = ('DX', 'DY', 'DZ', 'DX', 'DY', 'DZ'), 328 | COEF_MULT = (0.0, -1.0, 0.0, -0.0, 1.0, -0.0), 329 | COEF_IMPO = 0.0 330 | ), 331 | _F( 332 | GROUP_NO = ('ISPC_271', 'ISPC_271', 'ISPC_271', 'ISCM_263_0DC_ISPC_271', 'ISCM_263_0DC_ISPC_271', 'ISCM_263_0DC_ISPC_271'), 333 | DDL = ('DX', 'DY', 'DZ', 'DX', 'DY', 'DZ'), 334 | COEF_MULT = (1.0, 0.0, -0.0, -1.0, -0.0, 0.0), 335 | COEF_IMPO = 0.0 336 | ), 337 | _F( 338 | GROUP_NO = ('ISPC_271', 'ISPC_271', 'ISPC_271', 'ISCM_263_0DC_ISPC_271', 'ISCM_263_0DC_ISPC_271', 'ISCM_263_0DC_ISPC_271'), 339 | DDL = ('DRX', 'DRY', 'DRZ', 'DRX', 'DRY', 'DRZ'), 340 | COEF_MULT = (0.0, 0.0, 1.0, -0.0, -0.0, -1.0), 341 | COEF_IMPO = 0.0 342 | ), 343 | _F( 344 | GROUP_NO = ('ISPC_271', 'ISPC_271', 'ISPC_271', 'ISCM_263_0DC_ISPC_271', 'ISCM_263_0DC_ISPC_271', 'ISCM_263_0DC_ISPC_271'), 345 | DDL = ('DRX', 'DRY', 'DRZ', 'DRX', 'DRY', 'DRZ'), 346 | COEF_MULT = (0.0, -1.0, 0.0, -0.0, 1.0, -0.0), 347 | COEF_IMPO = 0.0 348 | ), 349 | _F( 350 | GROUP_NO = ('ISPC_271', 'ISPC_271', 'ISPC_271', 'ISCM_263_0DC_ISPC_271', 'ISCM_263_0DC_ISPC_271', 'ISCM_263_0DC_ISPC_271'), 351 | DDL = ('DRX', 'DRY', 'DRZ', 'DRX', 'DRY', 'DRZ'), 352 | COEF_MULT = (1.0, 0.0, -0.0, -1.0, -0.0, 0.0), 353 | COEF_IMPO = 0.0 354 | ), 355 | _F( 356 | GROUP_NO = ('ISPC_280', 'ISPC_280', 'ISPC_280', 'ISCM_263_0DC_ISPC_280', 'ISCM_263_0DC_ISPC_280', 'ISCM_263_0DC_ISPC_280'), 357 | DDL = ('DX', 'DY', 'DZ', 'DX', 'DY', 'DZ'), 358 | COEF_MULT = (0.0, 0.0, 1.0, -0.0, -0.0, -1.0), 359 | COEF_IMPO = 0.0 360 | ), 361 | _F( 362 | GROUP_NO = ('ISPC_280', 'ISPC_280', 'ISPC_280', 'ISCM_263_0DC_ISPC_280', 'ISCM_263_0DC_ISPC_280', 'ISCM_263_0DC_ISPC_280'), 363 | DDL = ('DX', 'DY', 'DZ', 'DX', 'DY', 'DZ'), 364 | COEF_MULT = (0.0, -1.0, 0.0, -0.0, 1.0, -0.0), 365 | COEF_IMPO = 0.0 366 | ), 367 | _F( 368 | GROUP_NO = ('ISPC_280', 'ISPC_280', 'ISPC_280', 'ISCM_263_0DC_ISPC_280', 'ISCM_263_0DC_ISPC_280', 'ISCM_263_0DC_ISPC_280'), 369 | DDL = ('DX', 'DY', 'DZ', 'DX', 'DY', 'DZ'), 370 | COEF_MULT = (1.0, 0.0, -0.0, -1.0, -0.0, 0.0), 371 | COEF_IMPO = 0.0 372 | ), 373 | _F( 374 | GROUP_NO = ('ISPC_280', 'ISPC_280', 'ISPC_280', 'ISCM_263_0DC_ISPC_280', 'ISCM_263_0DC_ISPC_280', 'ISCM_263_0DC_ISPC_280'), 375 | DDL = ('DRX', 'DRY', 'DRZ', 'DRX', 'DRY', 'DRZ'), 376 | COEF_MULT = (0.0, 0.0, 1.0, -0.0, -0.0, -1.0), 377 | COEF_IMPO = 0.0 378 | ), 379 | _F( 380 | GROUP_NO = ('ISPC_280', 'ISPC_280', 'ISPC_280', 'ISCM_263_0DC_ISPC_280', 'ISCM_263_0DC_ISPC_280', 'ISCM_263_0DC_ISPC_280'), 381 | DDL = ('DRX', 'DRY', 'DRZ', 'DRX', 'DRY', 'DRZ'), 382 | COEF_MULT = (0.0, -1.0, 0.0, -0.0, 1.0, -0.0), 383 | COEF_IMPO = 0.0 384 | ), 385 | _F( 386 | GROUP_NO = ('ISPC_280', 'ISPC_280', 'ISPC_280', 'ISCM_263_0DC_ISPC_280', 'ISCM_263_0DC_ISPC_280', 'ISCM_263_0DC_ISPC_280'), 387 | DDL = ('DRX', 'DRY', 'DRZ', 'DRX', 'DRY', 'DRZ'), 388 | COEF_MULT = (1.0, 0.0, -0.0, -1.0, -0.0, 0.0), 389 | COEF_IMPO = 0.0 390 | ), 391 | _F( 392 | GROUP_NO = ('ISPC_280', 'ISPC_280', 'ISPC_280', 'ISCM_296_0DC_ISPC_280', 'ISCM_296_0DC_ISPC_280', 'ISCM_296_0DC_ISPC_280'), 393 | DDL = ('DX', 'DY', 'DZ', 'DX', 'DY', 'DZ'), 394 | COEF_MULT = (1.0, 0.0, 0.0, -1.0, -0.0, -0.0), 395 | COEF_IMPO = 0.0 396 | ), 397 | _F( 398 | GROUP_NO = ('ISPC_280', 'ISPC_280', 'ISPC_280', 'ISCM_296_0DC_ISPC_280', 'ISCM_296_0DC_ISPC_280', 'ISCM_296_0DC_ISPC_280'), 399 | DDL = ('DX', 'DY', 'DZ', 'DX', 'DY', 'DZ'), 400 | COEF_MULT = (0.0, 1.0, 0.0, -0.0, -1.0, -0.0), 401 | COEF_IMPO = 0.0 402 | ), 403 | _F( 404 | GROUP_NO = ('ISPC_280', 'ISPC_280', 'ISPC_280', 'ISCM_296_0DC_ISPC_280', 'ISCM_296_0DC_ISPC_280', 'ISCM_296_0DC_ISPC_280'), 405 | DDL = ('DX', 'DY', 'DZ', 'DX', 'DY', 'DZ'), 406 | COEF_MULT = (0.0, 0.0, 1.0, -0.0, -0.0, -1.0), 407 | COEF_IMPO = 0.0 408 | ), 409 | _F( 410 | GROUP_NO = ('ISPC_280', 'ISPC_280', 'ISPC_280', 'ISCM_296_0DC_ISPC_280', 'ISCM_296_0DC_ISPC_280', 'ISCM_296_0DC_ISPC_280'), 411 | DDL = ('DRX', 'DRY', 'DRZ', 'DRX', 'DRY', 'DRZ'), 412 | COEF_MULT = (1.0, 0.0, 0.0, -1.0, -0.0, -0.0), 413 | COEF_IMPO = 0.0 414 | ), 415 | _F( 416 | GROUP_NO = ('ISPC_280', 'ISPC_280', 'ISPC_280', 'ISCM_296_0DC_ISPC_280', 'ISCM_296_0DC_ISPC_280', 'ISCM_296_0DC_ISPC_280'), 417 | DDL = ('DRX', 'DRY', 'DRZ', 'DRX', 'DRY', 'DRZ'), 418 | COEF_MULT = (0.0, 1.0, 0.0, -0.0, -1.0, -0.0), 419 | COEF_IMPO = 0.0 420 | ), 421 | _F( 422 | GROUP_NO = ('ISPC_280', 'ISPC_280', 'ISPC_280', 'ISCM_296_0DC_ISPC_280', 'ISCM_296_0DC_ISPC_280', 'ISCM_296_0DC_ISPC_280'), 423 | DDL = ('DRX', 'DRY', 'DRZ', 'DRX', 'DRY', 'DRZ'), 424 | COEF_MULT = (0.0, 0.0, 1.0, -0.0, -0.0, -1.0), 425 | COEF_IMPO = 0.0 426 | ), 427 | ), 428 | ) 429 | # STEP: DEFINE LOAD 430 | gravLoad = AFFE_CHAR_MECA( 431 | MODELE = model, 432 | PESANTEUR = _F( 433 | GRAVITE = 9.806, 434 | DIRECTION = (0.0, 0.0, -1.0) 435 | ) 436 | ) 437 | 438 | # STEP: RUN ANALYSIS 439 | res_Bld = MECA_STATIQUE( 440 | MODELE = model, 441 | CHAM_MATER = material, 442 | CARA_ELEM = element, 443 | EXCIT = ( 444 | _F( 445 | CHARGE = liaisons 446 | ), 447 | _F( 448 | CHARGE = gravLoad 449 | ) 450 | ) 451 | ) 452 | 453 | # STEP: DEFORMED SHAPE EXTRACTION 454 | IMPR_RESU( 455 | FORMAT = 'MED', 456 | UNITE = 80, 457 | RESU = _F( 458 | RESULTAT = res_Bld, 459 | NOM_CHAM = ('DEPL',), # 'REAC_NODA', 'FORC_NODA', 460 | NOM_CHAM_MED = ('Bld_DISP',), # 'Bld_REAC', 'Bld_FORC' 461 | ) 462 | ) 463 | 464 | # STEP: CONCLUDE STUDY 465 | FIN() 466 | -------------------------------------------------------------------------------- /IFC2CA_PortalExample/portal_01.med: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jesusbill/code-aster-examples/73de5facfc4cf609b11ea66822cf0457986970b2/IFC2CA_PortalExample/portal_01.med -------------------------------------------------------------------------------- /LDA-Example/building.hdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jesusbill/code-aster-examples/73de5facfc4cf609b11ea66822cf0457986970b2/LDA-Example/building.hdf -------------------------------------------------------------------------------- /LDA-Example/input.comm: -------------------------------------------------------------------------------- 1 | # Units N, mm, sec 2 | gGrav = 9806.0 3 | dt = 0.001 4 | tFin = 15.0 5 | archiveStep = 10 6 | damping = 0.05 7 | nModes = 10 8 | 9 | DEBUT() 10 | 11 | mesh = LIRE_MAILLAGE( 12 | FORMAT = 'MED', 13 | UNITE = 2 14 | ) 15 | 16 | model = AFFE_MODELE( 17 | MAILLAGE = mesh, 18 | AFFE = ( 19 | _F( 20 | TOUT = 'OUI', 21 | MODELISATION = '3D', 22 | PHENOMENE = 'MECANIQUE' 23 | ), 24 | _F( 25 | GROUP_MA = ('walls', 'slab', 'roof'), 26 | MODELISATION = 'DST', 27 | PHENOMENE = 'MECANIQUE' 28 | ), 29 | _F( 30 | GROUP_MA = ('columns', 'beams'), 31 | MODELISATION = 'POU_D_T', 32 | PHENOMENE = 'MECANIQUE' 33 | ) 34 | ) 35 | ) 36 | 37 | element = AFFE_CARA_ELEM( 38 | MODELE = model, 39 | COQUE = ( 40 | _F( 41 | GROUP_MA = ('walls', 'slab', 'roof'), 42 | EPAIS = 250.0, 43 | VECTEUR = (1.0, 0.0, 0.0) 44 | ) 45 | ), 46 | POUTRE = ( 47 | _F( 48 | GROUP_MA = 'columns', 49 | SECTION = 'RECTANGLE', 50 | CARA = ('HY', 'HZ'), 51 | VALE = (300.0, 300.0) 52 | ), 53 | _F( 54 | GROUP_MA = 'beams', 55 | SECTION = 'RECTANGLE', 56 | CARA = ('HY', 'HZ'), 57 | VALE = (250.0, 500.0) 58 | ) 59 | ) 60 | ) 61 | 62 | concrete = DEFI_MATERIAU( 63 | ELAS = _F( 64 | E = 30000.0, 65 | NU = 0.3, 66 | RHO = 25.0E-10 67 | ) 68 | ) 69 | 70 | material = AFFE_MATERIAU( 71 | MODELE = model, 72 | AFFE = ( 73 | _F( 74 | TOUT = 'OUI', 75 | MATER = concrete 76 | ) 77 | ) 78 | ) 79 | 80 | support = AFFE_CHAR_MECA( 81 | MODELE = model, 82 | DDL_IMPO = _F( 83 | GROUP_NO = ('columnBase', 'wallBase'), 84 | DX = 0, 85 | DY = 0, 86 | DZ = 0, 87 | DRX = 0, 88 | DRY = 0, 89 | DRZ = 0, 90 | ) 91 | ) 92 | 93 | weight = AFFE_CHAR_MECA( 94 | MODELE = model, 95 | PESANTEUR = _F( 96 | GRAVITE = gGrav, 97 | DIRECTION = (0.0, 0.0, -1.0) 98 | ) 99 | ) 100 | 101 | mass = POST_ELEM( 102 | TITRE = 'Masses', 103 | MODELE = model, 104 | CARA_ELEM = element, 105 | CHAM_MATER = material, 106 | MASS_INER = ( 107 | _F( 108 | TOUT = 'OUI' 109 | ), 110 | _F( 111 | GROUP_MA = ('walls', 'slab', 'roof', 'columns', 'beams') 112 | ) 113 | ) 114 | ) 115 | 116 | IMPR_TABLE( 117 | TABLE = mass, 118 | UNITE = 10, 119 | NOM_PARA = ('LIEU', 'MASSE', 'CDG_X', 'CDG_Y', 'CDG_Z'), 120 | FORMAT_R = '1PE12.3' 121 | ) 122 | 123 | ASSEMBLAGE( 124 | MODELE = model, 125 | CARA_ELEM = element, 126 | CHAM_MATER = material, 127 | CHARGE = support, 128 | NUME_DDL = CO('NUMEDDL'), 129 | MATR_ASSE = ( 130 | _F( 131 | OPTION = 'RIGI_MECA', 132 | MATRICE = CO('K_MAT') 133 | ), 134 | _F( 135 | OPTION = 'MASS_MECA', 136 | MATRICE = CO('M_MAT') 137 | ) 138 | ) 139 | ) 140 | 141 | modes = CALC_MODES( 142 | MATR_RIGI = K_MAT, 143 | MATR_MASS = M_MAT, 144 | OPTION = 'PLUS_PETITE', 145 | CALC_FREQ = _F( 146 | NMAX_FREQ = nModes 147 | ) 148 | ) 149 | 150 | IMPR_RESU( 151 | FORMAT = 'RESULTAT', 152 | UNITE = 10, 153 | RESU = _F( 154 | RESULTAT = modes, 155 | TOUT_CHAM = 'NON', 156 | NOM_PARA = ('FREQ', 'MASS_EFFE_DX', 'MASS_EFFE_DY', 'MASS_EFFE_DZ'), 157 | FORMAT_R = '1PE12.3', 158 | FORM_TABL = 'OUI', 159 | ) 160 | ) 161 | 162 | IMPR_RESU( 163 | FORMAT = 'MED', 164 | UNITE = 80, 165 | RESU = _F( 166 | RESULTAT = modes, 167 | NOM_CHAM=('DEPL') 168 | ) 169 | ) 170 | 171 | resLin = MECA_STATIQUE( 172 | MODELE = model, 173 | CARA_ELEM = element, 174 | CHAM_MATER = material, 175 | EXCIT = ( 176 | _F( 177 | CHARGE = support 178 | ), 179 | _F( 180 | CHARGE = weight 181 | ) 182 | ) 183 | ) 184 | 185 | IMPR_RESU( 186 | FORMAT = 'MED', 187 | UNITE = 80, 188 | RESU = _F( 189 | RESULTAT = resLin, 190 | NOM_CHAM=('DEPL') 191 | ) 192 | ) 193 | 194 | # FIN() 195 | 196 | timeStep = DEFI_LIST_REEL( 197 | DEBUT = 0.0, 198 | INTERVALLE = _F( 199 | PAS = dt, 200 | JUSQU_A = tFin 201 | ) 202 | ) 203 | 204 | accRaw_X = LIRE_FONCTION( 205 | UNITE = 30, 206 | NOM_PARA = 'INST', 207 | NOM_RESU = 'ACC', 208 | INDIC_PARA = [1,1], 209 | INDIC_RESU = [1,2] 210 | ) 211 | 212 | accSc_X = CALC_FONCTION( 213 | COMB = _F( 214 | FONCTION = accRaw_X, 215 | COEF = gGrav 216 | ) 217 | ) 218 | 219 | accIn_X = CALC_FONC_INTERP( 220 | FONCTION = accSc_X, 221 | INTERPOL = 'LIN', 222 | LIST_PARA = timeStep, 223 | NOM_PARA = 'INST', 224 | NOM_RESU = 'ACC' 225 | ) 226 | 227 | dir_X = CALC_CHAR_SEISME( 228 | DIRECTION = (1.0, 0.0, 0.0), 229 | MATR_MASS = M_MAT, 230 | MONO_APPUI = 'OUI' 231 | ) 232 | 233 | accF_X = AFFE_CHAR_MECA( 234 | MODELE = model, 235 | VECT_ASSE = dir_X 236 | ) 237 | 238 | accRaw_Y = LIRE_FONCTION( 239 | UNITE = 31, 240 | NOM_PARA = 'INST', 241 | NOM_RESU = 'ACC', 242 | INDIC_PARA = [1,1], 243 | INDIC_RESU = [1,2] 244 | ) 245 | 246 | accSc_Y = CALC_FONCTION( 247 | COMB = _F( 248 | FONCTION = accRaw_Y, 249 | COEF = gGrav 250 | ) 251 | ) 252 | 253 | accIn_Y = CALC_FONC_INTERP( 254 | FONCTION = accSc_Y, 255 | INTERPOL = 'LIN', 256 | LIST_PARA = timeStep, 257 | NOM_PARA = 'INST', 258 | NOM_RESU = 'ACC' 259 | ) 260 | 261 | dir_Y = CALC_CHAR_SEISME( 262 | DIRECTION = (0.0, 1.0, 0.0), 263 | MATR_MASS = M_MAT, 264 | MONO_APPUI = 'OUI' 265 | ) 266 | 267 | accF_Y = AFFE_CHAR_MECA( 268 | MODELE = model, 269 | VECT_ASSE = dir_Y 270 | ) 271 | 272 | resLin_D = CREA_CHAMP( 273 | OPERATION = 'EXTR', 274 | TYPE_CHAM = 'NOEU_DEPL_R', 275 | NOM_CHAM = 'DEPL', 276 | RESULTAT = resLin 277 | ) 278 | 279 | resDyna = DYNA_VIBRA( 280 | MODELE = model, 281 | CARA_ELEM = element, 282 | CHAM_MATER = material, 283 | TYPE_CALCUL = 'TRAN', 284 | BASE_CALCUL = 'PHYS', 285 | MATR_RIGI = K_MAT, 286 | MATR_MASS = M_MAT, 287 | ETAT_INIT = _F( 288 | DEPL = resLin_D 289 | ), 290 | EXCIT = ( 291 | _F( 292 | CHARGE = weight 293 | ), 294 | _F( 295 | CHARGE = accF_X, 296 | FONC_MULT = accIn_X, 297 | ), 298 | _F( 299 | CHARGE = accF_Y, 300 | FONC_MULT = accIn_Y, 301 | ) 302 | ), 303 | AMOR_MODAL = _F( 304 | NB_MODE = 5, 305 | AMOR_REDUIT = (damping,), 306 | MODE_MECA = modes 307 | ), 308 | INCREMENT = _F( 309 | LIST_INST = timeStep, 310 | INST_FIN = tFin 311 | ), 312 | ARCHIVAGE = _F( 313 | PAS_ARCH = archiveStep, 314 | CHAM_EXCLU = ('VITE',) 315 | ), 316 | SCHEMA_TEMPS=_F( 317 | SCHEMA = 'NEWMARK', 318 | BETA = 0.25, 319 | GAMMA = 0.5 320 | ) 321 | ) 322 | 323 | disp_X = POST_RELEVE_T( 324 | ACTION = _F( 325 | INTITULE = 'disp_X', 326 | OPERATION = 'MOYENNE_ARITH', 327 | RESULTAT = resDyna, 328 | GROUP_MA = 'roof', 329 | NOM_CHAM = 'DEPL', 330 | NOM_CMP = 'DX' 331 | ) 332 | ) 333 | 334 | disp_X = CALC_TABLE( 335 | reuse = disp_X, 336 | TABLE = disp_X, 337 | ACTION = ( 338 | _F( 339 | OPERATION = 'EXTR', 340 | NOM_PARA = ('INST', 'MOYENNE') 341 | ), 342 | _F( 343 | OPERATION = 'RENOMME', 344 | NOM_PARA = ('MOYENNE', 'disp_X') 345 | ) 346 | ) 347 | ) 348 | 349 | disp_Y = POST_RELEVE_T( 350 | ACTION = _F( 351 | INTITULE = 'disp_Y', 352 | OPERATION = 'MOYENNE_ARITH', 353 | RESULTAT = resDyna, 354 | GROUP_MA = 'roof', 355 | NOM_CHAM = 'DEPL', 356 | NOM_CMP = 'DY' 357 | ) 358 | ) 359 | 360 | disp_Y = CALC_TABLE( 361 | reuse = disp_Y, 362 | TABLE = disp_Y, 363 | ACTION = ( 364 | _F( 365 | OPERATION = 'EXTR', 366 | NOM_PARA = ('INST', 'MOYENNE') 367 | ), 368 | _F( 369 | OPERATION = 'RENOMME', 370 | NOM_PARA = ('MOYENNE', 'disp_Y') 371 | ) 372 | ) 373 | ) 374 | 375 | disp_Tab = CALC_TABLE( 376 | TABLE = disp_X, 377 | ACTION = ( 378 | _F( 379 | OPERATION = 'COMB', 380 | TABLE = disp_Y, 381 | NOM_PARA = 'INST' 382 | ) 383 | ) 384 | ) 385 | 386 | IMPR_TABLE( 387 | TABLE = disp_Tab, 388 | UNITE = 11, 389 | FORMAT_R = '1PE12.3' 390 | ) 391 | 392 | IMPR_RESU( 393 | FORMAT = 'MED', 394 | UNITE = 81, 395 | RESU = _F( 396 | RESULTAT = resDyna, 397 | NOM_CHAM = ('DEPL', 'ACCE') 398 | ) 399 | ) 400 | 401 | FIN() 402 | -------------------------------------------------------------------------------- /LDA-Example/model.med: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jesusbill/code-aster-examples/73de5facfc4cf609b11ea66822cf0457986970b2/LDA-Example/model.med -------------------------------------------------------------------------------- /LDA-Example/processing.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import pandas as pd\n", 10 | "%matplotlib ipympl" 11 | ] 12 | }, 13 | { 14 | "cell_type": "code", 15 | "execution_count": 2, 16 | "metadata": {}, 17 | "outputs": [ 18 | { 19 | "data": { 20 | "application/vnd.jupyter.widget-view+json": { 21 | "model_id": "a39874b8d851407d8dab3a4473e4f6ae", 22 | "version_major": 2, 23 | "version_minor": 0 24 | }, 25 | "text/plain": [ 26 | "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" 27 | ] 28 | }, 29 | "metadata": {}, 30 | "output_type": "display_data" 31 | }, 32 | { 33 | "data": { 34 | "application/vnd.jupyter.widget-view+json": { 35 | "model_id": "048c9d20448f4898adce1be1163771df", 36 | "version_major": 2, 37 | "version_minor": 0 38 | }, 39 | "text/plain": [ 40 | "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" 41 | ] 42 | }, 43 | "metadata": {}, 44 | "output_type": "display_data" 45 | }, 46 | { 47 | "data": { 48 | "text/plain": [ 49 | "" 50 | ] 51 | }, 52 | "execution_count": 2, 53 | "metadata": {}, 54 | "output_type": "execute_result" 55 | } 56 | ], 57 | "source": [ 58 | "gm1 = pd.read_csv('A-TMZ000.txt', header=4, delimiter='\\t')\n", 59 | "gm2 = pd.read_csv('A-TMZ270.txt', header=4, delimiter='\\t')\n", 60 | "gm1.plot(x='time', grid=True)\n", 61 | "gm2.plot(x='time', grid=True)" 62 | ] 63 | }, 64 | { 65 | "cell_type": "code", 66 | "execution_count": 3, 67 | "metadata": {}, 68 | "outputs": [ 69 | { 70 | "data": { 71 | "application/vnd.jupyter.widget-view+json": { 72 | "model_id": "cfaeac72141a4024990b9796020c2a5c", 73 | "version_major": 2, 74 | "version_minor": 0 75 | }, 76 | "text/plain": [ 77 | "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" 78 | ] 79 | }, 80 | "metadata": {}, 81 | "output_type": "display_data" 82 | }, 83 | { 84 | "data": { 85 | "text/plain": [ 86 | "" 87 | ] 88 | }, 89 | "execution_count": 3, 90 | "metadata": {}, 91 | "output_type": "execute_result" 92 | } 93 | ], 94 | "source": [ 95 | "res = pd.read_csv('seismic.resu', header=3, delimiter='\\s+')\n", 96 | "res.plot(x='INST', grid=True)" 97 | ] 98 | }, 99 | { 100 | "cell_type": "code", 101 | "execution_count": 4, 102 | "metadata": {}, 103 | "outputs": [ 104 | { 105 | "name": "stdout", 106 | "output_type": "stream", 107 | "text": [ 108 | "-20.98 17.45 -19.38 21.96\n" 109 | ] 110 | } 111 | ], 112 | "source": [ 113 | "print(\n", 114 | " min(res['disp_X']),\n", 115 | " max(res['disp_X']),\n", 116 | " min(res['disp_Y']),\n", 117 | " max(res['disp_Y'])\n", 118 | ")" 119 | ] 120 | }, 121 | { 122 | "cell_type": "code", 123 | "execution_count": null, 124 | "metadata": {}, 125 | "outputs": [], 126 | "source": [] 127 | } 128 | ], 129 | "metadata": { 130 | "kernelspec": { 131 | "display_name": "Python 3", 132 | "language": "python", 133 | "name": "python3" 134 | }, 135 | "language_info": { 136 | "codemirror_mode": { 137 | "name": "ipython", 138 | "version": 3 139 | }, 140 | "file_extension": ".py", 141 | "mimetype": "text/x-python", 142 | "name": "python", 143 | "nbconvert_exporter": "python", 144 | "pygments_lexer": "ipython3", 145 | "version": "3.8.2" 146 | } 147 | }, 148 | "nbformat": 4, 149 | "nbformat_minor": 4 150 | } 151 | -------------------------------------------------------------------------------- /LDA-Example/run.export: -------------------------------------------------------------------------------- 1 | P profastk jesusbill@Ubuntu-ThinkPad-P1:/home/jesusbill/Dev-Projects/github.com/Jesusbill/code-aster-examples/LDA-Modal-Example/run.astk 2 | P serveur localhost 3 | P username jesusbill 4 | P aster_root /home/jesusbill/salome_meca/V9_INTEGR_public_universal/tools/Code_aster_frontend-salomemeca 5 | P platform Linux64 6 | P protocol_exec asrun.plugins.server.SSHServer 7 | P protocol_copyto asrun.plugins.server.SCPServer 8 | P protocol_copyfrom asrun.plugins.server.SCPServer 9 | P proxy_dir /tmp 10 | P noeud localhost 11 | P mclient Ubuntu-ThinkPad-P1 12 | P uclient jesusbill 13 | P version stable 14 | P lang en 15 | P debug nodebug 16 | P mode interactif 17 | P ncpus 18 | P mpi_nbcpu 1 19 | P mpi_nbnoeud 1 20 | P classe 21 | P depart 22 | P after_job 23 | P distrib 24 | P exectool 25 | P multiple 26 | P nomjob run 27 | P origine ASTK 2019.0.final 28 | P display Ubuntu-ThinkPad-P1:1 29 | A args 30 | A memjeveux 625.0 31 | A tpmax 900 32 | P memjob 5120000 33 | P tpsjob 15 34 | P follow_output yes 35 | P nbmaxnook 5 36 | P cpresok RESNOOK 37 | P only_nook 38 | P facmtps 1 39 | P corefilesize unlimited 40 | F comm ./input.comm D 1 41 | F mmed ./model.med D 2 42 | F dat ./A-TMZ000.txt D 30 43 | F dat ./A-TMZ270.txt D 31 44 | F mess ./output.mess R 6 45 | F rmed ./modal.rmed R 80 46 | F rmed ./seismic.rmed R 81 47 | F resu ./modal.resu R 10 48 | F resu ./seismic.resu R 11 49 | P consbtc oui 50 | P soumbtc oui 51 | P actions make_etude 52 | -------------------------------------------------------------------------------- /LDA-Modal-Example/execution_time_linear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jesusbill/code-aster-examples/73de5facfc4cf609b11ea66822cf0457986970b2/LDA-Modal-Example/execution_time_linear.png -------------------------------------------------------------------------------- /LDA-Modal-Example/input.comm: -------------------------------------------------------------------------------- 1 | # Units N, mm, sec 2 | gGrav = 9806.0 3 | dt = 0.001 4 | tFin = 15.0 5 | archiveStep = 10 6 | damping = 0.05 7 | nModes = 10 8 | 9 | DEBUT() 10 | 11 | mesh = LIRE_MAILLAGE( 12 | FORMAT = 'MED', 13 | UNITE = 2 14 | ) 15 | 16 | model = AFFE_MODELE( 17 | MAILLAGE = mesh, 18 | AFFE = ( 19 | _F( 20 | TOUT = 'OUI', 21 | MODELISATION = '3D', 22 | PHENOMENE = 'MECANIQUE' 23 | ), 24 | _F( 25 | GROUP_MA = ('walls', 'slab', 'roof'), 26 | MODELISATION = 'DST', 27 | PHENOMENE = 'MECANIQUE' 28 | ), 29 | _F( 30 | GROUP_MA = ('columns', 'beams'), 31 | MODELISATION = 'POU_D_T', 32 | PHENOMENE = 'MECANIQUE' 33 | ) 34 | ) 35 | ) 36 | 37 | element = AFFE_CARA_ELEM( 38 | MODELE = model, 39 | COQUE = ( 40 | _F( 41 | GROUP_MA = ('walls', 'slab', 'roof'), 42 | EPAIS = 250.0, 43 | VECTEUR = (1.0, 0.0, 0.0) 44 | ) 45 | ), 46 | POUTRE = ( 47 | _F( 48 | GROUP_MA = 'columns', 49 | SECTION = 'RECTANGLE', 50 | CARA = ('HY', 'HZ'), 51 | VALE = (300.0, 300.0) 52 | ), 53 | _F( 54 | GROUP_MA = 'beams', 55 | SECTION = 'RECTANGLE', 56 | CARA = ('HY', 'HZ'), 57 | VALE = (250.0, 500.0) 58 | ) 59 | ) 60 | ) 61 | 62 | concrete = DEFI_MATERIAU( 63 | ELAS = _F( 64 | E = 30000.0, 65 | NU = 0.3, 66 | RHO = 25.0E-10 67 | ) 68 | ) 69 | 70 | material = AFFE_MATERIAU( 71 | MODELE = model, 72 | AFFE = ( 73 | _F( 74 | TOUT = 'OUI', 75 | MATER = concrete 76 | ) 77 | ) 78 | ) 79 | 80 | support = AFFE_CHAR_MECA( 81 | MODELE = model, 82 | DDL_IMPO = _F( 83 | GROUP_NO = ('columnBase', 'wallBase'), 84 | DX = 0, 85 | DY = 0, 86 | DZ = 0, 87 | DRX = 0, 88 | DRY = 0, 89 | DRZ = 0, 90 | ) 91 | ) 92 | 93 | weight = AFFE_CHAR_MECA( 94 | MODELE = model, 95 | PESANTEUR = _F( 96 | GRAVITE = gGrav, 97 | DIRECTION = (0.0, 0.0, -1.0) 98 | ) 99 | ) 100 | 101 | mass = POST_ELEM( 102 | TITRE = 'Masses', 103 | MODELE = model, 104 | CARA_ELEM = element, 105 | CHAM_MATER = material, 106 | MASS_INER = ( 107 | _F( 108 | TOUT = 'OUI' 109 | ), 110 | _F( 111 | GROUP_MA = ('walls', 'slab', 'roof', 'columns', 'beams') 112 | ) 113 | ) 114 | ) 115 | 116 | IMPR_TABLE( 117 | TABLE = mass, 118 | UNITE = 10, 119 | NOM_PARA = ('LIEU', 'MASSE', 'CDG_X', 'CDG_Y', 'CDG_Z'), 120 | FORMAT_R = '1PE12.3' 121 | ) 122 | 123 | ASSEMBLAGE( 124 | MODELE = model, 125 | CARA_ELEM = element, 126 | CHAM_MATER = material, 127 | CHARGE = support, 128 | NUME_DDL = CO('NUMEDDL'), 129 | MATR_ASSE = ( 130 | _F( 131 | OPTION = 'RIGI_MECA', 132 | MATRICE = CO('K_MAT') 133 | ), 134 | _F( 135 | OPTION = 'MASS_MECA', 136 | MATRICE = CO('M_MAT') 137 | ) 138 | ) 139 | ) 140 | 141 | modes = CALC_MODES( 142 | MATR_RIGI = K_MAT, 143 | MATR_MASS = M_MAT, 144 | OPTION = 'PLUS_PETITE', 145 | CALC_FREQ = _F( 146 | NMAX_FREQ = nModes 147 | ) 148 | ) 149 | 150 | IMPR_RESU( 151 | FORMAT = 'RESULTAT', 152 | UNITE = 10, 153 | RESU = _F( 154 | RESULTAT = modes, 155 | TOUT_CHAM = 'NON', 156 | NOM_PARA = ('FREQ', 'MASS_EFFE_DX', 'MASS_EFFE_DY', 'MASS_EFFE_DZ'), 157 | FORMAT_R = '1PE12.3', 158 | FORM_TABL = 'OUI', 159 | ) 160 | ) 161 | 162 | IMPR_RESU( 163 | FORMAT = 'MED', 164 | UNITE = 80, 165 | RESU = _F( 166 | RESULTAT = modes, 167 | NOM_CHAM=('DEPL') 168 | ) 169 | ) 170 | 171 | timeGrav = DEFI_LIST_REEL( 172 | DEBUT = -1.0, 173 | INTERVALLE = _F( 174 | PAS = 0.01, 175 | JUSQU_A = 0.0 176 | ) 177 | ) 178 | 179 | timeStep = DEFI_LIST_REEL( 180 | DEBUT = 0.0, 181 | INTERVALLE = _F( 182 | PAS = dt, 183 | JUSQU_A = tFin 184 | ) 185 | ) 186 | 187 | timeArch = DEFI_LIST_REEL( 188 | DEBUT = 0.0, 189 | INTERVALLE = _F( 190 | PAS = dt * archiveStep, 191 | JUSQU_A = tFin 192 | ) 193 | ) 194 | 195 | weight_F = DEFI_FONCTION( 196 | NOM_PARA = 'INST', 197 | PROL_DROITE = 'CONSTANT', 198 | PROL_GAUCHE = 'CONSTANT', 199 | VALE = ( 200 | -1.0, 0.0, 201 | 0.0, 1.0 202 | ) 203 | ) 204 | 205 | accRaw_X = LIRE_FONCTION( 206 | UNITE = 30, 207 | NOM_PARA = 'INST', 208 | NOM_RESU = 'ACC', 209 | INDIC_PARA = [1,1], 210 | INDIC_RESU = [1,2] 211 | ) 212 | 213 | accSc_X = CALC_FONCTION( 214 | COMB = _F( 215 | FONCTION = accRaw_X, 216 | COEF = gGrav 217 | ) 218 | ) 219 | 220 | accIn_X = CALC_FONC_INTERP( 221 | FONCTION = accSc_X, 222 | INTERPOL = 'LIN', 223 | LIST_PARA = timeStep, 224 | NOM_PARA = 'INST', 225 | NOM_RESU = 'ACC' 226 | ) 227 | 228 | dir_X = CALC_CHAR_SEISME( 229 | DIRECTION = (1.0, 0.0, 0.0), 230 | MATR_MASS = M_MAT, 231 | MONO_APPUI = 'OUI' 232 | ) 233 | 234 | accF_X = AFFE_CHAR_MECA( 235 | MODELE = model, 236 | VECT_ASSE = dir_X 237 | ) 238 | 239 | accRaw_Y = LIRE_FONCTION( 240 | UNITE = 31, 241 | NOM_PARA = 'INST', 242 | NOM_RESU = 'ACC', 243 | INDIC_PARA = [1,1], 244 | INDIC_RESU = [1,2] 245 | ) 246 | 247 | accSc_Y = CALC_FONCTION( 248 | COMB = _F( 249 | FONCTION = accRaw_Y, 250 | COEF = gGrav 251 | ) 252 | ) 253 | 254 | accIn_Y = CALC_FONC_INTERP( 255 | FONCTION = accSc_Y, 256 | INTERPOL = 'LIN', 257 | LIST_PARA = timeStep, 258 | NOM_PARA = 'INST', 259 | NOM_RESU = 'ACC' 260 | ) 261 | 262 | dir_Y = CALC_CHAR_SEISME( 263 | DIRECTION = (0.0, 1.0, 0.0), 264 | MATR_MASS = M_MAT, 265 | MONO_APPUI = 'OUI' 266 | ) 267 | 268 | accF_Y = AFFE_CHAR_MECA( 269 | MODELE = model, 270 | VECT_ASSE = dir_Y 271 | ) 272 | 273 | ASSEMBLAGE( 274 | MODELE = model, 275 | CARA_ELEM = element, 276 | CHAM_MATER = material, 277 | CHARGE = support, 278 | NUME_DDL = NUMEDDL, 279 | VECT_ASSE = ( 280 | _F( 281 | CHARGE = accF_X, 282 | OPTION = 'CHAR_MECA', 283 | VECTEUR = CO('accF_XV') 284 | ), 285 | _F( 286 | CHARGE = accF_Y, 287 | OPTION = 'CHAR_MECA', 288 | VECTEUR = CO('accF_YV') 289 | ), 290 | _F( 291 | CHARGE = weight, 292 | OPTION = 'CHAR_MECA', 293 | VECTEUR = CO('weight_V') 294 | ) 295 | ) 296 | ) 297 | 298 | PROJ_BASE( 299 | BASE = modes, 300 | MATR_ASSE_GENE = ( 301 | _F( 302 | MATR_ASSE = K_MAT, 303 | MATRICE = CO('K_MAT_G') 304 | ), 305 | _F( 306 | MATR_ASSE = M_MAT, 307 | MATRICE = CO('M_MAT_G') 308 | ) 309 | ), 310 | VECT_ASSE_GENE = ( 311 | _F( 312 | VECT_ASSE = accF_XV, 313 | TYPE_VECT = 'FORC', 314 | VECTEUR = CO('accF_XG') 315 | ), 316 | _F( 317 | VECT_ASSE = accF_YV, 318 | TYPE_VECT = 'FORC', 319 | VECTEUR = CO('accF_YG') 320 | ), 321 | _F( 322 | VECT_ASSE = weight_V, 323 | TYPE_VECT = 'FORC', 324 | VECTEUR = CO('weight_G') 325 | ) 326 | ) 327 | ) 328 | 329 | resGrav = DYNA_VIBRA( 330 | TYPE_CALCUL = 'TRAN', 331 | BASE_CALCUL = 'GENE', 332 | MATR_RIGI = K_MAT_G, 333 | MATR_MASS = M_MAT_G, 334 | EXCIT = ( 335 | _F( 336 | VECT_ASSE_GENE = weight_G, 337 | FONC_MULT = weight_F 338 | ) 339 | ), 340 | AMOR_MODAL = _F( 341 | AMOR_REDUIT = tuple([0.2] * nModes) 342 | ), 343 | INCREMENT = _F( 344 | LIST_INST = timeGrav 345 | ), 346 | SCHEMA_TEMPS=_F( 347 | SCHEMA = 'NEWMARK', 348 | BETA = 0.25, 349 | GAMMA = 0.5 350 | ), 351 | ) 352 | 353 | resGene = DYNA_VIBRA( 354 | TYPE_CALCUL = 'TRAN', 355 | BASE_CALCUL = 'GENE', 356 | MATR_RIGI = K_MAT_G, 357 | MATR_MASS = M_MAT_G, 358 | ETAT_INIT = _F( 359 | RESULTAT = resGrav 360 | ), 361 | EXCIT = ( 362 | _F( 363 | VECT_ASSE_GENE = weight_G, 364 | FONC_MULT = weight_F 365 | ), 366 | _F( 367 | VECT_ASSE_GENE = accF_XG, 368 | FONC_MULT = accIn_X 369 | ), 370 | _F( 371 | VECT_ASSE_GENE = accF_YG, 372 | FONC_MULT = accIn_Y 373 | ) 374 | ), 375 | AMOR_MODAL = _F( 376 | AMOR_REDUIT = tuple([damping] * nModes) 377 | ), 378 | INCREMENT = _F( 379 | LIST_INST = timeStep 380 | ), 381 | SCHEMA_TEMPS=_F( 382 | SCHEMA = 'NEWMARK', 383 | BETA = 0.25, 384 | GAMMA = 0.5 385 | ) 386 | ) 387 | 388 | resDyna = REST_GENE_PHYS( 389 | NOM_CHAM = ('DEPL', 'ACCE'), 390 | RESU_GENE = resGene, 391 | LIST_INST = timeArch, 392 | PRECISION = 1.0E-06, 393 | CRITERE = 'ABSOLU' 394 | ) 395 | 396 | disp_X = POST_RELEVE_T( 397 | ACTION = _F( 398 | INTITULE = 'disp_X', 399 | OPERATION = 'MOYENNE_ARITH', 400 | RESULTAT = resDyna, 401 | GROUP_MA = 'roof', 402 | NOM_CHAM = 'DEPL', 403 | NOM_CMP = 'DX' 404 | ) 405 | ) 406 | 407 | disp_X = CALC_TABLE( 408 | reuse = disp_X, 409 | TABLE = disp_X, 410 | ACTION = ( 411 | _F( 412 | OPERATION = 'EXTR', 413 | NOM_PARA = ('INST', 'MOYENNE') 414 | ), 415 | _F( 416 | OPERATION = 'RENOMME', 417 | NOM_PARA = ('MOYENNE', 'disp_X') 418 | ) 419 | ) 420 | ) 421 | 422 | disp_Y = POST_RELEVE_T( 423 | ACTION = _F( 424 | INTITULE = 'disp_Y', 425 | OPERATION = 'MOYENNE_ARITH', 426 | RESULTAT = resDyna, 427 | GROUP_MA = 'roof', 428 | NOM_CHAM = 'DEPL', 429 | NOM_CMP = 'DY' 430 | ) 431 | ) 432 | 433 | disp_Y = CALC_TABLE( 434 | reuse = disp_Y, 435 | TABLE = disp_Y, 436 | ACTION = ( 437 | _F( 438 | OPERATION = 'EXTR', 439 | NOM_PARA = ('INST', 'MOYENNE') 440 | ), 441 | _F( 442 | OPERATION = 'RENOMME', 443 | NOM_PARA = ('MOYENNE', 'disp_Y') 444 | ) 445 | ) 446 | ) 447 | 448 | disp_Tab = CALC_TABLE( 449 | TABLE = disp_X, 450 | ACTION = ( 451 | _F( 452 | OPERATION = 'COMB', 453 | TABLE = disp_Y, 454 | NOM_PARA = 'INST' 455 | ) 456 | ) 457 | ) 458 | 459 | IMPR_TABLE( 460 | TABLE = disp_Tab, 461 | UNITE = 11, 462 | FORMAT_R = '1PE12.3' 463 | ) 464 | 465 | IMPR_RESU( 466 | FORMAT = 'MED', 467 | UNITE = 81, 468 | RESU = _F( 469 | RESULTAT = resDyna, 470 | NOM_CHAM = ('DEPL', 'ACCE') 471 | ) 472 | ) 473 | 474 | FIN() 475 | -------------------------------------------------------------------------------- /LDA-Modal-Example/model.med: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jesusbill/code-aster-examples/73de5facfc4cf609b11ea66822cf0457986970b2/LDA-Modal-Example/model.med -------------------------------------------------------------------------------- /LDA-Modal-Example/processing.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import pandas as pd\n", 10 | "%matplotlib ipympl" 11 | ] 12 | }, 13 | { 14 | "cell_type": "code", 15 | "execution_count": 2, 16 | "metadata": {}, 17 | "outputs": [ 18 | { 19 | "data": { 20 | "application/vnd.jupyter.widget-view+json": { 21 | "model_id": "d59bfccdeb9a4c32a988e3b7de92a50c", 22 | "version_major": 2, 23 | "version_minor": 0 24 | }, 25 | "text/plain": [ 26 | "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" 27 | ] 28 | }, 29 | "metadata": {}, 30 | "output_type": "display_data" 31 | }, 32 | { 33 | "data": { 34 | "application/vnd.jupyter.widget-view+json": { 35 | "model_id": "9e186a3eeecb410abf213ba86f1a5258", 36 | "version_major": 2, 37 | "version_minor": 0 38 | }, 39 | "text/plain": [ 40 | "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" 41 | ] 42 | }, 43 | "metadata": {}, 44 | "output_type": "display_data" 45 | }, 46 | { 47 | "data": { 48 | "text/plain": [ 49 | "" 50 | ] 51 | }, 52 | "execution_count": 2, 53 | "metadata": {}, 54 | "output_type": "execute_result" 55 | } 56 | ], 57 | "source": [ 58 | "gm1 = pd.read_csv('A-TMZ000.txt', header=4, delimiter='\\t')\n", 59 | "gm2 = pd.read_csv('A-TMZ270.txt', header=4, delimiter='\\t')\n", 60 | "gm1.plot(x='time', grid=True)\n", 61 | "gm2.plot(x='time', grid=True)" 62 | ] 63 | }, 64 | { 65 | "cell_type": "code", 66 | "execution_count": 3, 67 | "metadata": {}, 68 | "outputs": [ 69 | { 70 | "data": { 71 | "application/vnd.jupyter.widget-view+json": { 72 | "model_id": "293217e76c6f47a9803a1052aac5485a", 73 | "version_major": 2, 74 | "version_minor": 0 75 | }, 76 | "text/plain": [ 77 | "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" 78 | ] 79 | }, 80 | "metadata": {}, 81 | "output_type": "display_data" 82 | }, 83 | { 84 | "data": { 85 | "text/plain": [ 86 | "" 87 | ] 88 | }, 89 | "execution_count": 3, 90 | "metadata": {}, 91 | "output_type": "execute_result" 92 | } 93 | ], 94 | "source": [ 95 | "res = pd.read_csv('seismic.resu', header=3, delimiter='\\s+')\n", 96 | "res.plot(x='INST', grid=True)" 97 | ] 98 | }, 99 | { 100 | "cell_type": "code", 101 | "execution_count": 4, 102 | "metadata": {}, 103 | "outputs": [ 104 | { 105 | "name": "stdout", 106 | "output_type": "stream", 107 | "text": [ 108 | "-21.05 17.57 -19.39 22.02\n" 109 | ] 110 | } 111 | ], 112 | "source": [ 113 | "print(\n", 114 | " min(res['disp_X']),\n", 115 | " max(res['disp_X']),\n", 116 | " min(res['disp_Y']),\n", 117 | " max(res['disp_Y'])\n", 118 | ")" 119 | ] 120 | }, 121 | { 122 | "cell_type": "code", 123 | "execution_count": null, 124 | "metadata": {}, 125 | "outputs": [], 126 | "source": [] 127 | } 128 | ], 129 | "metadata": { 130 | "kernelspec": { 131 | "display_name": "Python 3", 132 | "language": "python", 133 | "name": "python3" 134 | }, 135 | "language_info": { 136 | "codemirror_mode": { 137 | "name": "ipython", 138 | "version": 3 139 | }, 140 | "file_extension": ".py", 141 | "mimetype": "text/x-python", 142 | "name": "python", 143 | "nbconvert_exporter": "python", 144 | "pygments_lexer": "ipython3", 145 | "version": "3.8.2" 146 | } 147 | }, 148 | "nbformat": 4, 149 | "nbformat_minor": 4 150 | } 151 | -------------------------------------------------------------------------------- /LDA-Modal-Example/run.export: -------------------------------------------------------------------------------- 1 | P profastk jesusbill@Ubuntu-ThinkPad-P1:/home/jesusbill/Dev-Projects/github.com/Jesusbill/code-aster-examples/LDA-Modal-Example/run.astk 2 | P serveur localhost 3 | P username jesusbill 4 | P aster_root /home/jesusbill/salome_meca/V9_INTEGR_public_universal/tools/Code_aster_frontend-salomemeca 5 | P platform Linux64 6 | P protocol_exec asrun.plugins.server.SSHServer 7 | P protocol_copyto asrun.plugins.server.SCPServer 8 | P protocol_copyfrom asrun.plugins.server.SCPServer 9 | P proxy_dir /tmp 10 | P noeud localhost 11 | P mclient Ubuntu-ThinkPad-P1 12 | P uclient jesusbill 13 | P version stable 14 | P lang en 15 | P debug nodebug 16 | P mode interactif 17 | P ncpus 18 | P mpi_nbcpu 1 19 | P mpi_nbnoeud 1 20 | P classe 21 | P depart 22 | P after_job 23 | P distrib 24 | P exectool 25 | P multiple 26 | P nomjob run 27 | P origine ASTK 2019.0.final 28 | P display Ubuntu-ThinkPad-P1:1 29 | A args 30 | A memjeveux 625.0 31 | A tpmax 900 32 | P memjob 5120000 33 | P tpsjob 15 34 | P follow_output yes 35 | P nbmaxnook 5 36 | P cpresok RESNOOK 37 | P only_nook 38 | P facmtps 1 39 | P corefilesize unlimited 40 | F comm ./input.comm D 1 41 | F mmed ./model.med D 2 42 | F dat ./A-TMZ000.txt D 30 43 | F dat ./A-TMZ270.txt D 31 44 | F mess ./output.mess R 6 45 | F rmed ./modal.rmed R 80 46 | F rmed ./seismic.rmed R 81 47 | F resu ./modal.resu R 10 48 | F resu ./seismic.resu R 11 49 | P consbtc oui 50 | P soumbtc oui 51 | P actions make_etude 52 | -------------------------------------------------------------------------------- /LICENCE.md: -------------------------------------------------------------------------------- 1 | ## License 2 | All content is licensed under an open-source, 'copyleft' license: 3 | [Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)](https://creativecommons.org/licenses/by-sa/4.0/) 4 | ![Attribution-ShareAlike 4.0 International](http://i.creativecommons.org/l/by-sa/3.0/88x31.png) 5 | -------------------------------------------------------------------------------- /NLDA-Example/input.comm: -------------------------------------------------------------------------------- 1 | # Units N, mm, sec 2 | gGrav = 9806.0 3 | dt = 0.01 4 | tFin = 15 5 | archiveStep = 1 6 | damping = 0.05 7 | k_dis = 2.E7 8 | nModes = 10 9 | 10 | DEBUT() 11 | 12 | mesh_ini = LIRE_MAILLAGE( 13 | FORMAT = 'MED', 14 | UNITE = 2 15 | ) 16 | 17 | mesh = CREA_MAILLAGE( 18 | MAILLAGE = mesh_ini, 19 | CREA_POI1 = _F( 20 | GROUP_NO = ('columnBase', 'wallBase'), 21 | NOM_GROUP_MA = 'contactBase' 22 | ) 23 | ) 24 | 25 | model = AFFE_MODELE( 26 | MAILLAGE = mesh, 27 | AFFE = ( 28 | _F( 29 | TOUT = 'OUI', 30 | MODELISATION = '3D', 31 | PHENOMENE = 'MECANIQUE' 32 | ), 33 | _F( 34 | GROUP_MA = ('walls', 'slab', 'roof'), 35 | MODELISATION = 'DKT', 36 | PHENOMENE = 'MECANIQUE' 37 | ), 38 | _F( 39 | GROUP_MA = ('columns', 'beams'), 40 | MODELISATION = 'POU_D_T', 41 | PHENOMENE = 'MECANIQUE' 42 | ), 43 | _F( 44 | GROUP_MA = 'contactBase', 45 | MODELISATION = 'DIS_T', 46 | PHENOMENE = 'MECANIQUE' 47 | ) 48 | ) 49 | ) 50 | 51 | element = AFFE_CARA_ELEM( 52 | MODELE = model, 53 | COQUE = ( 54 | _F( 55 | GROUP_MA = ('walls', 'slab', 'roof'), 56 | EPAIS = 250.0, 57 | VECTEUR = (1.0, 0.0, 0.0) 58 | ) 59 | ), 60 | POUTRE = ( 61 | _F( 62 | GROUP_MA = 'columns', 63 | SECTION = 'RECTANGLE', 64 | CARA = ('HY', 'HZ'), 65 | VALE = (300.0, 300.0) 66 | ), 67 | _F( 68 | GROUP_MA = 'beams', 69 | SECTION = 'RECTANGLE', 70 | CARA = ('HY', 'HZ'), 71 | VALE = (250.0, 500.0) 72 | ) 73 | ), 74 | DISCRET = ( 75 | _F( 76 | CARA = 'K_T_D_N', 77 | GROUP_MA = 'contactBase', 78 | VALE = (k_dis, 0.0, 0.0), 79 | REPERE = 'LOCAL' 80 | ), 81 | _F( 82 | CARA = 'M_T_D_N', 83 | GROUP_MA = 'contactBase', 84 | VALE = (0.0,) 85 | ), 86 | _F( 87 | CARA = 'A_T_D_N', 88 | GROUP_MA = 'contactBase', 89 | VALE = (0.0, 0.0, 0.0) 90 | ) 91 | ), 92 | ORIENTATION = ( 93 | _F( 94 | CARA = 'VECT_X_Y', 95 | GROUP_MA = 'contactBase', 96 | VALE = (0., 0., -1., 0., 1., 0.) 97 | ) 98 | ) 99 | ) 100 | 101 | concrete = DEFI_MATERIAU( 102 | ELAS = _F( 103 | E = 30000.0, 104 | NU = 0.3, 105 | RHO = 25.0E-10 106 | ) 107 | ) 108 | 109 | contact = DEFI_MATERIAU( 110 | DIS_CONTACT = _F( 111 | RIGI_NOR = k_dis 112 | ) 113 | ) 114 | 115 | material = AFFE_MATERIAU( 116 | MODELE = model, 117 | AFFE = ( 118 | _F( 119 | TOUT = 'OUI', 120 | MATER = concrete 121 | ), 122 | _F( 123 | GROUP_MA = 'contactBase', 124 | MATER = contact 125 | ) 126 | ) 127 | ) 128 | 129 | support = AFFE_CHAR_MECA( 130 | MODELE = model, 131 | DDL_IMPO = _F( 132 | GROUP_NO = ('columnBase', 'wallBase'), 133 | DX = 0, 134 | DY = 0, 135 | DRX = 0, 136 | DRY = 0, 137 | DRZ = 0, 138 | ) 139 | ) 140 | 141 | weight = AFFE_CHAR_MECA( 142 | MODELE = model, 143 | PESANTEUR = _F( 144 | GRAVITE = gGrav, 145 | DIRECTION = (0.0, 0.0, -1.0) 146 | ) 147 | ) 148 | 149 | mass = POST_ELEM( 150 | TITRE = 'Masses', 151 | MODELE = model, 152 | CARA_ELEM = element, 153 | CHAM_MATER = material, 154 | MASS_INER = ( 155 | _F( 156 | TOUT = 'OUI' 157 | ), 158 | _F( 159 | GROUP_MA = ('walls', 'slab', 'roof', 'columns', 'beams') 160 | ) 161 | ) 162 | ) 163 | 164 | IMPR_TABLE( 165 | TABLE = mass, 166 | UNITE = 10, 167 | NOM_PARA = ('LIEU', 'MASSE', 'CDG_X', 'CDG_Y', 'CDG_Z'), 168 | FORMAT_R = '1PE12.3' 169 | ) 170 | 171 | ASSEMBLAGE( 172 | MODELE = model, 173 | CARA_ELEM = element, 174 | CHAM_MATER = material, 175 | CHARGE = support, 176 | NUME_DDL = CO('NUMEDDL'), 177 | MATR_ASSE = ( 178 | _F( 179 | OPTION = 'RIGI_MECA', 180 | MATRICE = CO('K_MAT') 181 | ), 182 | _F( 183 | OPTION = 'MASS_MECA', 184 | MATRICE = CO('M_MAT') 185 | ) 186 | ) 187 | ) 188 | 189 | modes = CALC_MODES( 190 | MATR_RIGI = K_MAT, 191 | MATR_MASS = M_MAT, 192 | OPTION = 'PLUS_PETITE', 193 | CALC_FREQ = _F( 194 | NMAX_FREQ = nModes 195 | ) 196 | ) 197 | 198 | IMPR_RESU( 199 | FORMAT = 'RESULTAT', 200 | UNITE = 10, 201 | RESU = _F( 202 | RESULTAT = modes, 203 | TOUT_CHAM = 'NON', 204 | NOM_PARA = ('FREQ', 'MASS_EFFE_DX', 'MASS_EFFE_DY', 'MASS_EFFE_DZ'), 205 | FORMAT_R = '1PE12.3', 206 | FORM_TABL = 'OUI', 207 | ) 208 | ) 209 | 210 | IMPR_RESU( 211 | FORMAT = 'MED', 212 | UNITE = 80, 213 | RESU = _F( 214 | RESULTAT = modes, 215 | NOM_CHAM=('DEPL') 216 | ) 217 | ) 218 | 219 | timeGrav = DEFI_LIST_REEL( 220 | DEBUT = -1.0, 221 | INTERVALLE = _F( 222 | PAS = 1, 223 | JUSQU_A = 0.0 224 | ) 225 | ) 226 | 227 | timeStep = DEFI_LIST_REEL( 228 | DEBUT = 0.0, 229 | INTERVALLE = _F( 230 | PAS = dt, 231 | JUSQU_A = tFin 232 | ) 233 | ) 234 | 235 | weight_F = DEFI_FONCTION( 236 | NOM_PARA = 'INST', 237 | PROL_DROITE = 'CONSTANT', 238 | PROL_GAUCHE = 'CONSTANT', 239 | VALE = ( 240 | -1.0, 0.0, 241 | 0.0, 1.0 242 | ) 243 | ) 244 | 245 | accRaw_X = LIRE_FONCTION( 246 | UNITE = 30, 247 | NOM_PARA = 'INST', 248 | NOM_RESU = 'ACC', 249 | INDIC_PARA = [1,1], 250 | INDIC_RESU = [1,2] 251 | ) 252 | 253 | accSc_X = CALC_FONCTION( 254 | COMB = _F( 255 | FONCTION = accRaw_X, 256 | COEF = gGrav 257 | ) 258 | ) 259 | 260 | accIn_X = CALC_FONC_INTERP( 261 | FONCTION = accSc_X, 262 | INTERPOL = 'LIN', 263 | LIST_PARA = timeStep, 264 | NOM_PARA = 'INST', 265 | NOM_RESU = 'ACC' 266 | ) 267 | 268 | dir_X = CALC_CHAR_SEISME( 269 | DIRECTION = (1.0, 0.0, 0.0), 270 | MATR_MASS = M_MAT, 271 | MONO_APPUI = 'OUI' 272 | ) 273 | 274 | accF_X = AFFE_CHAR_MECA( 275 | MODELE = model, 276 | VECT_ASSE = dir_X 277 | ) 278 | 279 | accRaw_Y = LIRE_FONCTION( 280 | UNITE = 31, 281 | NOM_PARA = 'INST', 282 | NOM_RESU = 'ACC', 283 | INDIC_PARA = [1,1], 284 | INDIC_RESU = [1,2] 285 | ) 286 | 287 | accSc_Y = CALC_FONCTION( 288 | COMB = _F( 289 | FONCTION = accRaw_Y, 290 | COEF = gGrav 291 | ) 292 | ) 293 | 294 | accIn_Y = CALC_FONC_INTERP( 295 | FONCTION = accSc_Y, 296 | INTERPOL = 'LIN', 297 | LIST_PARA = timeStep, 298 | NOM_PARA = 'INST', 299 | NOM_RESU = 'ACC' 300 | ) 301 | 302 | dir_Y = CALC_CHAR_SEISME( 303 | DIRECTION = (0.0, 1.0, 0.0), 304 | MATR_MASS = M_MAT, 305 | MONO_APPUI = 'OUI' 306 | ) 307 | 308 | accF_Y = AFFE_CHAR_MECA( 309 | MODELE = model, 310 | VECT_ASSE = dir_Y 311 | ) 312 | 313 | resStat = STAT_NON_LINE( 314 | MODELE = model, 315 | CARA_ELEM = element, 316 | CHAM_MATER = material, 317 | COMPORTEMENT = ( 318 | _F( 319 | DEFORMATION = 'PETIT', 320 | TOUT = 'OUI', 321 | RELATION = 'ELAS' 322 | ), 323 | _F( 324 | DEFORMATION = 'PETIT', 325 | GROUP_MA = 'contactBase', 326 | RELATION = 'DIS_CHOC' 327 | ), 328 | ), 329 | EXCIT = ( 330 | _F( 331 | CHARGE = support 332 | ), 333 | _F( 334 | CHARGE = weight, 335 | FONC_MULT = weight_F 336 | ) 337 | ), 338 | INCREMENT = _F( 339 | LIST_INST = timeGrav 340 | ) 341 | ) 342 | 343 | resDyna = DYNA_NON_LINE( 344 | MODELE = model, 345 | CARA_ELEM = element, 346 | CHAM_MATER = material, 347 | COMPORTEMENT = ( 348 | _F( 349 | DEFORMATION = 'PETIT', 350 | TOUT = 'OUI', 351 | RELATION = 'ELAS' 352 | ), 353 | _F( 354 | DEFORMATION = 'PETIT', 355 | GROUP_MA = 'contactBase', 356 | RELATION = 'DIS_CHOC' 357 | ), 358 | ), 359 | ETAT_INIT = _F( 360 | EVOL_NOLI = resStat 361 | ), 362 | EXCIT = ( 363 | _F( 364 | CHARGE = support 365 | ), 366 | _F( 367 | CHARGE = weight 368 | ), 369 | _F( 370 | CHARGE = accF_X, 371 | FONC_MULT = accIn_X, 372 | ), 373 | _F( 374 | CHARGE = accF_Y, 375 | FONC_MULT = accIn_Y, 376 | ) 377 | ), 378 | AMOR_MODAL = _F( 379 | NB_MODE = nModes, 380 | AMOR_REDUIT = (damping,), 381 | MODE_MECA = modes 382 | ), 383 | INCREMENT = _F( 384 | LIST_INST = timeStep, 385 | INST_FIN = tFin 386 | ), 387 | ARCHIVAGE = _F( 388 | PAS_ARCH = archiveStep, 389 | CHAM_EXCLU = ('VITE',) 390 | ), 391 | SCHEMA_TEMPS=_F( 392 | FORMULATION ='DEPLACEMENT', 393 | MODI_EQUI ='OUI', 394 | SCHEMA ='HHT' 395 | ) 396 | ) 397 | 398 | disp_X = POST_RELEVE_T( 399 | ACTION = _F( 400 | INTITULE = 'disp_X', 401 | OPERATION = 'MOYENNE_ARITH', 402 | RESULTAT = resDyna, 403 | GROUP_MA = 'roof', 404 | NOM_CHAM = 'DEPL', 405 | NOM_CMP = 'DX' 406 | ) 407 | ) 408 | 409 | disp_X = CALC_TABLE( 410 | reuse = disp_X, 411 | TABLE = disp_X, 412 | ACTION = ( 413 | _F( 414 | OPERATION = 'EXTR', 415 | NOM_PARA = ('INST', 'MOYENNE') 416 | ), 417 | _F( 418 | OPERATION = 'RENOMME', 419 | NOM_PARA = ('MOYENNE', 'disp_X') 420 | ) 421 | ) 422 | ) 423 | 424 | disp_Y = POST_RELEVE_T( 425 | ACTION = _F( 426 | INTITULE = 'disp_Y', 427 | OPERATION = 'MOYENNE_ARITH', 428 | RESULTAT = resDyna, 429 | GROUP_MA = 'roof', 430 | NOM_CHAM = 'DEPL', 431 | NOM_CMP = 'DY' 432 | ) 433 | ) 434 | 435 | disp_Y = CALC_TABLE( 436 | reuse = disp_Y, 437 | TABLE = disp_Y, 438 | ACTION = ( 439 | _F( 440 | OPERATION = 'EXTR', 441 | NOM_PARA = ('INST', 'MOYENNE') 442 | ), 443 | _F( 444 | OPERATION = 'RENOMME', 445 | NOM_PARA = ('MOYENNE', 'disp_Y') 446 | ) 447 | ) 448 | ) 449 | 450 | disp_Tab = CALC_TABLE( 451 | TABLE = disp_X, 452 | ACTION = ( 453 | _F( 454 | OPERATION = 'COMB', 455 | TABLE = disp_Y, 456 | NOM_PARA = 'INST' 457 | ) 458 | ) 459 | ) 460 | 461 | IMPR_TABLE( 462 | TABLE = disp_Tab, 463 | UNITE = 11, 464 | FORMAT_R = '1PE12.3' 465 | ) 466 | 467 | IMPR_RESU( 468 | FORMAT = 'MED', 469 | UNITE = 81, 470 | RESU = _F( 471 | RESULTAT = resDyna, 472 | NOM_CHAM = ('DEPL', 'ACCE') 473 | ) 474 | ) 475 | 476 | FIN() 477 | -------------------------------------------------------------------------------- /NLDA-Example/model.med: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jesusbill/code-aster-examples/73de5facfc4cf609b11ea66822cf0457986970b2/NLDA-Example/model.med -------------------------------------------------------------------------------- /NLDA-Example/processing.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import pandas as pd\n", 10 | "%matplotlib ipympl" 11 | ] 12 | }, 13 | { 14 | "cell_type": "code", 15 | "execution_count": 2, 16 | "metadata": {}, 17 | "outputs": [ 18 | { 19 | "data": { 20 | "application/vnd.jupyter.widget-view+json": { 21 | "model_id": "6068786f3cb448fbb431f2470fe2112b", 22 | "version_major": 2, 23 | "version_minor": 0 24 | }, 25 | "text/plain": [ 26 | "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" 27 | ] 28 | }, 29 | "metadata": {}, 30 | "output_type": "display_data" 31 | }, 32 | { 33 | "data": { 34 | "application/vnd.jupyter.widget-view+json": { 35 | "model_id": "f7e809829b5643f5a7639e96c3029c26", 36 | "version_major": 2, 37 | "version_minor": 0 38 | }, 39 | "text/plain": [ 40 | "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" 41 | ] 42 | }, 43 | "metadata": {}, 44 | "output_type": "display_data" 45 | }, 46 | { 47 | "data": { 48 | "text/plain": [ 49 | "" 50 | ] 51 | }, 52 | "execution_count": 2, 53 | "metadata": {}, 54 | "output_type": "execute_result" 55 | } 56 | ], 57 | "source": [ 58 | "gm1 = pd.read_csv('A-TMZ000.txt', header=4, delimiter='\\t')\n", 59 | "gm2 = pd.read_csv('A-TMZ270.txt', header=4, delimiter='\\t')\n", 60 | "gm1.plot(x='time', grid=True)\n", 61 | "gm2.plot(x='time', grid=True)" 62 | ] 63 | }, 64 | { 65 | "cell_type": "code", 66 | "execution_count": 3, 67 | "metadata": {}, 68 | "outputs": [ 69 | { 70 | "data": { 71 | "application/vnd.jupyter.widget-view+json": { 72 | "model_id": "f2a2ec4465f74d47a79523c9221496e9", 73 | "version_major": 2, 74 | "version_minor": 0 75 | }, 76 | "text/plain": [ 77 | "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" 78 | ] 79 | }, 80 | "metadata": {}, 81 | "output_type": "display_data" 82 | }, 83 | { 84 | "data": { 85 | "text/plain": [ 86 | "" 87 | ] 88 | }, 89 | "execution_count": 3, 90 | "metadata": {}, 91 | "output_type": "execute_result" 92 | } 93 | ], 94 | "source": [ 95 | "res = pd.read_csv('seismic.resu', header=3, delimiter='\\s+')\n", 96 | "res.plot(x='INST', grid=True)" 97 | ] 98 | }, 99 | { 100 | "cell_type": "code", 101 | "execution_count": 4, 102 | "metadata": {}, 103 | "outputs": [ 104 | { 105 | "name": "stdout", 106 | "output_type": "stream", 107 | "text": [ 108 | "-16.69 16.43 -19.33 22.96\n" 109 | ] 110 | } 111 | ], 112 | "source": [ 113 | "print(\n", 114 | " min(res['disp_X']),\n", 115 | " max(res['disp_X']),\n", 116 | " min(res['disp_Y']),\n", 117 | " max(res['disp_Y'])\n", 118 | ")" 119 | ] 120 | }, 121 | { 122 | "cell_type": "code", 123 | "execution_count": 11, 124 | "metadata": {}, 125 | "outputs": [ 126 | { 127 | "name": "stdout", 128 | "output_type": "stream", 129 | "text": [ 130 | "-20.98 17.45 -19.38 21.96\n" 131 | ] 132 | }, 133 | { 134 | "data": { 135 | "application/vnd.jupyter.widget-view+json": { 136 | "model_id": "b5303b74c18f40208d9dc0c1645aca45", 137 | "version_major": 2, 138 | "version_minor": 0 139 | }, 140 | "text/plain": [ 141 | "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" 142 | ] 143 | }, 144 | "metadata": {}, 145 | "output_type": "display_data" 146 | }, 147 | { 148 | "data": { 149 | "application/vnd.jupyter.widget-view+json": { 150 | "model_id": "79131676ae4f4a32b62fd97ce1ce51ad", 151 | "version_major": 2, 152 | "version_minor": 0 153 | }, 154 | "text/plain": [ 155 | "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" 156 | ] 157 | }, 158 | "metadata": {}, 159 | "output_type": "display_data" 160 | }, 161 | { 162 | "data": { 163 | "text/plain": [ 164 | "Text(0, 0.5, 'Displacement [mm]')" 165 | ] 166 | }, 167 | "execution_count": 11, 168 | "metadata": {}, 169 | "output_type": "execute_result" 170 | } 171 | ], 172 | "source": [ 173 | "res2 = pd.read_csv('../LDA-Example/seismic.resu', header=3, delimiter='\\s+')\n", 174 | "\n", 175 | "print(\n", 176 | " min(res2['disp_X']),\n", 177 | " max(res2['disp_X']),\n", 178 | " min(res2['disp_Y']),\n", 179 | " max(res2['disp_Y'])\n", 180 | ")\n", 181 | "\n", 182 | "ax1 = res.plot(x='INST', y=['disp_X'], grid=True)\n", 183 | "res2.plot(ax = ax1, x='INST', y=['disp_X'], grid=True)\n", 184 | "ax1.legend(['Nonlinear', 'Linear'])\n", 185 | "ax1.set_title('Average Roof Displacement in X direction')\n", 186 | "ax1.set_xlabel('Time [sec]')\n", 187 | "ax1.set_ylabel('Displacement [mm]')\n", 188 | "\n", 189 | "ax2 = res.plot(x='INST', y=['disp_Y'], grid=True)\n", 190 | "res2.plot(ax = ax2, x='INST', y=['disp_Y'], grid=True)\n", 191 | "ax2.legend(['Nonlinear', 'Linear'])\n", 192 | "ax2.set_title('Average Roof Displacement in Y direction')\n", 193 | "ax2.set_xlabel('Time [sec]')\n", 194 | "ax2.set_ylabel('Displacement [mm]')" 195 | ] 196 | }, 197 | { 198 | "cell_type": "code", 199 | "execution_count": null, 200 | "metadata": {}, 201 | "outputs": [], 202 | "source": [] 203 | } 204 | ], 205 | "metadata": { 206 | "kernelspec": { 207 | "display_name": "Python 3", 208 | "language": "python", 209 | "name": "python3" 210 | }, 211 | "language_info": { 212 | "codemirror_mode": { 213 | "name": "ipython", 214 | "version": 3 215 | }, 216 | "file_extension": ".py", 217 | "mimetype": "text/x-python", 218 | "name": "python", 219 | "nbconvert_exporter": "python", 220 | "pygments_lexer": "ipython3", 221 | "version": "3.8.2" 222 | } 223 | }, 224 | "nbformat": 4, 225 | "nbformat_minor": 4 226 | } 227 | -------------------------------------------------------------------------------- /NLDA-Example/run.export: -------------------------------------------------------------------------------- 1 | P profastk jesusbill@Ubuntu-ThinkPad-P1:/home/jesusbill/Dev-Projects/github.com/Jesusbill/code-aster-examples/NLDA-Example/run.astk 2 | P serveur localhost 3 | P username jesusbill 4 | P aster_root /home/jesusbill/salome_meca/V9_INTEGR_public_universal/tools/Code_aster_frontend-salomemeca 5 | P platform Linux64 6 | P protocol_exec asrun.plugins.server.SSHServer 7 | P protocol_copyto asrun.plugins.server.SCPServer 8 | P protocol_copyfrom asrun.plugins.server.SCPServer 9 | P proxy_dir /tmp 10 | P noeud localhost 11 | P mclient Ubuntu-ThinkPad-P1 12 | P uclient jesusbill 13 | P version stable 14 | P lang en 15 | P debug nodebug 16 | P mode interactif 17 | P ncpus 18 | P mpi_nbcpu 1 19 | P mpi_nbnoeud 1 20 | P classe 21 | P depart 22 | P after_job 23 | P distrib 24 | P exectool 25 | P multiple 26 | P nomjob run 27 | P origine ASTK 2019.0.final 28 | P display Ubuntu-ThinkPad-P1:1 29 | A args 30 | A memjeveux 1875.0 31 | A tpmax 90000 32 | P memjob 15360000 33 | P tpsjob 1500 34 | P follow_output yes 35 | P nbmaxnook 5 36 | P cpresok RESNOOK 37 | P only_nook 38 | P facmtps 1 39 | P corefilesize unlimited 40 | F comm ./input.comm D 1 41 | F libr ./model.med D 2 42 | F libr ./A-TMZ000.txt D 30 43 | F libr ./A-TMZ270.txt D 31 44 | F mess ./output.mess R 6 45 | F rmed ./modal.rmed R 80 46 | F libr ./seismic.rmed R 81 47 | F libr ./modal.resu R 10 48 | F libr ./seismic.resu R 11 49 | P consbtc oui 50 | P soumbtc oui 51 | P actions make_etude 52 | -------------------------------------------------------------------------------- /NLDA-Modal-Example/execution_time_nonlinear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jesusbill/code-aster-examples/73de5facfc4cf609b11ea66822cf0457986970b2/NLDA-Modal-Example/execution_time_nonlinear.png -------------------------------------------------------------------------------- /NLDA-Modal-Example/input.comm: -------------------------------------------------------------------------------- 1 | # Units N, mm, sec 2 | gGrav = 9806.0 3 | dt = 0.01 4 | tFin = 15 5 | archiveStep = 1 6 | damping = 0.05 7 | k_dis = 2.E7 8 | nModes = 12 9 | 10 | DEBUT() 11 | 12 | mesh_ini = LIRE_MAILLAGE( 13 | FORMAT = 'MED', 14 | UNITE = 2 15 | ) 16 | 17 | mesh = CREA_MAILLAGE( 18 | MAILLAGE = mesh_ini, 19 | CREA_POI1 = _F( 20 | GROUP_NO = ('columnBase', 'wallBase'), 21 | NOM_GROUP_MA = 'contactBase' 22 | ) 23 | ) 24 | 25 | model_G = AFFE_MODELE( 26 | MAILLAGE = mesh, 27 | AFFE = ( 28 | _F( 29 | TOUT = 'OUI', 30 | MODELISATION = '3D', 31 | PHENOMENE = 'MECANIQUE' 32 | ), 33 | _F( 34 | GROUP_MA = ('walls', 'slab', 'roof'), 35 | MODELISATION = 'DST', 36 | PHENOMENE = 'MECANIQUE' 37 | ), 38 | _F( 39 | GROUP_MA = ('columns', 'beams'), 40 | MODELISATION = 'POU_D_T', 41 | PHENOMENE = 'MECANIQUE' 42 | ) 43 | ) 44 | ) 45 | 46 | elem_G = AFFE_CARA_ELEM( 47 | MODELE = model_G, 48 | COQUE = ( 49 | _F( 50 | GROUP_MA = ('walls', 'slab', 'roof'), 51 | EPAIS = 250.0, 52 | VECTEUR = (1.0, 0.0, 0.0) 53 | ) 54 | ), 55 | POUTRE = ( 56 | _F( 57 | GROUP_MA = 'columns', 58 | SECTION = 'RECTANGLE', 59 | CARA = ('HY', 'HZ'), 60 | VALE = (300.0, 300.0) 61 | ), 62 | _F( 63 | GROUP_MA = 'beams', 64 | SECTION = 'RECTANGLE', 65 | CARA = ('HY', 'HZ'), 66 | VALE = (250.0, 500.0) 67 | ) 68 | ) 69 | ) 70 | 71 | 72 | concrete = DEFI_MATERIAU( 73 | ELAS = _F( 74 | E = 30000.0, 75 | NU = 0.3, 76 | RHO = 25.0E-10 77 | ) 78 | ) 79 | 80 | mat_G = AFFE_MATERIAU( 81 | MODELE = model_G, 82 | AFFE = ( 83 | _F( 84 | TOUT = 'OUI', 85 | MATER = concrete 86 | ) 87 | ) 88 | ) 89 | 90 | supp_G = AFFE_CHAR_MECA( 91 | MODELE = model_G, 92 | DDL_IMPO = _F( 93 | GROUP_NO = ('columnBase', 'wallBase'), 94 | DX = 0, 95 | DY = 0, 96 | DZ = 0, 97 | DRX = 0, 98 | DRY = 0, 99 | DRZ = 0 100 | ) 101 | ) 102 | 103 | mass = POST_ELEM( 104 | TITRE = 'Masses', 105 | MODELE = model_G, 106 | CARA_ELEM = elem_G, 107 | CHAM_MATER = mat_G, 108 | MASS_INER = ( 109 | _F( 110 | TOUT = 'OUI' 111 | ), 112 | _F( 113 | GROUP_MA = ('walls', 'slab', 'roof', 'columns', 'beams') 114 | ) 115 | ) 116 | ) 117 | 118 | IMPR_TABLE( 119 | TABLE = mass, 120 | UNITE = 10, 121 | NOM_PARA = ('LIEU', 'MASSE', 'CDG_X', 'CDG_Y', 'CDG_Z'), 122 | FORMAT_R = '1PE12.3' 123 | ) 124 | 125 | ASSEMBLAGE( 126 | MODELE = model_G, 127 | CARA_ELEM = elem_G, 128 | CHAM_MATER = mat_G, 129 | CHARGE = supp_G, 130 | NUME_DDL = CO('NDDL_G'), 131 | MATR_ASSE = ( 132 | _F( 133 | OPTION = 'RIGI_MECA', 134 | MATRICE = CO('K_MAT_G') 135 | ), 136 | _F( 137 | OPTION = 'MASS_MECA', 138 | MATRICE = CO('M_MAT_G') 139 | ) 140 | ) 141 | ) 142 | 143 | modes = CALC_MODES( 144 | MATR_RIGI = K_MAT_G, 145 | MATR_MASS = M_MAT_G, 146 | OPTION = 'PLUS_PETITE', 147 | CALC_FREQ = _F( 148 | NMAX_FREQ = nModes 149 | ) 150 | ) 151 | 152 | modeStat = MODE_STATIQUE( 153 | MATR_RIGI = K_MAT_G, 154 | MATR_MASS = M_MAT_G, 155 | MODE_STAT = _F( 156 | GROUP_NO = ('columnBase', 'wallBase'), 157 | TOUT_CMP = 'OUI' 158 | ) 159 | ) 160 | 161 | IMPR_RESU( 162 | FORMAT = 'RESULTAT', 163 | UNITE = 10, 164 | RESU = _F( 165 | RESULTAT = modes, 166 | TOUT_CHAM = 'NON', 167 | NOM_PARA = ('FREQ', 'MASS_EFFE_DX', 'MASS_EFFE_DY', 'MASS_EFFE_DZ'), 168 | FORMAT_R = '1PE12.3', 169 | FORM_TABL = 'OUI', 170 | ) 171 | ) 172 | 173 | IMPR_RESU( 174 | FORMAT = 'MED', 175 | UNITE = 80, 176 | RESU = ( 177 | _F( 178 | RESULTAT = modes, 179 | NOM_CHAM=('DEPL') 180 | ), 181 | _F( 182 | RESULTAT = modeStat, 183 | NOM_CHAM=('DEPL') 184 | ) 185 | ) 186 | ) 187 | 188 | weight = AFFE_CHAR_MECA( 189 | MODELE = model_G, 190 | PESANTEUR = _F( 191 | GRAVITE = gGrav, 192 | DIRECTION = (0.0, 0.0, -1.0) 193 | ) 194 | ) 195 | 196 | weight_F = DEFI_FONCTION( 197 | NOM_PARA = 'INST', 198 | PROL_DROITE = 'CONSTANT', 199 | PROL_GAUCHE = 'CONSTANT', 200 | VALE = ( 201 | -1.0, 0.0, 202 | 0.0, 1.0 203 | ) 204 | ) 205 | 206 | timeGrav = DEFI_LIST_REEL( 207 | DEBUT = -1.0, 208 | INTERVALLE = _F( 209 | PAS = 1, 210 | JUSQU_A = 0.0 211 | ) 212 | ) 213 | 214 | timeStep = DEFI_LIST_REEL( 215 | DEBUT = 0.0, 216 | INTERVALLE = _F( 217 | PAS = dt, 218 | JUSQU_A = tFin 219 | ) 220 | ) 221 | 222 | accRaw_X = LIRE_FONCTION( 223 | UNITE = 30, 224 | NOM_PARA = 'INST', 225 | NOM_RESU = 'ACC', 226 | INDIC_PARA = [1,1], 227 | INDIC_RESU = [1,2] 228 | ) 229 | 230 | accSc_X = CALC_FONCTION( 231 | COMB = _F( 232 | FONCTION = accRaw_X, 233 | COEF = gGrav 234 | ) 235 | ) 236 | 237 | accIn_X = CALC_FONC_INTERP( 238 | FONCTION = accSc_X, 239 | INTERPOL = 'LIN', 240 | LIST_PARA = timeStep, 241 | NOM_PARA = 'INST', 242 | NOM_RESU = 'ACC' 243 | ) 244 | 245 | dir_X = CALC_CHAR_SEISME( 246 | DIRECTION = (1.0, 0.0, 0.0), 247 | MATR_MASS = M_MAT_G, 248 | MONO_APPUI = 'OUI' 249 | ) 250 | 251 | accF_X = AFFE_CHAR_MECA( 252 | MODELE = model_G, 253 | VECT_ASSE = dir_X 254 | ) 255 | 256 | accRaw_Y = LIRE_FONCTION( 257 | UNITE = 31, 258 | NOM_PARA = 'INST', 259 | NOM_RESU = 'ACC', 260 | INDIC_PARA = [1,1], 261 | INDIC_RESU = [1,2] 262 | ) 263 | 264 | accSc_Y = CALC_FONCTION( 265 | COMB = _F( 266 | FONCTION = accRaw_Y, 267 | COEF = gGrav 268 | ) 269 | ) 270 | 271 | accIn_Y = CALC_FONC_INTERP( 272 | FONCTION = accSc_Y, 273 | INTERPOL = 'LIN', 274 | LIST_PARA = timeStep, 275 | NOM_PARA = 'INST', 276 | NOM_RESU = 'ACC' 277 | ) 278 | 279 | dir_Y = CALC_CHAR_SEISME( 280 | DIRECTION = (0.0, 1.0, 0.0), 281 | MATR_MASS = M_MAT_G, 282 | MONO_APPUI = 'OUI' 283 | ) 284 | 285 | accF_Y = AFFE_CHAR_MECA( 286 | MODELE = model_G, 287 | VECT_ASSE = dir_Y 288 | ) 289 | 290 | ASSEMBLAGE( 291 | MODELE = model_G, 292 | CARA_ELEM = elem_G, 293 | CHAM_MATER = mat_G, 294 | CHARGE = supp_G, 295 | NUME_DDL = NDDL_G, 296 | VECT_ASSE = ( 297 | _F( 298 | CHARGE = accF_X, 299 | OPTION = 'CHAR_MECA', 300 | VECTEUR = CO('accF_XV') 301 | ), 302 | _F( 303 | CHARGE = accF_Y, 304 | OPTION = 'CHAR_MECA', 305 | VECTEUR = CO('accF_YV') 306 | ), 307 | _F( 308 | CHARGE = weight, 309 | OPTION = 'CHAR_MECA', 310 | VECTEUR = CO('weight_V') 311 | ) 312 | ) 313 | ) 314 | 315 | inteDyna = DEFI_INTERF_DYNA( 316 | NUME_DDL = NDDL_G, 317 | INTERFACE = _F( 318 | NOM = 'INTERF', 319 | TYPE = 'CRAIGB', 320 | GROUP_NO = ('columnBase', 'wallBase'), 321 | ) 322 | ) 323 | 324 | baseModa = DEFI_BASE_MODALE( 325 | RITZ = ( 326 | _F( 327 | MODE_MECA = modes, 328 | NMAX_MODE = nModes 329 | ), 330 | _F( 331 | MODE_INTF = modeStat 332 | ) 333 | ), 334 | INTERF_DYNA = inteDyna, 335 | NUME_REF = NDDL_G 336 | ) 337 | 338 | PROJ_BASE( 339 | BASE = baseModa, 340 | VECT_ASSE_GENE = ( 341 | _F( 342 | VECT_ASSE = accF_XV, 343 | TYPE_VECT = 'FORC', 344 | VECTEUR = CO('accF_XG') 345 | ), 346 | _F( 347 | VECT_ASSE = accF_YV, 348 | TYPE_VECT = 'FORC', 349 | VECTEUR = CO('accF_YG') 350 | ), 351 | _F( 352 | VECT_ASSE = weight_V, 353 | TYPE_VECT = 'FORC', 354 | VECTEUR = CO('weight_G') 355 | ) 356 | ) 357 | ) 358 | 359 | superEle = MACR_ELEM_DYNA( 360 | BASE_MODALE = baseModa, 361 | MATR_RIGI = K_MAT_G, 362 | MATR_MASS = M_MAT_G, 363 | AMOR_REDUIT = tuple([damping] * nModes), 364 | CAS_CHARGE = ( 365 | _F( 366 | NOM_CAS = 'accF_X', 367 | VECT_ASSE_GENE = accF_XG 368 | ), 369 | _F( 370 | NOM_CAS = 'accF_Y', 371 | VECT_ASSE_GENE = accF_YG 372 | ), 373 | _F( 374 | NOM_CAS = 'weight', 375 | VECT_ASSE_GENE = weight_G 376 | ) 377 | ) 378 | ) 379 | 380 | mesh_sup = DEFI_MAILLAGE( 381 | DEFI_SUPER_MAILLE = _F( 382 | MACR_ELEM = superEle, 383 | SUPER_MAILLE = 'superEle' 384 | ), 385 | DEFI_NOEUD = _F( 386 | TOUT = 'OUI', 387 | INDEX = (1, 0, 1, 8) 388 | ) 389 | ) 390 | 391 | mesh_fin = ASSE_MAILLAGE( 392 | MAILLAGE_1 = mesh, 393 | MAILLAGE_2 = mesh_sup, 394 | OPERATION = 'SOUS_STR' 395 | ) 396 | 397 | model = AFFE_MODELE( 398 | MAILLAGE = mesh_fin, 399 | AFFE = ( 400 | _F( 401 | GROUP_MA = 'contactBase', 402 | MODELISATION = 'DIS_T', 403 | PHENOMENE = 'MECANIQUE' 404 | ) 405 | ), 406 | AFFE_SOUS_STRUC = _F( 407 | SUPER_MAILLE = 'superEle', 408 | PHENOMENE = 'MECANIQUE' 409 | ) 410 | ) 411 | 412 | contact = DEFI_MATERIAU( 413 | DIS_CONTACT = _F( 414 | RIGI_NOR = k_dis 415 | ) 416 | ) 417 | 418 | material = AFFE_MATERIAU( 419 | MODELE = model, 420 | AFFE = ( 421 | _F( 422 | GROUP_MA = 'contactBase', 423 | MATER = contact 424 | ) 425 | ) 426 | ) 427 | 428 | element = AFFE_CARA_ELEM( 429 | MODELE = model, 430 | DISCRET = ( 431 | _F( 432 | CARA = 'K_T_D_N', 433 | GROUP_MA = 'contactBase', 434 | VALE = (k_dis, 0.0, 0.0), 435 | REPERE = 'LOCAL' 436 | ), 437 | _F( 438 | CARA = 'M_T_D_N', 439 | GROUP_MA = 'contactBase', 440 | VALE = (0.0,) 441 | ), 442 | _F( 443 | CARA = 'A_T_D_N', 444 | GROUP_MA = 'contactBase', 445 | VALE = (0.0, 0.0, 0.0) 446 | ) 447 | ), 448 | ORIENTATION = ( 449 | _F( 450 | CARA = 'VECT_X_Y', 451 | GROUP_MA = 'contactBase', 452 | VALE = (0., 0., -1., 0., 1., 0.) 453 | ) 454 | ) 455 | ) 456 | 457 | support = AFFE_CHAR_MECA( 458 | MODELE = model, 459 | DDL_IMPO = _F( 460 | GROUP_NO = ('columnBase', 'wallBase'), 461 | DX = 0, 462 | DY = 0, 463 | DRX = 0, 464 | DRY = 0, 465 | DRZ = 0, 466 | ) 467 | ) 468 | 469 | resGrav = STAT_NON_LINE( 470 | MODELE = model, 471 | CARA_ELEM = element, 472 | CHAM_MATER = material, 473 | COMPORTEMENT = ( 474 | _F( 475 | DEFORMATION = 'PETIT', 476 | TOUT = 'OUI', 477 | RELATION = 'ELAS' 478 | ), 479 | _F( 480 | DEFORMATION = 'PETIT', 481 | GROUP_MA = 'contactBase', 482 | RELATION = 'DIS_CHOC' 483 | ), 484 | ), 485 | SOUS_STRUC = ( 486 | _F( 487 | SUPER_MAILLE = 'superEle', 488 | CAS_CHARGE = 'weight', 489 | FONC_MULT = weight_F 490 | ) 491 | ), 492 | EXCIT = ( 493 | _F( 494 | CHARGE = support 495 | ) 496 | ), 497 | INCREMENT = _F( 498 | LIST_INST = timeGrav 499 | ) 500 | ) 501 | 502 | resGene = DYNA_NON_LINE( 503 | MODELE = model, 504 | CARA_ELEM = element, 505 | CHAM_MATER = material, 506 | COMPORTEMENT = ( 507 | _F( 508 | DEFORMATION = 'PETIT', 509 | TOUT = 'OUI', 510 | RELATION = 'ELAS' 511 | ), 512 | _F( 513 | DEFORMATION = 'PETIT', 514 | GROUP_MA = 'contactBase', 515 | RELATION = 'DIS_CHOC' 516 | ), 517 | ), 518 | SOUS_STRUC = ( 519 | _F( 520 | SUPER_MAILLE = 'superEle', 521 | CAS_CHARGE = 'weight', 522 | FONC_MULT = weight_F 523 | ), 524 | _F( 525 | SUPER_MAILLE = 'superEle', 526 | CAS_CHARGE = 'accF_X', 527 | FONC_MULT = accIn_X 528 | ), 529 | _F( 530 | SUPER_MAILLE = 'superEle', 531 | CAS_CHARGE = 'accF_Y', 532 | FONC_MULT = accIn_Y 533 | ) 534 | ), 535 | ETAT_INIT = _F( 536 | EVOL_NOLI = resGrav 537 | ), 538 | EXCIT = ( 539 | _F( 540 | CHARGE = support 541 | ) 542 | ), 543 | INCREMENT = _F( 544 | LIST_INST = timeStep, 545 | INST_FIN = tFin 546 | ), 547 | ARCHIVAGE = _F( 548 | PAS_ARCH = archiveStep, 549 | CHAM_EXCLU = ('VITE',) 550 | ), 551 | SCHEMA_TEMPS=_F( 552 | FORMULATION ='DEPLACEMENT', 553 | MODI_EQUI ='OUI', 554 | SCHEMA ='HHT' 555 | ) 556 | ) 557 | 558 | resDyna = REST_COND_TRAN( 559 | RESULTAT = resGene, 560 | MACR_ELEM_DYNA = superEle, 561 | TOUT_INST = 'OUI', 562 | NOM_CHAM = ('DEPL', 'ACCE') 563 | ) 564 | 565 | disp_X = POST_RELEVE_T( 566 | ACTION = _F( 567 | INTITULE = 'disp_X', 568 | OPERATION = 'MOYENNE_ARITH', 569 | RESULTAT = resDyna, 570 | GROUP_MA = 'roof', 571 | NOM_CHAM = 'DEPL', 572 | NOM_CMP = 'DX' 573 | ) 574 | ) 575 | 576 | disp_X = CALC_TABLE( 577 | reuse = disp_X, 578 | TABLE = disp_X, 579 | ACTION = ( 580 | _F( 581 | OPERATION = 'EXTR', 582 | NOM_PARA = ('INST', 'MOYENNE') 583 | ), 584 | _F( 585 | OPERATION = 'RENOMME', 586 | NOM_PARA = ('MOYENNE', 'disp_X') 587 | ) 588 | ) 589 | ) 590 | 591 | disp_Y = POST_RELEVE_T( 592 | ACTION = _F( 593 | INTITULE = 'disp_Y', 594 | OPERATION = 'MOYENNE_ARITH', 595 | RESULTAT = resDyna, 596 | GROUP_MA = 'roof', 597 | NOM_CHAM = 'DEPL', 598 | NOM_CMP = 'DY' 599 | ) 600 | ) 601 | 602 | disp_Y = CALC_TABLE( 603 | reuse = disp_Y, 604 | TABLE = disp_Y, 605 | ACTION = ( 606 | _F( 607 | OPERATION = 'EXTR', 608 | NOM_PARA = ('INST', 'MOYENNE') 609 | ), 610 | _F( 611 | OPERATION = 'RENOMME', 612 | NOM_PARA = ('MOYENNE', 'disp_Y') 613 | ) 614 | ) 615 | ) 616 | 617 | disp_Tab = CALC_TABLE( 618 | TABLE = disp_X, 619 | ACTION = ( 620 | _F( 621 | OPERATION = 'COMB', 622 | TABLE = disp_Y, 623 | NOM_PARA = 'INST' 624 | ) 625 | ) 626 | ) 627 | 628 | IMPR_TABLE( 629 | TABLE = disp_Tab, 630 | UNITE = 11, 631 | FORMAT_R = '1PE12.3' 632 | ) 633 | 634 | IMPR_RESU( 635 | FORMAT = 'MED', 636 | UNITE = 81, 637 | RESU = _F( 638 | RESULTAT = resDyna, 639 | NOM_CHAM = ('DEPL', 'ACCE') 640 | ) 641 | ) 642 | 643 | FIN() 644 | -------------------------------------------------------------------------------- /NLDA-Modal-Example/model.med: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jesusbill/code-aster-examples/73de5facfc4cf609b11ea66822cf0457986970b2/NLDA-Modal-Example/model.med -------------------------------------------------------------------------------- /NLDA-Modal-Example/processing.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import pandas as pd\n", 10 | "%matplotlib ipympl\n", 11 | "import matplotlib.pyplot as plt" 12 | ] 13 | }, 14 | { 15 | "cell_type": "code", 16 | "execution_count": 2, 17 | "metadata": {}, 18 | "outputs": [ 19 | { 20 | "data": { 21 | "application/vnd.jupyter.widget-view+json": { 22 | "model_id": "91b9c12d5bb444d0801455261f953041", 23 | "version_major": 2, 24 | "version_minor": 0 25 | }, 26 | "text/plain": [ 27 | "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" 28 | ] 29 | }, 30 | "metadata": {}, 31 | "output_type": "display_data" 32 | }, 33 | { 34 | "data": { 35 | "application/vnd.jupyter.widget-view+json": { 36 | "model_id": "3ad5300699bc48ebb913655396ebbcc6", 37 | "version_major": 2, 38 | "version_minor": 0 39 | }, 40 | "text/plain": [ 41 | "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" 42 | ] 43 | }, 44 | "metadata": {}, 45 | "output_type": "display_data" 46 | }, 47 | { 48 | "data": { 49 | "text/plain": [ 50 | "" 51 | ] 52 | }, 53 | "execution_count": 2, 54 | "metadata": {}, 55 | "output_type": "execute_result" 56 | } 57 | ], 58 | "source": [ 59 | "gm1 = pd.read_csv('A-TMZ000.txt', header=4, delimiter='\\t')\n", 60 | "gm2 = pd.read_csv('A-TMZ270.txt', header=4, delimiter='\\t')\n", 61 | "gm1.plot(x='time', grid=True)\n", 62 | "gm2.plot(x='time', grid=True)" 63 | ] 64 | }, 65 | { 66 | "cell_type": "code", 67 | "execution_count": 3, 68 | "metadata": {}, 69 | "outputs": [ 70 | { 71 | "data": { 72 | "application/vnd.jupyter.widget-view+json": { 73 | "model_id": "996368b946234b53be5273cd3eef0709", 74 | "version_major": 2, 75 | "version_minor": 0 76 | }, 77 | "text/plain": [ 78 | "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" 79 | ] 80 | }, 81 | "metadata": {}, 82 | "output_type": "display_data" 83 | }, 84 | { 85 | "data": { 86 | "text/plain": [ 87 | "" 88 | ] 89 | }, 90 | "execution_count": 3, 91 | "metadata": {}, 92 | "output_type": "execute_result" 93 | } 94 | ], 95 | "source": [ 96 | "res = pd.read_csv('seismic.resu', header=3, delimiter='\\s+')\n", 97 | "res.plot(x='INST', grid=True)" 98 | ] 99 | }, 100 | { 101 | "cell_type": "code", 102 | "execution_count": 4, 103 | "metadata": {}, 104 | "outputs": [ 105 | { 106 | "data": { 107 | "application/vnd.jupyter.widget-view+json": { 108 | "model_id": "4ff0b0b82f9045239a1c1cd2a28c9243", 109 | "version_major": 2, 110 | "version_minor": 0 111 | }, 112 | "text/plain": [ 113 | "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" 114 | ] 115 | }, 116 | "metadata": {}, 117 | "output_type": "display_data" 118 | }, 119 | { 120 | "data": { 121 | "application/vnd.jupyter.widget-view+json": { 122 | "model_id": "f7cd376fc50f40098968ba2cbb65ab96", 123 | "version_major": 2, 124 | "version_minor": 0 125 | }, 126 | "text/plain": [ 127 | "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" 128 | ] 129 | }, 130 | "metadata": {}, 131 | "output_type": "display_data" 132 | }, 133 | { 134 | "data": { 135 | "text/plain": [ 136 | "Text(0, 0.5, 'Displacement [mm]')" 137 | ] 138 | }, 139 | "execution_count": 4, 140 | "metadata": {}, 141 | "output_type": "execute_result" 142 | } 143 | ], 144 | "source": [ 145 | "plt.tight_layout()\n", 146 | "\n", 147 | "res2 = pd.read_csv('../NLDA-Example/seismic.resu', header=3, delimiter='\\s+')\n", 148 | "\n", 149 | "ax1 = res.plot(x='INST', y=['disp_X'], grid=True)\n", 150 | "res2.plot(ax = ax1, x='INST', y=['disp_X'], grid=True)\n", 151 | "ax1.legend(['MODAL BASE', 'PHYSICAL BASE']);\n", 152 | "ax1.set_title('Average Roof Displacement in X direction')\n", 153 | "ax1.set_xlabel('Time [sec]')\n", 154 | "ax1.set_ylabel('Displacement [mm]')\n", 155 | "\n", 156 | "ax2 = res.plot(x='INST', y=['disp_Y'], grid=True)\n", 157 | "res2.plot(ax = ax2, x='INST', y=['disp_Y'], grid=True)\n", 158 | "ax2.legend(['MODAL BASE', 'PHYSICAL BASE']);\n", 159 | "ax2.set_title('Average Roof Displacement in Y direction')\n", 160 | "ax2.set_xlabel('Time [sec]')\n", 161 | "ax2.set_ylabel('Displacement [mm]')" 162 | ] 163 | }, 164 | { 165 | "cell_type": "code", 166 | "execution_count": 5, 167 | "metadata": {}, 168 | "outputs": [ 169 | { 170 | "name": "stdout", 171 | "output_type": "stream", 172 | "text": [ 173 | "-19.84 19.83 -19.8 23.54\n", 174 | "-16.69 16.43 -19.33 22.96\n" 175 | ] 176 | } 177 | ], 178 | "source": [ 179 | "print(\n", 180 | " min(res['disp_X']),\n", 181 | " max(res['disp_X']),\n", 182 | " min(res['disp_Y']),\n", 183 | " max(res['disp_Y'])\n", 184 | ")\n", 185 | "\n", 186 | "print(\n", 187 | " min(res2['disp_X']),\n", 188 | " max(res2['disp_X']),\n", 189 | " min(res2['disp_Y']),\n", 190 | " max(res2['disp_Y'])\n", 191 | ")" 192 | ] 193 | }, 194 | { 195 | "cell_type": "code", 196 | "execution_count": 6, 197 | "metadata": {}, 198 | "outputs": [ 199 | { 200 | "data": { 201 | "text/plain": [ 202 | "[0.18873576992210905,\n", 203 | " 0.20693852708460136,\n", 204 | " 0.024314536989136215,\n", 205 | " 0.025261324041811806]" 206 | ] 207 | }, 208 | "execution_count": 6, 209 | "metadata": {}, 210 | "output_type": "execute_result" 211 | } 212 | ], 213 | "source": [ 214 | "a = [-19.84, 19.83, -19.8, 23.54]\n", 215 | "b = [-16.69, 16.43, -19.33, 22.96]\n", 216 | "[ai/bi - 1 for ai,bi in zip(a,b)]" 217 | ] 218 | }, 219 | { 220 | "cell_type": "code", 221 | "execution_count": null, 222 | "metadata": {}, 223 | "outputs": [], 224 | "source": [] 225 | } 226 | ], 227 | "metadata": { 228 | "kernelspec": { 229 | "display_name": "Python 3", 230 | "language": "python", 231 | "name": "python3" 232 | }, 233 | "language_info": { 234 | "codemirror_mode": { 235 | "name": "ipython", 236 | "version": 3 237 | }, 238 | "file_extension": ".py", 239 | "mimetype": "text/x-python", 240 | "name": "python", 241 | "nbconvert_exporter": "python", 242 | "pygments_lexer": "ipython3", 243 | "version": "3.7.10" 244 | } 245 | }, 246 | "nbformat": 4, 247 | "nbformat_minor": 4 248 | } 249 | -------------------------------------------------------------------------------- /NLDA-Modal-Example/run.export: -------------------------------------------------------------------------------- 1 | P profastk jesusbill@pop-os:/home/jesusbill/Dev-Projects/github.com/Jesusbill/code-aster-examples/NLDA-Modal-Example/run.astk 2 | P serveur localhost 3 | P username jesusbill 4 | P aster_root /home/jesusbill/salome_meca/V2020.0.1_universal_universal/tools/Code_aster_frontend-202001 5 | P platform Linux64 6 | P protocol_exec asrun.plugins.server.SSHServer 7 | P protocol_copyto asrun.plugins.server.SCPServer 8 | P protocol_copyfrom asrun.plugins.server.SCPServer 9 | P proxy_dir /tmp 10 | P noeud localhost 11 | P mclient pop-os 12 | P uclient jesusbill 13 | P version stable 14 | P lang en 15 | P debug nodebug 16 | P mode interactif 17 | P ncpus 18 | P mpi_nbcpu 1 19 | P mpi_nbnoeud 1 20 | P classe 21 | P depart 22 | P after_job 23 | P distrib 24 | P exectool 25 | P multiple 26 | P nomjob run 27 | P origine ASTK 2020.0.final 28 | P display pop-os:1 29 | A args 30 | A memjeveux 625.0 31 | A tpmax 900 32 | P memjob 5120000 33 | P tpsjob 15 34 | P follow_output yes 35 | P nbmaxnook 5 36 | P cpresok RESNOOK 37 | P only_nook 38 | P facmtps 1 39 | P corefilesize unlimited 40 | F comm /home/jesusbill/Dev-Projects/github.com/Jesusbill/code-aster-examples/NLDA-Modal-Example/input.comm D 1 41 | F libr /home/jesusbill/Dev-Projects/github.com/Jesusbill/code-aster-examples/NLDA-Modal-Example/model.med D 2 42 | F libr /home/jesusbill/Dev-Projects/github.com/Jesusbill/code-aster-examples/NLDA-Modal-Example/A-TMZ000.txt D 30 43 | F libr /home/jesusbill/Dev-Projects/github.com/Jesusbill/code-aster-examples/NLDA-Modal-Example/A-TMZ270.txt D 31 44 | F mess /home/jesusbill/Dev-Projects/github.com/Jesusbill/code-aster-examples/NLDA-Modal-Example/output.mess R 6 45 | F rmed /home/jesusbill/Dev-Projects/github.com/Jesusbill/code-aster-examples/NLDA-Modal-Example/modal.rmed R 80 46 | F libr /home/jesusbill/Dev-Projects/github.com/Jesusbill/code-aster-examples/NLDA-Modal-Example/seismic.rmed R 81 47 | F libr /home/jesusbill/Dev-Projects/github.com/Jesusbill/code-aster-examples/NLDA-Modal-Example/modal.resu R 10 48 | F libr /home/jesusbill/Dev-Projects/github.com/Jesusbill/code-aster-examples/NLDA-Modal-Example/seismic.resu R 11 49 | P consbtc oui 50 | P soumbtc oui 51 | P actions make_etude 52 | -------------------------------------------------------------------------------- /ParametricStudyExample/RunCase_1_Stage_1.comm: -------------------------------------------------------------------------------- 1 | DEBUT(LANG='EN') 2 | 3 | 4 | mesh = LIRE_MAILLAGE(identifier='0:1', 5 | UNITE=20) 6 | 7 | model = AFFE_MODELE(identifier='1:1', 8 | AFFE=_F(MODELISATION=('DST', ), 9 | PHENOMENE='MECANIQUE', 10 | GROUP_MA=('panelA', ),), 11 | MAILLAGE=mesh) 12 | 13 | elemprop = AFFE_CARA_ELEM(identifier='2:1', 14 | COQUE=(_F(COQUE_NCOU=5, 15 | EPAIS=140.0, 16 | GROUP_MA=('panelA', ), 17 | VECTEUR=(0.0, 1.0, 0.0)), 18 | ), 19 | MODELE=model) 20 | 21 | wood = DEFI_MATERIAU(identifier='3:1', 22 | ELAS_ORTH=_F(E_L=11600.0, 23 | E_N=300.0, 24 | E_T=300.0, 25 | G_LN=690.0, 26 | G_LT=690.0, 27 | G_TN=100.0, 28 | NU_LN=0.35, 29 | NU_LT=0.35, 30 | NU_TN=0.35, 31 | RHO=5e-10)) 32 | 33 | comp140 = DEFI_COMPOSITE(identifier='5:1', 34 | COUCHE=(_F(EPAIS=40.0, 35 | MATER=wood), 36 | _F(EPAIS=20.0, 37 | MATER=wood, 38 | ORIENTATION=90.0), 39 | _F(EPAIS=20.0, 40 | MATER=wood), 41 | _F(EPAIS=20.0, 42 | MATER=wood, 43 | ORIENTATION=90.0), 44 | _F(EPAIS=40.0, 45 | MATER=wood))) 46 | 47 | fieldmat = AFFE_MATERIAU(identifier='7:1', 48 | AFFE=(_F(GROUP_MA=('panelA', ), 49 | MATER=(comp140, )), 50 | ), 51 | MODELE=model) 52 | 53 | support = AFFE_CHAR_MECA(identifier='8:1', 54 | DDL_IMPO=_F(DX=0.0, 55 | DY=0.0, 56 | DZ=0.0, 57 | GROUP_MA=('support', )), 58 | MODELE=model) 59 | 60 | load = AFFE_CHAR_MECA(identifier='9:1', 61 | FORCE_COQUE=_F(FZ=-0.002, 62 | GROUP_MA=('panelA')), 63 | MODELE=model, 64 | PESANTEUR=_F(DIRECTION=(0.0, 0.0, -1.0), 65 | GRAVITE=10000.0)) 66 | 67 | reslin = MECA_STATIQUE(identifier='10:1', 68 | CARA_ELEM=elemprop, 69 | CHAM_MATER=fieldmat, 70 | EXCIT=(_F(CHARGE=support), 71 | _F(CHARGE=load)), 72 | MODELE=model) 73 | 74 | IMPR_RESU(identifier='14:1', 75 | RESU=(_F(NOM_CHAM=('DEPL',), 76 | RESULTAT=reslin),), 77 | UNITE=80) 78 | 79 | FIN() 80 | -------------------------------------------------------------------------------- /ParametricStudyExample/RunCase_2_Stage_1.comm: -------------------------------------------------------------------------------- 1 | DEBUT(LANG='EN') 2 | 3 | N_cases = 10 4 | orientationList = [10*i for i in range(N_cases)] 5 | 6 | mesh = LIRE_MAILLAGE(identifier='0:1', 7 | UNITE=20) 8 | 9 | model = AFFE_MODELE(identifier='1:1', 10 | AFFE=_F(MODELISATION=('DST', ), 11 | PHENOMENE='MECANIQUE', 12 | GROUP_MA=('panelA', ),), 13 | MAILLAGE=mesh) 14 | 15 | elemprop = AFFE_CARA_ELEM(identifier='2:1', 16 | COQUE=(_F(COQUE_NCOU=5, 17 | EPAIS=140.0, 18 | GROUP_MA=('panelA', ), 19 | VECTEUR=(0.0, 1.0, 0.0)), 20 | ), 21 | MODELE=model) 22 | 23 | wood = DEFI_MATERIAU(identifier='3:1', 24 | ELAS_ORTH=_F(E_L=11600.0, 25 | E_N=300.0, 26 | E_T=300.0, 27 | G_LN=690.0, 28 | G_LT=690.0, 29 | G_TN=100.0, 30 | NU_LN=0.35, 31 | NU_LT=0.35, 32 | NU_TN=0.35, 33 | RHO=5e-10)) 34 | 35 | support = AFFE_CHAR_MECA(identifier='8:1', 36 | DDL_IMPO=_F(DX=0.0, 37 | DY=0.0, 38 | DZ=0.0, 39 | GROUP_MA=('support', )), 40 | MODELE=model) 41 | 42 | load = AFFE_CHAR_MECA(identifier='9:1', 43 | FORCE_COQUE=_F(FZ=-0.002, 44 | GROUP_MA=('panelA')), 45 | MODELE=model, 46 | PESANTEUR=_F(DIRECTION=(0.0, 0.0, -1.0), 47 | GRAVITE=10000.0)) 48 | 49 | comp = [None for i in range(N_cases)] 50 | mat = [None for i in range(N_cases)] 51 | res = [None for i in range(N_cases)] 52 | 53 | for i in range(N_cases): 54 | angle = orientationList[i] 55 | comp[i] = DEFI_COMPOSITE(identifier='5:1', 56 | COUCHE=(_F(EPAIS=40.0, 57 | MATER=wood, 58 | ORIENTATION= angle), 59 | _F(EPAIS=20.0, 60 | MATER=wood, 61 | ORIENTATION=-90.0 + angle), 62 | _F(EPAIS=20.0, 63 | MATER=wood, 64 | ORIENTATION= angle), 65 | _F(EPAIS=20.0, 66 | MATER=wood, 67 | ORIENTATION=-90.0 + angle), 68 | _F(EPAIS=40.0, 69 | MATER=wood, 70 | ORIENTATION= angle))) 71 | 72 | mat[i] = AFFE_MATERIAU(identifier='7:1', 73 | AFFE=(_F(GROUP_MA=('panelA', ), 74 | MATER=(comp[i], )), 75 | ), 76 | MODELE=model) 77 | 78 | 79 | res[i] = MECA_STATIQUE(identifier='10:1', 80 | CARA_ELEM=elemprop, 81 | CHAM_MATER=mat[i], 82 | EXCIT=(_F(CHARGE=support), 83 | _F(CHARGE=load)), 84 | MODELE=model) 85 | 86 | disp = [None for i in range(N_cases)] 87 | affe = [None for i in range(N_cases)] 88 | for i in range(N_cases): 89 | disp[i] = CREA_CHAMP( 90 | TYPE_CHAM = 'NOEU_DEPL_R', 91 | NOM_CHAM = 'DEPL', 92 | OPERATION = 'EXTR', 93 | RESULTAT = res[i], 94 | INST = 0 95 | ) 96 | 97 | affe[i] = _F( 98 | MODELE = model, 99 | CARA_ELEM = elemprop, 100 | CHAM_GD = disp[i], 101 | INST = i 102 | ) 103 | 104 | reslin = CREA_RESU( 105 | OPERATION = 'AFFE', 106 | TYPE_RESU = 'EVOL_ELAS', 107 | NOM_CHAM = 'DEPL', 108 | AFFE = affe 109 | ) 110 | 111 | IMPR_RESU(identifier='14:1', 112 | RESU=(_F(NOM_CHAM=('DEPL',), 113 | RESULTAT=reslin),), 114 | UNITE=80) 115 | 116 | FIN() 117 | -------------------------------------------------------------------------------- /ParametricStudyExample/_ExportedFromSalomeObject_0_1_2_3.med: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jesusbill/code-aster-examples/73de5facfc4cf609b11ea66822cf0457986970b2/ParametricStudyExample/_ExportedFromSalomeObject_0_1_2_3.med -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # code-aster-examples 2 | A number of examples for the open-source Finite Element Solver [Code_Aster](https://www.code-aster.org/) and [Salome_Meca](https://www.code-aster.org/spip.php?article303) 3 | 4 | ## Examples 5 | 6 | Each folder contains a `.med` file with the mesh of the structure and a `.comm` file with the command file for Code_Aster. With these files anyone shoulf be able to reproduce the analyses with or without Salome_Meca. See the [IFC2CA video](https://youtu.be/V9Pc7SJvuRg) if you want to see how to reproduce the analyses with asterStudy, a dedicated module of Salome_Meca. 7 | 8 | [Tutorials 01-03](Tutorials_01-03): Static analysis of a cantilever beam with 3D solid elements and post-processing of results 9 | - [Video - Tutorial 01](https://youtu.be/lFUF5EelFUo) 10 | - [Video - Tutorial 02](https://youtu.be/BizOXE3T9m8) 11 | - [Video - Tutorial 03](https://youtu.be/07UxN1EaUvI) 12 | 13 | 14 | [Tutorials 04-06](Tutorials_04-06): Steady-state thermo-mechanical analysis of a cantilever beam with 3D solid elements 15 | - [Video - Tutorial 04](https://youtu.be/Rs_DuxT5dgw) 16 | - [Video - Tutorial 05](https://youtu.be/D7V7Qn-40DU) 17 | - [Video - Tutorial 06](https://youtu.be/eXNyT-aPh6Y) 18 | 19 | [Tutorial 07](Tutorial_07): Static analysis of a cantilever beam with beam elements and post-processing of results 20 | - [Video](https://youtu.be/Cx6mGyJH1Ms) 21 | 22 | Tutorial 08: Static analysis of a cantilever beam with shell elements and post-processing of results 23 | - [Video](https://youtu.be/qror21Uzc6c) 24 | 25 | [Tutorial 09](Tutorial_09): Calculation of reinforcement density for shell elements 26 | - [Video](https://youtu.be/wo5SJwPJCfU) 27 | 28 | [Tutorial 10 - Connect Non-Conformal Meshes](Tutorial_10): Connect non-conformal meshes, that is, meshes with interface boundaries in which the mesh node locations are not identical. 29 | - [Video](https://youtu.be/4peRNehSsj4) 30 | 31 | [Tutorial 11 - Connect Conformal Meshes](Tutorial_11): Connect conformal meshes, that is, meshes with interface boundaries in which the mesh node locations are identical. 32 | - [Video](https://youtu.be/U4qTv7UFFdA) 33 | 34 | [Tutorial 12 - Connect Objects With "Partition" Command](Tutorial_12): Use of the "partition" command in GEOM module of Salome_Meca to connect objects and obtain a single object to be meshed, similarly to "Union" operation in other software. 35 | - [Video](https://youtu.be/pdlUbAUb1GY) 36 | 37 | [Tutorial 13 - Modal Analysis with Solid Elements](Tutorial_13): perform a modal analysis of a 3D model with solid elements. 38 | - [Video](https://youtu.be/qnE_PcYbw7M) 39 | 40 | [Define Local Axes for 1D Elements](DefineLocalAxes1D): Define the orientation of the local axes of 1D elements in Code_Aster and extract this information in the result file, then visualize the local axes in Paraview 41 | - [Video](https://youtu.be/FUiFjAtCyX0) 42 | 43 | [Define Custom Beam Profile](CustomBeamProfile): Define a custom profile for beam elements given that these properties are calculated beforehand or extracted from a table. Extract not only the generalized forces but also the maximum stresses for each type of response 44 | - [Video](https://youtu.be/uZBcvgoby54) 45 | 46 | [Composite Shells](CompositeShellExample): Define a composite shell with an arbitrary number of layers, orhtotropic materials and arbitrary material directions and extract generalized forces and stress for a specific layer. BONUS: Example is performed with a Cross Laminated Timber (CLT) panel 47 | - [Video](https://youtu.be/52INSrQ48iQ) 48 | 49 | [Parametric Study](ParametricStudyExample): Setup and perform a parametric analysis based on the composite shell example and by modifying the orientation of the layers of the panel from an initial angle of 0 to a final angle of 90 degrees with a step of 10. This tutorial is based on modifying the command file with python outside the asterStudy module. It does not cover the case of a parametric geometry. 50 | - [Video](https://youtu.be/Fy49b0nwpXI) 51 | 52 | [Tensegrity Structure Example](TensegrityExample): Nonlinear dynamic analysis of a tensegrity structure with Code_Aster 53 | - [Simulation Video](https://youtu.be/PegRyW-5HXY) 54 | 55 | [Tensegrity Structure Seismic Example](TensegritySeismic): Nonlinear dynamic analysis of a tensegrity structure under ground excitation with Code_Aster 56 | - [Simulation Video](https://youtu.be/mPJh2J6BfA8) 57 | 58 | [IFC2CA Portal Example](IFC2CA_PortalExample): Download the IFC2CA example files and load them in Salome_Meca. Here you can find the files for the portal_01 example 59 | 60 | _Note: The repository referenced in the video has been moved in the [IfcOpenShell/analysis-models](https://github.com/IfcOpenShell/analysis-models) repository_ 61 | - [Video](https://youtu.be/V9Pc7SJvuRg) 62 | 63 | [Rod Example](RodExample): Perform a multi-step static analysis with material and geometric nonlinearity, using an elasto-plastic material model with kinematic hardening and a logarithmic strain for geometric nonlinearity in large deformations. 64 | Moreover, use a Jupyter Lab notebook to do some basic pre- and post-processing based on the input and output files. 65 | - [Video](https://youtu.be/3z35NDNWV78) 66 | 67 | [Linear Dynamic Analysis Example](LDA-Example): Run a linear transient dynamic analysis of a building structure based on an acceleration ground-motion time-history, after performing a modal analysis and assigning a classical damping matrix based on user-defined damping ratios for each mode. 68 | Moreover, use a Jupyter Lab notebook to do some basic post-processing based on the output test files that are created. 69 | - [Video](https://youtu.be/QoaNW4zC5u0) 70 | 71 | [Linear Dynamic Analysis Example with Modal Base](LDA-Modal-Example): Run a linear transient dynamic analysis of a building structure based on an acceleration ground-motion time-history, using a modal base of the structure; that is the mode shapes from a modal analysis. Modify the input file with respect to the standard dynamic analysis that uses a physical base to define the modal base, assign a classical damping matrix based on damping ratios for each mode, and restore back the results from the modal to the physical base, in order to extract the displacement time-histories in an external 'resu' file. 72 | - [Video](https://youtu.be/faFMYlkHM0g) 73 | 74 | ![](LDA-Modal-Example/execution_time_linear.png) 75 | 76 | [Nonlinear Dynamic Analysis Example](NLDA-Example): Run a nonlinear transient dynamic analysis of a building structure with nonlinear discrete elements that allow uplifting and rocking of the structure at the base. 77 | - [Video](https://youtu.be/s9dH7wyoewk) 78 | 79 | [Nonlinear Dynamic Analysis Example with Dynamic Sub-Structuring](NLDA-Modal-Example): Run a nonlinear transient dynamic analysis of a building structure with nonlinear discrete elements that allow uplifting and rocking of the structure at the base. The part of the structure that remains elastic is sub-structured in a super-element using the Craig-Bampton dynamic sub-structuring method. 80 | - [Video](https://youtu.be/FWYTCt2s0A8) 81 | 82 | ![](NLDA-Modal-Example/execution_time_nonlinear.png) 83 | 84 | ## License 85 | All content is licensed under an open-source, 'copyleft' license: 86 | [Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)](https://creativecommons.org/licenses/by-sa/4.0/) 87 | ![Attribution-ShareAlike 4.0 International](http://i.creativecommons.org/l/by-sa/3.0/88x31.png) 88 | -------------------------------------------------------------------------------- /RodExample/Mesh_1.med: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jesusbill/code-aster-examples/73de5facfc4cf609b11ea66822cf0457986970b2/RodExample/Mesh_1.med -------------------------------------------------------------------------------- /RodExample/cases.md: -------------------------------------------------------------------------------- 1 | ### Analysis Cases 2 | 3 | | Case | Material-nl | Geometric-nl | Load 4 | |------|-------------|--------------|------ 5 | | 01 | None | GDEF_LOG | Cyclic 6 | | 02 | VMIS_CINE | GDEF_LOG | Cyclic 7 | | 03 | VMIS_CINE | PETIT | Cyclic 8 | 9 | 10 | | Case | Material-nl | Geometric-nl | Load 11 | |------|-------------|--------------|------ 12 | | 11 | VMIS_CINE | GDEF_LOG | Monotonic- 13 | | 12 | VMIS_CINE | GDEF_LOG | Monotonic+ 14 | -------------------------------------------------------------------------------- /RodExample/processing.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import pandas as pd\n", 10 | "import matplotlib.pyplot as plt\n", 11 | "import numpy as np" 12 | ] 13 | }, 14 | { 15 | "cell_type": "code", 16 | "execution_count": 2, 17 | "metadata": {}, 18 | "outputs": [], 19 | "source": [ 20 | "rod_01 = pd.read_csv('rod_01.resu', header=4, delimiter= '\\s+', index_col=False)\n", 21 | "rod_02 = pd.read_csv('rod_02.resu', header=4, delimiter= '\\s+', index_col=False)\n", 22 | "rod_03 = pd.read_csv('rod_03.resu', header=4, delimiter= '\\s+', index_col=False)" 23 | ] 24 | }, 25 | { 26 | "cell_type": "code", 27 | "execution_count": 6, 28 | "metadata": {}, 29 | "outputs": [], 30 | "source": [ 31 | "data = {'D': np.concatenate((np.linspace(0,20,11), np.linspace(18,-20,20), np.linspace(-18,0,10)))}\n", 32 | "result = pd.DataFrame(data)\n", 33 | "result['LOG_LIN'] = -rod_01['RESULT_Z']/1000\n", 34 | "result['GDEF_LOG'] = -rod_02['RESULT_Z']/1000\n", 35 | "result['PETIT'] = -rod_03['RESULT_Z']/1000\n", 36 | "# result['Analytical'] = 200000*(np.pi*(10**2))*np.log((100 + result['D'])/100)/1000\n", 37 | "result['Linear'] = 200000*(np.pi*(10**2))/100*result['D']/1000" 38 | ] 39 | }, 40 | { 41 | "cell_type": "code", 42 | "execution_count": 10, 43 | "metadata": {}, 44 | "outputs": [ 45 | { 46 | "data": { 47 | "image/png": "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\n", 48 | "text/plain": [ 49 | "
" 50 | ] 51 | }, 52 | "metadata": { 53 | "needs_background": "light" 54 | }, 55 | "output_type": "display_data" 56 | } 57 | ], 58 | "source": [ 59 | "ax = result.plot(x='D', y=[2,3])\n", 60 | "\n", 61 | "plt.rcParams.update({'font.size': 12})" 62 | ] 63 | }, 64 | { 65 | "cell_type": "code", 66 | "execution_count": 11, 67 | "metadata": {}, 68 | "outputs": [ 69 | { 70 | "data": { 71 | "text/plain": [ 72 | "" 73 | ] 74 | }, 75 | "execution_count": 11, 76 | "metadata": {}, 77 | "output_type": "execute_result" 78 | }, 79 | { 80 | "data": { 81 | "image/png": "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\n", 82 | "text/plain": [ 83 | "
" 84 | ] 85 | }, 86 | "metadata": { 87 | "needs_background": "light" 88 | }, 89 | "output_type": "display_data" 90 | } 91 | ], 92 | "source": [ 93 | "rod_11 = pd.read_csv('rod_11.resu', header=4, delimiter= '\\s+', index_col=False)\n", 94 | "rod_12 = pd.read_csv('rod_12.resu', header=4, delimiter= '\\s+', index_col=False)\n", 95 | "data = {'D+': np.linspace(0,80,41)}\n", 96 | "result = pd.DataFrame(data)\n", 97 | "result['D-'] = -result['D+']\n", 98 | "# result\n", 99 | "result['Compression'] = -rod_11['RESULT_Z']/1000\n", 100 | "result['Tension'] = -rod_12['RESULT_Z']/1000\n", 101 | "ax = result.plot(x='D+', y=3, lineWidth=3, grid='on')\n", 102 | "result.plot(x='D-', y=2, lineWidth=3, grid='on', ax=ax)" 103 | ] 104 | }, 105 | { 106 | "cell_type": "code", 107 | "execution_count": null, 108 | "metadata": {}, 109 | "outputs": [], 110 | "source": [] 111 | } 112 | ], 113 | "metadata": { 114 | "kernelspec": { 115 | "display_name": "Python 3", 116 | "language": "python", 117 | "name": "python3" 118 | }, 119 | "language_info": { 120 | "codemirror_mode": { 121 | "name": "ipython", 122 | "version": 3 123 | }, 124 | "file_extension": ".py", 125 | "mimetype": "text/x-python", 126 | "name": "python", 127 | "nbconvert_exporter": "python", 128 | "pygments_lexer": "ipython3", 129 | "version": "3.8.2" 130 | } 131 | }, 132 | "nbformat": 4, 133 | "nbformat_minor": 4 134 | } 135 | -------------------------------------------------------------------------------- /RodExample/rod.comm: -------------------------------------------------------------------------------- 1 | 2 | iterationMaxNumber = 25 3 | 4 | DEBUT( 5 | LANG = 'EN' 6 | ) 7 | 8 | mesh = LIRE_MAILLAGE( 9 | UNITE = 2 10 | ) 11 | 12 | model = AFFE_MODELE( 13 | AFFE = _F( 14 | MODELISATION=('3D', ), 15 | PHENOMENE='MECANIQUE', 16 | TOUT='OUI' 17 | ), 18 | MAILLAGE = mesh 19 | ) 20 | 21 | mater = DEFI_MATERIAU( 22 | ELAS = _F( 23 | E = 200000.0, 24 | NU = 0.2 25 | ), 26 | ECRO_LINE = _F( 27 | D_SIGM_EPSI = 2000.0, 28 | SY = 20000.0 29 | ) 30 | ) 31 | 32 | fieldmat = AFFE_MATERIAU( 33 | AFFE = _F( 34 | MATER=(mater, ), 35 | TOUT='OUI' 36 | ), 37 | MODELE = model 38 | ) 39 | 40 | listr = DEFI_LIST_REEL( 41 | DEBUT = 0.0, 42 | INTERVALLE = _F( 43 | JUSQU_A = 4.0, 44 | NOMBRE = 40 45 | ) 46 | ) 47 | 48 | listrIn = DEFI_LIST_INST( 49 | METHODE='AUTO', 50 | DEFI_LIST = _F( 51 | LIST_INST = listr 52 | ) 53 | ) 54 | 55 | func = DEFI_FONCTION( 56 | NOM_PARA='INST', 57 | VALE=(0.0, 0.0, 1.0, 1.0, 3.0, -1.0, 4.0, 0.0) 58 | # VALE=(0.0, 0.0, 4.0, 4.0) 59 | ) 60 | 61 | bottom = AFFE_CHAR_MECA( 62 | DDL_IMPO = _F( 63 | DX = 0.0, 64 | DY = 0.0, 65 | DZ = 0.0, 66 | GROUP_MA=('side2', ) 67 | ), 68 | MODELE = model 69 | ) 70 | 71 | top = AFFE_CHAR_MECA( 72 | DDL_IMPO = _F( 73 | DX = 0.0, 74 | DY = 0.0, 75 | GROUP_MA=('side1', ) 76 | ), 77 | MODELE = model 78 | ) 79 | 80 | load = AFFE_CHAR_MECA( 81 | DDL_IMPO = _F( 82 | DZ = 20.0, 83 | GROUP_MA=('side1', ) 84 | ), 85 | MODELE = model 86 | ) 87 | 88 | resnonl = STAT_NON_LINE( 89 | CHAM_MATER = fieldmat, 90 | COMPORTEMENT=( 91 | _F( 92 | DEFORMATION = 'GDEF_LOG', 93 | RELATION = 'VMIS_CINE_LINE', 94 | TOUT = 'OUI' 95 | ) 96 | ), 97 | CONVERGENCE = _F( 98 | ARRET = 'OUI', 99 | ITER_GLOB_MAXI = iterationMaxNumber, 100 | ), 101 | EXCIT=( 102 | _F( 103 | CHARGE = bottom 104 | ), 105 | _F( 106 | CHARGE = top 107 | ), 108 | _F( 109 | CHARGE = load, 110 | FONC_MULT = func 111 | ) 112 | ), 113 | INCREMENT = _F( 114 | LIST_INST = listrIn 115 | ), 116 | # NEWTON = _F( 117 | # PREDICTION = 'ELASTIQUE', 118 | # PAS_MINI_ELAS = 0.005, 119 | # REAC_ITER = 1 120 | # ), 121 | MODELE = model, 122 | ARCHIVAGE = _F( 123 | LIST_INST = listr 124 | ) 125 | ) 126 | 127 | resnonl = CALC_CHAMP( 128 | reuse = resnonl, 129 | RESULTAT = resnonl, 130 | MODELE = model, 131 | CHAM_MATER = fieldmat, 132 | CONTRAINTE = 'SIEF_NOEU', 133 | VARI_INTERNE = 'VARI_ELNO', 134 | FORCE = 'REAC_NODA', 135 | ) 136 | 137 | Reac = POST_RELEVE_T( 138 | ACTION = _F( 139 | INTITULE = 'Sum_Reac', 140 | GROUP_NO = 'side2', 141 | RESULTAT = resnonl, 142 | NOM_CHAM = 'REAC_NODA', 143 | RESULTANTE = ('DX','DY','DZ',), 144 | MOMENT = ('DRX','DRY','DRZ',), 145 | POINT = (0.0,0.0,0.0,), 146 | OPERATION = 'EXTRACTION' 147 | ) 148 | ) 149 | 150 | IMPR_TABLE( 151 | TABLE = Reac, 152 | UNITE = 10, 153 | FORMAT_R = '1PE12.6' 154 | ) 155 | 156 | IMPR_RESU( 157 | RESU = _F( 158 | NOM_CHAM=('DEPL', 'SIEF_NOEU', 'VARI_ELNO'), 159 | RESULTAT = resnonl 160 | ), 161 | UNITE = 80 162 | ) 163 | 164 | FIN() 165 | -------------------------------------------------------------------------------- /TensegrityExample/RunCase_1_Stage_1.comm: -------------------------------------------------------------------------------- 1 | DEBUT(LANG='EN') 2 | 3 | 4 | AccelOfGravity = 9806 5 | 6 | tStartAnalysis = -1.0 7 | 8 | tStartDynamic = 0.0 9 | 10 | tFin = 4 11 | 12 | dt = 0.01 13 | 14 | dtArchive = 1 * dt 15 | 16 | gravitySteps = 10 17 | 18 | iterationMaxNumber = 25 19 | 20 | 21 | 22 | mesh = LIRE_MAILLAGE(UNITE=20) 23 | 24 | model = AFFE_MODELE(AFFE=(_F(MODELISATION=('3D', ), 25 | PHENOMENE='MECANIQUE', 26 | TOUT='OUI'), 27 | _F(GROUP_MA=('cable', ), 28 | MODELISATION=('CABLE', ), 29 | PHENOMENE='MECANIQUE')), 30 | MAILLAGE=mesh) 31 | 32 | elemprop = AFFE_CARA_ELEM(CABLE=_F(GROUP_MA=('cable', ), 33 | N_INIT=0.001, 34 | SECTION=0.1), 35 | MODELE=model) 36 | funcPESA = DEFI_FONCTION(NOM_PARA='INST', 37 | PROL_DROITE='CONSTANT', 38 | PROL_GAUCHE='CONSTANT', 39 | VALE=(tStartAnalysis, 0.0, tStartDynamic, 1.0)) 40 | 41 | instInGr = DEFI_LIST_REEL(DEBUT=tStartAnalysis, 42 | INTERVALLE=_F(JUSQU_A=tStartDynamic, 43 | NOMBRE=gravitySteps)) 44 | 45 | instGr = DEFI_LIST_INST(DEFI_LIST=_F(LIST_INST=instInGr), 46 | METHODE='AUTO') 47 | 48 | mater = DEFI_MATERIAU(ELAS=_F(E=210000.0, 49 | NU=0.2, 50 | RHO=7.85e-09)) 51 | 52 | cable = DEFI_MATERIAU(CABLE=_F(EC_SUR_E=0.0000001), 53 | ELAS=_F(E=210000.0, 54 | NU=0.2, 55 | RHO=7.85e-09)) 56 | 57 | fieldmat = AFFE_MATERIAU(AFFE=(_F(MATER=(mater, ), 58 | TOUT='OUI'), 59 | _F(GROUP_MA=('cable', ), 60 | MATER=(cable, ))), 61 | MODELE=model) 62 | 63 | instIn = DEFI_LIST_REEL(DEBUT=tStartDynamic, 64 | INTERVALLE=_F(JUSQU_A=tFin, 65 | PAS=dt)) 66 | 67 | inst = DEFI_LIST_INST(DEFI_LIST=_F(LIST_INST=instIn), 68 | METHODE='AUTO') 69 | 70 | instArch = DEFI_LIST_REEL(DEBUT=tStartDynamic, 71 | INTERVALLE=_F(JUSQU_A=tFin, 72 | PAS=dtArchive)) 73 | grdSupps = AFFE_CHAR_MECA(DDL_IMPO=( 74 | _F(DX=0.0, 75 | DY=0.0, 76 | DZ=0.0, 77 | GROUP_NO=('fix', ))), 78 | MODELE=model) 79 | 80 | # ACClire = DEFI_FONCTION(NOM_PARA='INST', 81 | # NOM_RESU='ACC', 82 | # PROL_DROITE='CONSTANT', 83 | # PROL_GAUCHE='CONSTANT', 84 | # VALE=(tStartDynamic, 0.0, 1.0, 0.0000, )) 85 | # 86 | # ACCscale = CALC_FONCTION(COMB=_F(COEF=AccelOfGravity, 87 | # FONCTION=ACClire)) 88 | 89 | instInEQ = DEFI_LIST_REEL(DEBUT=tStartDynamic, 90 | INTERVALLE=_F(JUSQU_A=tFin, 91 | PAS=dt)) 92 | exPESA = AFFE_CHAR_MECA(MODELE=model, 93 | PESANTEUR=_F(DIRECTION=(0.0, 0.0, -1.0), 94 | GRAVITE=AccelOfGravity)) 95 | # ACCreal = CALC_FONC_INTERP(FONCTION=ACCscale, 96 | # INTERPOL='LIN', 97 | # LIST_PARA=instInEQ, 98 | # NOM_PARA='INST', 99 | # NOM_RESU='ACC', 100 | # PROL_DROITE='CONSTANT', 101 | # PROL_GAUCHE='CONSTANT') 102 | 103 | ASSEMBLAGE(CARA_ELEM=elemprop, 104 | CHAM_MATER=fieldmat, 105 | CHARGE=(grdSupps, ), 106 | MATR_ASSE=(_F(MATRICE=CO('RIGIDITE'), 107 | OPTION='RIGI_MECA'), 108 | _F(MATRICE=CO('MASSE'), 109 | OPTION='MASS_MECA')), 110 | MODELE=model, 111 | NUME_DDL=CO('NUMEDDL')) 112 | res_Dyna = DYNA_NON_LINE(ARCHIVAGE=_F(CHAM_EXCLU=('VITE', 'VARI_ELGA'), 113 | LIST_INST=instInGr), 114 | CARA_ELEM=elemprop, 115 | CHAM_MATER=fieldmat, 116 | COMPORTEMENT=(_F(DEFORMATION='PETIT', 117 | RELATION='ELAS', 118 | TOUT='OUI'), 119 | _F(DEFORMATION='GROT_GDEP', 120 | GROUP_MA=('cable', ), 121 | RELATION='CABLE')), 122 | 123 | CONVERGENCE=_F(ARRET='OUI', 124 | ITER_GLOB_MAXI=iterationMaxNumber), 125 | EXCIT=(_F(CHARGE=grdSupps), 126 | _F(CHARGE=exPESA, 127 | FONC_MULT=funcPESA)), 128 | INCREMENT=_F(LIST_INST=instGr), 129 | MODELE=model, 130 | SCHEMA_TEMPS=_F(FORMULATION='DEPLACEMENT', 131 | MODI_EQUI='OUI', 132 | SCHEMA='HHT')) 133 | 134 | # DIRSEISM = CALC_CHAR_SEISME(DIRECTION=(0.0, 0.0, 1.0), 135 | # MATR_MASS=MASSE, 136 | # MONO_APPUI='OUI') 137 | # 138 | # ACCForce = AFFE_CHAR_MECA(MODELE=model, 139 | # VECT_ASSE=DIRSEISM) 140 | 141 | res_Dyna = DYNA_NON_LINE(reuse=res_Dyna, 142 | ARCHIVAGE=_F(CHAM_EXCLU=('VITE', 'VARI_ELGA'), 143 | LIST_INST=instArch), 144 | CARA_ELEM=elemprop, 145 | CHAM_MATER=fieldmat, 146 | COMPORTEMENT=(_F(DEFORMATION='PETIT', 147 | RELATION='ELAS', 148 | TOUT='OUI'), 149 | _F(DEFORMATION='GROT_GDEP', 150 | GROUP_MA=('cable', ), 151 | RELATION='CABLE')), 152 | 153 | CONVERGENCE=_F(ARRET='OUI', 154 | ITER_GLOB_MAXI=iterationMaxNumber), 155 | ETAT_INIT=_F(EVOL_NOLI=res_Dyna), 156 | EXCIT=(_F(CHARGE=grdSupps), 157 | # _F(CHARGE=ACCForce, 158 | # FONC_MULT=ACCreal), 159 | _F(CHARGE=exPESA)), 160 | INCREMENT=_F(LIST_INST=inst), 161 | MODELE=model, 162 | SCHEMA_TEMPS=_F(FORMULATION='DEPLACEMENT', 163 | MODI_EQUI='OUI', 164 | SCHEMA='HHT')) 165 | IMPR_RESU(RESU=_F(RESULTAT=res_Dyna, 166 | NOM_CHAM='DEPL'), 167 | UNITE=80) 168 | 169 | FIN() 170 | -------------------------------------------------------------------------------- /TensegrityExample/_ExportedFromSalomeObject_0_1_2_3.med: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jesusbill/code-aster-examples/73de5facfc4cf609b11ea66822cf0457986970b2/TensegrityExample/_ExportedFromSalomeObject_0_1_2_3.med -------------------------------------------------------------------------------- /TensegritySeismic/RunCase_1_Stage_1.comm: -------------------------------------------------------------------------------- 1 | DEBUT(LANG='EN') 2 | 3 | 4 | AccelOfGravity = 9806 5 | 6 | tStartAnalysis = -1.0 7 | 8 | tStartDynamic = 0.0 9 | 10 | tFin = 1.1 11 | 12 | dt = 0.005 13 | 14 | dtArchive = 1 * dt 15 | 16 | gravitySteps = 10 17 | 18 | iterationMaxNumber = 25 19 | 20 | 21 | 22 | mesh = LIRE_MAILLAGE(UNITE=20) 23 | 24 | model = AFFE_MODELE(AFFE=(_F(MODELISATION=('3D', ), 25 | PHENOMENE='MECANIQUE', 26 | TOUT='OUI'), 27 | _F(GROUP_MA=('cable', ), 28 | MODELISATION=('CABLE', ), 29 | PHENOMENE='MECANIQUE')), 30 | MAILLAGE=mesh) 31 | 32 | elemprop = AFFE_CARA_ELEM(CABLE=_F(GROUP_MA=('cable', ), 33 | N_INIT=0.001, 34 | SECTION=0.1), 35 | MODELE=model) 36 | funcPESA = DEFI_FONCTION(NOM_PARA='INST', 37 | PROL_DROITE='CONSTANT', 38 | PROL_GAUCHE='CONSTANT', 39 | VALE=(tStartAnalysis, 0.0, tStartDynamic, 1.0)) 40 | 41 | instInGr = DEFI_LIST_REEL(DEBUT=tStartAnalysis, 42 | INTERVALLE=_F(JUSQU_A=tStartDynamic, 43 | NOMBRE=gravitySteps)) 44 | 45 | instGr = DEFI_LIST_INST(DEFI_LIST=_F(LIST_INST=instInGr), 46 | METHODE='AUTO') 47 | 48 | mater = DEFI_MATERIAU(ELAS=_F(E=210000.0, 49 | NU=0.2, 50 | RHO=7.85e-09)) 51 | 52 | cable = DEFI_MATERIAU(CABLE=_F(EC_SUR_E=0.00001), 53 | ELAS=_F(E=210000.0, 54 | NU=0.2, 55 | RHO=7.85e-09)) 56 | 57 | fieldmat = AFFE_MATERIAU(AFFE=(_F(MATER=(mater, ), 58 | TOUT='OUI'), 59 | _F(GROUP_MA=('cable', ), 60 | MATER=(cable, ))), 61 | MODELE=model) 62 | 63 | instIn = DEFI_LIST_REEL(DEBUT=tStartDynamic, 64 | INTERVALLE=_F(JUSQU_A=tFin, 65 | PAS=dt)) 66 | 67 | inst = DEFI_LIST_INST(DEFI_LIST=_F(LIST_INST=instIn), 68 | METHODE='AUTO') 69 | 70 | instArch = DEFI_LIST_REEL(DEBUT=tStartDynamic, 71 | INTERVALLE=_F(JUSQU_A=tFin, 72 | PAS=dtArchive)) 73 | grdSupps = AFFE_CHAR_MECA(DDL_IMPO=( 74 | _F(DX=0.0, 75 | DY=0.0, 76 | DZ=0.0, 77 | GROUP_NO=('fix', ))), 78 | MODELE=model) 79 | ACClire = DEFI_FONCTION(NOM_PARA='INST', 80 | NOM_RESU='ACC', 81 | PROL_DROITE='CONSTANT', 82 | PROL_GAUCHE='CONSTANT', 83 | VALE=( 84 | tStartDynamic, 0.0, 85 | 0.1, 0.1, 86 | 0.3, -0.1, 87 | 0.5, 0.4, 88 | 0.7, -0.4, 89 | 0.8, 0.0, 90 | # 0.9, 0.1, 91 | # 1.1, -0.1, 92 | # 1.3, 0.4, 93 | # 1.5, -0.4, 94 | # 1.6, 0.0 95 | ) 96 | ) 97 | 98 | ACCscale = CALC_FONCTION(COMB=_F(COEF=AccelOfGravity, 99 | FONCTION=ACClire)) 100 | 101 | instInEQ = DEFI_LIST_REEL(DEBUT=tStartDynamic, 102 | INTERVALLE=_F(JUSQU_A=tFin, 103 | PAS=dt)) 104 | exPESA = AFFE_CHAR_MECA(MODELE=model, 105 | PESANTEUR=_F(DIRECTION=(0.0, 0.0, -1.0), 106 | GRAVITE=AccelOfGravity)) 107 | ACCreal = CALC_FONC_INTERP(FONCTION=ACCscale, 108 | INTERPOL='LIN', 109 | LIST_PARA=instInEQ, 110 | NOM_PARA='INST', 111 | NOM_RESU='ACC', 112 | PROL_DROITE='CONSTANT', 113 | PROL_GAUCHE='CONSTANT') 114 | ASSEMBLAGE(CARA_ELEM=elemprop, 115 | CHAM_MATER=fieldmat, 116 | CHARGE=(grdSupps, ), 117 | MATR_ASSE=(_F(MATRICE=CO('RIGIDITE'), 118 | OPTION='RIGI_MECA'), 119 | _F(MATRICE=CO('MASSE'), 120 | OPTION='MASS_MECA')), 121 | MODELE=model, 122 | NUME_DDL=CO('NUMEDDL')) 123 | res_Dyna = DYNA_NON_LINE(ARCHIVAGE=_F(CHAM_EXCLU=('VITE', 'VARI_ELGA', 'ACCE'), 124 | LIST_INST=instInGr), 125 | CARA_ELEM=elemprop, 126 | CHAM_MATER=fieldmat, 127 | COMPORTEMENT=(_F(DEFORMATION='GROT_GDEP', 128 | RELATION='ELAS', 129 | TOUT='OUI'), 130 | _F(DEFORMATION='GROT_GDEP', 131 | GROUP_MA=('cable', ), 132 | RELATION='CABLE')), 133 | 134 | CONVERGENCE=_F(ARRET='OUI', 135 | ITER_GLOB_MAXI=iterationMaxNumber), 136 | EXCIT=(_F(CHARGE=grdSupps), 137 | _F(CHARGE=exPESA, 138 | FONC_MULT=funcPESA)), 139 | INCREMENT=_F(LIST_INST=instGr), 140 | MODELE=model, 141 | SCHEMA_TEMPS=_F(FORMULATION='DEPLACEMENT', 142 | MODI_EQUI='OUI', 143 | SCHEMA='HHT')) 144 | 145 | DIRSEISM = CALC_CHAR_SEISME(DIRECTION=(0.5, 1.0, 0.0), 146 | MATR_MASS=MASSE, 147 | MONO_APPUI='OUI') 148 | 149 | ACCForce = AFFE_CHAR_MECA(MODELE=model, 150 | VECT_ASSE=DIRSEISM) 151 | 152 | res_Dyna = DYNA_NON_LINE(reuse=res_Dyna, 153 | ARCHIVAGE=_F(CHAM_EXCLU=('VITE', 'VARI_ELGA', 'ACCE'), 154 | LIST_INST=instArch), 155 | CARA_ELEM=elemprop, 156 | CHAM_MATER=fieldmat, 157 | COMPORTEMENT=(_F(DEFORMATION='GROT_GDEP', 158 | RELATION='ELAS', 159 | TOUT='OUI'), 160 | _F(DEFORMATION='GROT_GDEP', 161 | GROUP_MA=('cable', ), 162 | RELATION='CABLE')), 163 | 164 | CONVERGENCE=_F(ARRET='OUI', 165 | ITER_GLOB_MAXI=iterationMaxNumber), 166 | ETAT_INIT=_F(EVOL_NOLI=res_Dyna), 167 | EXCIT=(_F(CHARGE=grdSupps), 168 | _F(CHARGE=ACCForce, 169 | FONC_MULT=ACCreal), 170 | _F(CHARGE=exPESA)), 171 | INCREMENT=_F(LIST_INST=inst), 172 | MODELE=model, 173 | SCHEMA_TEMPS=_F(FORMULATION='DEPLACEMENT', 174 | MODI_EQUI='OUI', 175 | SCHEMA='HHT')) 176 | IMPR_RESU(RESU=_F(RESULTAT=res_Dyna, 177 | NOM_CHAM='DEPL'), 178 | UNITE=80) 179 | 180 | FIN() 181 | -------------------------------------------------------------------------------- /TensegritySeismic/_ExportedFromSalomeObject_0_1_2_3.med: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jesusbill/code-aster-examples/73de5facfc4cf609b11ea66822cf0457986970b2/TensegritySeismic/_ExportedFromSalomeObject_0_1_2_3.med -------------------------------------------------------------------------------- /Tutorial_07/RunCase_1_Stage_1.comm: -------------------------------------------------------------------------------- 1 | DEBUT(LANG='EN') 2 | 3 | 4 | mesh = LIRE_MAILLAGE(identifier='0:1', 5 | UNITE=20) 6 | 7 | model = AFFE_MODELE(identifier='1:1', 8 | AFFE=_F(MODELISATION=('POU_D_E', ), 9 | PHENOMENE='MECANIQUE', 10 | TOUT='OUI'), 11 | MAILLAGE=mesh) 12 | 13 | elemprop = AFFE_CARA_ELEM(identifier='2:1', 14 | MODELE=model, 15 | POUTRE=_F(CARA=('H', ), 16 | GROUP_MA=('Group_1', ), 17 | SECTION='RECTANGLE', 18 | VALE=(100.0, ))) 19 | 20 | mater = DEFI_MATERIAU(identifier='3:1', 21 | ELAS=_F(E=210000.0, 22 | NU=0.2)) 23 | 24 | fieldmat = AFFE_MATERIAU(identifier='4:1', 25 | AFFE=_F(MATER=(mater, ), 26 | TOUT='OUI'), 27 | MODELE=model) 28 | 29 | load = AFFE_CHAR_MECA(identifier='5:1', 30 | DDL_IMPO=_F(GROUP_NO=('fix', ), 31 | LIAISON='ENCASTRE'), 32 | FORCE_NODALE=_F(FZ=-1000.0, 33 | GROUP_NO=('force', )), 34 | MODELE=model) 35 | 36 | reslin = MECA_STATIQUE(identifier='6:1', 37 | CARA_ELEM=elemprop, 38 | CHAM_MATER=fieldmat, 39 | EXCIT=_F(CHARGE=load), 40 | MODELE=model) 41 | 42 | reslin = CALC_CHAMP(identifier='7:1', 43 | reuse=reslin, 44 | CONTRAINTE=('EFGE_NOEU', 'SIPO_NOEU'), 45 | RESULTAT=reslin) 46 | 47 | IMPR_RESU(identifier='8:1', 48 | RESU=_F(RESULTAT=reslin, 49 | TOUT_CHAM='OUI'), 50 | UNITE=2) 51 | 52 | FIN() -------------------------------------------------------------------------------- /Tutorial_07/_ExportedFromSalomeObject_0_1_2_3.med: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jesusbill/code-aster-examples/73de5facfc4cf609b11ea66822cf0457986970b2/Tutorial_07/_ExportedFromSalomeObject_0_1_2_3.med -------------------------------------------------------------------------------- /Tutorial_09/RunCase_1_Stage_1.comm: -------------------------------------------------------------------------------- 1 | DEBUT(LANG='EN') 2 | 3 | 4 | mesh = LIRE_MAILLAGE(identifier='0:1', 5 | UNITE=2) 6 | 7 | model = AFFE_MODELE(identifier='1:1', 8 | AFFE=_F(MODELISATION=('DKT', ), 9 | PHENOMENE='MECANIQUE', 10 | TOUT='OUI'), 11 | MAILLAGE=mesh) 12 | 13 | elemprop = AFFE_CARA_ELEM(identifier='2:1', 14 | COQUE=_F(EPAIS=0.3, 15 | GROUP_MA=('slab', ), 16 | VECTEUR=(0.0, 1.0, 0.0)), 17 | MODELE=model) 18 | 19 | mater = DEFI_MATERIAU(identifier='3:1', 20 | ELAS=_F(E=35700000000.0, 21 | NU=0.0)) 22 | 23 | fieldmat = AFFE_MATERIAU(identifier='4:1', 24 | AFFE=_F(MATER=(mater, ), 25 | TOUT='OUI'), 26 | MODELE=model) 27 | 28 | load = AFFE_CHAR_MECA(identifier='5:1', 29 | DDL_IMPO=_F(DX=0.0, 30 | DY=0.0, 31 | DZ=0.0, 32 | GROUP_MA=('pinned', )), 33 | FORCE_COQUE=_F(FZ=-2000.0, 34 | GROUP_MA=('slab', )), 35 | MODELE=model) 36 | 37 | reslin = MECA_STATIQUE(identifier='6:1', 38 | CARA_ELEM=elemprop, 39 | CHAM_MATER=fieldmat, 40 | EXCIT=_F(CHARGE=load), 41 | MODELE=model) 42 | 43 | reslin = CALC_CHAMP(identifier='7:1', 44 | reuse=reslin, 45 | CONTRAINTE=('EFGE_ELNO', ), 46 | RESULTAT=reslin) 47 | 48 | reslin = CALC_FERRAILLAGE(identifier='8:1', 49 | reuse=reslin, 50 | AFFE=_F(C_INF=0.04, 51 | C_SUP=0.04, 52 | FCK=35000000.0, 53 | FYK=450000000.0, 54 | GAMMA_C=1.5, 55 | GAMMA_S=1.15, 56 | GROUP_MA=('slab', ), 57 | UNITE_CONTRAINTE='Pa'), 58 | CODIFICATION='EC2', 59 | RESULTAT=reslin, 60 | TYPE_COMB='ELU') 61 | 62 | IMPR_RESU(identifier='9:1', 63 | RESU=_F(RESULTAT=reslin, 64 | TOUT_CHAM='OUI'), 65 | UNITE=80) 66 | 67 | FIN() -------------------------------------------------------------------------------- /Tutorial_09/_ExportedFromSalomeObject_0_1_2_5.med: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jesusbill/code-aster-examples/73de5facfc4cf609b11ea66822cf0457986970b2/Tutorial_09/_ExportedFromSalomeObject_0_1_2_5.med -------------------------------------------------------------------------------- /Tutorial_10/Compound_Mesh_1.med: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jesusbill/code-aster-examples/73de5facfc4cf609b11ea66822cf0457986970b2/Tutorial_10/Compound_Mesh_1.med -------------------------------------------------------------------------------- /Tutorial_10/non_conformal_mesh.comm: -------------------------------------------------------------------------------- 1 | DEBUT(LANG='EN') 2 | 3 | mesh = LIRE_MAILLAGE(UNITE=20) 4 | 5 | model = AFFE_MODELE(AFFE=_F(MODELISATION=('3D', ), 6 | PHENOMENE='MECANIQUE', 7 | TOUT='OUI'), 8 | MAILLAGE=mesh) 9 | 10 | steel = DEFI_MATERIAU(ELAS=_F(E=210000.0, 11 | NU=0.1)) 12 | 13 | fieldmat = AFFE_MATERIAU(AFFE=_F(MATER=(steel, ), 14 | TOUT='OUI'), 15 | MODELE=model) 16 | 17 | load = AFFE_CHAR_MECA(DDL_IMPO=_F(DX=0.0, 18 | DY=0.0, 19 | DZ=0.0, 20 | GROUP_MA=('fixed', )), 21 | FORCE_FACE=_F(FX=0.01, 22 | GROUP_MA=('top', )), 23 | LIAISON_MAIL=_F(GROUP_MA_ESCL=('contact', ), 24 | GROUP_MA_MAIT=('vol1', ), 25 | TYPE_RACCORD='MASSIF'), 26 | MODELE=model) 27 | 28 | reslin = MECA_STATIQUE(CHAM_MATER=fieldmat, 29 | EXCIT=_F(CHARGE=load), 30 | MODELE=model) 31 | 32 | IMPR_RESU(RESU=_F(RESULTAT=reslin, 33 | TOUT_CHAM='OUI'), 34 | UNITE=80) 35 | 36 | FIN() 37 | -------------------------------------------------------------------------------- /Tutorial_11/conformal_mesh.comm: -------------------------------------------------------------------------------- 1 | DEBUT(LANG='EN') 2 | 3 | mesh = LIRE_MAILLAGE(UNITE=20) 4 | 5 | model = AFFE_MODELE(AFFE=_F(MODELISATION=('3D', ), 6 | PHENOMENE='MECANIQUE', 7 | TOUT='OUI'), 8 | MAILLAGE=mesh) 9 | 10 | mater = DEFI_MATERIAU(ELAS=_F(E=210000.0, 11 | NU=0.1)) 12 | 13 | fieldmat = AFFE_MATERIAU(AFFE=_F(MATER=(mater, ), 14 | TOUT='OUI'), 15 | MODELE=model) 16 | 17 | load = AFFE_CHAR_MECA(DDL_IMPO=_F(DX=0.0, 18 | DY=0.0, 19 | DZ=0.0, 20 | GROUP_MA=('fix', )), 21 | FORCE_FACE=_F(FX=0.1, 22 | GROUP_MA=('force', )), 23 | MODELE=model) 24 | 25 | load0 = AFFE_CHAR_MECA(LIAISON_GROUP=(_F(COEF_IMPO=0.0, 26 | COEF_MULT_1=(1.0, ), 27 | COEF_MULT_2=(-1.0, ), 28 | DDL_1=('DX', ), 29 | DDL_2=('DX', ), 30 | GROUP_NO_1=('cont_p', ), 31 | GROUP_NO_2=('cont_2', )), 32 | _F(COEF_IMPO=0.0, 33 | COEF_MULT_1=(1.0, ), 34 | COEF_MULT_2=(-1.0, ), 35 | DDL_1=('DY', ), 36 | DDL_2=('DY', ), 37 | GROUP_NO_1=('cont_p', ), 38 | GROUP_NO_2=('cont_2', )), 39 | _F(COEF_IMPO=0.0, 40 | COEF_MULT_1=(1.0, ), 41 | COEF_MULT_2=(-1.0, ), 42 | DDL_1=('DZ', ), 43 | DDL_2=('DZ', ), 44 | GROUP_NO_1=('cont_p', ), 45 | GROUP_NO_2=('cont_2', ))), 46 | MODELE=model) 47 | 48 | reslin = MECA_STATIQUE(CHAM_MATER=fieldmat, 49 | EXCIT=(_F(CHARGE=load), 50 | _F(CHARGE=load0)), 51 | MODELE=model) 52 | 53 | IMPR_RESU(RESU=_F(RESULTAT=reslin, 54 | TOUT_CHAM='OUI'), 55 | UNITE=80) 56 | 57 | FIN() 58 | -------------------------------------------------------------------------------- /Tutorial_11/conformal_mesh.med: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jesusbill/code-aster-examples/73de5facfc4cf609b11ea66822cf0457986970b2/Tutorial_11/conformal_mesh.med -------------------------------------------------------------------------------- /Tutorial_12/partition.comm: -------------------------------------------------------------------------------- 1 | DEBUT(LANG='EN') 2 | 3 | mesh = LIRE_MAILLAGE(UNITE=20) 4 | 5 | model = AFFE_MODELE(AFFE=_F(MODELISATION=('3D', ), 6 | PHENOMENE='MECANIQUE', 7 | TOUT='OUI'), 8 | MAILLAGE=mesh) 9 | 10 | mater = DEFI_MATERIAU(ELAS=_F(E=210000.0, 11 | NU=0.1)) 12 | 13 | fieldmat = AFFE_MATERIAU(AFFE=_F(MATER=(mater, ), 14 | TOUT='OUI'), 15 | MODELE=model) 16 | 17 | load = AFFE_CHAR_MECA(DDL_IMPO=_F(DX=0.0, 18 | DY=0.0, 19 | DZ=0.0, 20 | GROUP_MA=('fix', )), 21 | FORCE_FACE=_F(FX=0.1, 22 | GROUP_MA=('force', )), 23 | MODELE=model) 24 | 25 | reslin = MECA_STATIQUE(CHAM_MATER=fieldmat, 26 | EXCIT=_F(CHARGE=load), 27 | MODELE=model) 28 | 29 | IMPR_RESU(RESU=_F(RESULTAT=reslin, 30 | TOUT_CHAM='OUI'), 31 | UNITE=80) 32 | 33 | FIN() 34 | -------------------------------------------------------------------------------- /Tutorial_12/partition.med: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jesusbill/code-aster-examples/73de5facfc4cf609b11ea66822cf0457986970b2/Tutorial_12/partition.med -------------------------------------------------------------------------------- /Tutorial_13/modal_3D.comm: -------------------------------------------------------------------------------- 1 | DEBUT(LANG='EN') 2 | 3 | mesh = LIRE_MAILLAGE(UNITE=20) 4 | 5 | model = AFFE_MODELE(AFFE=_F(MODELISATION=('3D', ), 6 | PHENOMENE='MECANIQUE', 7 | TOUT='OUI'), 8 | MAILLAGE=mesh) 9 | 10 | mater = DEFI_MATERIAU(ELAS=_F(E=210000.0, 11 | NU=0.2, 12 | RHO=1.0)) 13 | 14 | fieldmat = AFFE_MATERIAU(AFFE=_F(MATER=(mater, ), 15 | TOUT='OUI'), 16 | MODELE=model) 17 | 18 | load = AFFE_CHAR_MECA(DDL_IMPO=_F(DX=0.0, 19 | DY=0.0, 20 | DZ=0.0, 21 | GROUP_MA=('fix', )), 22 | MODELE=model) 23 | 24 | ASSEMBLAGE(CHAM_MATER=fieldmat, 25 | CHARGE=(load, ), 26 | MATR_ASSE=(_F(MATRICE=CO('mass'), 27 | OPTION='MASS_MECA'), 28 | _F(MATRICE=CO('stiff'), 29 | OPTION='RIGI_MECA')), 30 | MODELE=model, 31 | NUME_DDL=CO('dofs')) 32 | 33 | modes = CALC_MODES(CALC_FREQ=_F(NMAX_FREQ=15), 34 | MATR_MASS=mass, 35 | MATR_RIGI=stiff, 36 | OPTION='PLUS_PETITE', 37 | SOLVEUR_MODAL=_F(METHODE='SORENSEN')) 38 | 39 | IMPR_RESU(RESU=_F(RESULTAT=modes, 40 | TOUT_CHAM='OUI'), 41 | UNITE=80) 42 | 43 | FIN() 44 | -------------------------------------------------------------------------------- /Tutorial_13/modal_3D.med: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jesusbill/code-aster-examples/73de5facfc4cf609b11ea66822cf0457986970b2/Tutorial_13/modal_3D.med -------------------------------------------------------------------------------- /Tutorials_01-03/RunCase_1_beam.comm: -------------------------------------------------------------------------------- 1 | DEBUT(LANG='EN') 2 | 3 | 4 | mesh = LIRE_MAILLAGE(identifier='0:1', 5 | UNITE=3) 6 | 7 | model = AFFE_MODELE(identifier='1:1', 8 | AFFE=_F(MODELISATION=('3D', ), 9 | PHENOMENE='MECANIQUE', 10 | TOUT='OUI'), 11 | MAILLAGE=mesh) 12 | 13 | steel = DEFI_MATERIAU(identifier='2:1', 14 | ELAS=_F(E=210000.0, 15 | NU=0.1)) 16 | 17 | fieldmat = AFFE_MATERIAU(identifier='3:1', 18 | AFFE=_F(GROUP_MA=('beam', ), 19 | MATER=(steel, )), 20 | MODELE=model) 21 | 22 | load = AFFE_CHAR_MECA(identifier='4:1', 23 | DDL_IMPO=_F(DX=0.0, 24 | DY=0.0, 25 | DZ=0.0, 26 | GROUP_NO=('fix', )), 27 | MODELE=model) 28 | 29 | load0 = AFFE_CHAR_MECA(identifier='5:1', 30 | FORCE_FACE=_F(FZ=-1.0, 31 | GROUP_MA=('force', )), 32 | MODELE=model) 33 | 34 | reslin = MECA_STATIQUE(identifier='6:1', 35 | CHAM_MATER=fieldmat, 36 | EXCIT=(_F(CHARGE=load), 37 | _F(CHARGE=load0)), 38 | MODELE=model) 39 | 40 | reslin = CALC_CHAMP(identifier='7:1', 41 | reuse=reslin, 42 | CONTRAINTE=('SIGM_ELNO', 'SIGM_NOEU'), 43 | DEFORMATION=('EPSI_NOEU', ), 44 | FORCE=('REAC_NODA', ), 45 | RESULTAT=reslin) 46 | 47 | table = POST_RELEVE_T(identifier='8:1', 48 | ACTION=_F(GROUP_NO=('fix', ), 49 | INTITULE='reaction', 50 | NOM_CHAM='REAC_NODA', 51 | OPERATION=('EXTRACTION', ), 52 | RESULTANTE=('DZ', ), 53 | RESULTAT=reslin)) 54 | 55 | equiv = CALC_CHAMP(identifier='9:1', 56 | CRITERES=('SIEQ_NOEU', ), 57 | RESULTAT=reslin) 58 | 59 | table3 = MACR_LIGN_COUPE(identifier='10:1', 60 | LIGN_COUPE=_F(COOR_EXTR=(50.0, 1000.0, 0.0), 61 | COOR_ORIG=(50.0, 0.0, 0.0), 62 | NB_POINTS=20), 63 | NOM_CHAM='SIGM_NOEU', 64 | RESULTAT=reslin) 65 | 66 | IMPR_RESU(identifier='11:1', 67 | RESU=(_F(NOM_CHAM=('DEPL', 'SIGM_NOEU', 'SIGM_ELNO', 'EPSI_NOEU'), 68 | RESULTAT=reslin), 69 | _F(NOM_CHAM=('SIEQ_NOEU', ), 70 | RESULTAT=equiv)), 71 | UNITE=80) 72 | 73 | IMPR_TABLE(identifier='12:1', 74 | TABLE=table, 75 | UNITE=4) 76 | 77 | IMPR_TABLE(identifier='13:1', 78 | SEPARATEUR=' ,', 79 | TABLE=table3, 80 | UNITE=2) 81 | 82 | FIN() 83 | -------------------------------------------------------------------------------- /Tutorials_01-03/_ExportedFromSalomeObject_0_1_2_3.med: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jesusbill/code-aster-examples/73de5facfc4cf609b11ea66822cf0457986970b2/Tutorials_01-03/_ExportedFromSalomeObject_0_1_2_3.med -------------------------------------------------------------------------------- /Tutorials_01-03/runCA.py: -------------------------------------------------------------------------------- 1 | # import CodeAster 2 | import code_aster 3 | from code_aster.Commands import * 4 | 5 | # initialize 6 | code_aster.init(LANG='EN') 7 | 8 | # create and read mesh 9 | monMaillage = code_aster.Mesh() 10 | monMaillage.readMedFile("_ExportedFromSalomeObject_0_1_2_3.med") 11 | 12 | # prepare model 13 | monModel = code_aster.Model(monMaillage) 14 | monModel.addModelingOnMesh(code_aster.Physics.Mechanics, code_aster.Modelings.Tridimensional) 15 | monModel.build() 16 | 17 | # material settings 18 | matProp = code_aster.MaterialProperty("ELAS") 19 | matProp.addPropertyReal("E", 210000, True) 20 | matProp.addPropertyReal("NU", 0.3, True) 21 | 22 | steel = code_aster.Material() 23 | steel.addMaterialProperty(matProp) 24 | steel.build() 25 | 26 | fieldmat = code_aster.MaterialField(monMaillage) 27 | fieldmat.addMaterialsOnGroupOfCells(steel, ["beam"]) 28 | fieldmat.buildWithoutExternalStateVariables() 29 | 30 | # create boundary conditions 31 | bc_dirichlet = code_aster.MechanicalDirichletBC(monModel) 32 | bc_dirichlet.addBCOnNodes(code_aster.PhysicalQuantityComponent.Dx, 0.0, "fix") 33 | bc_dirichlet.addBCOnNodes(code_aster.PhysicalQuantityComponent.Dy, 0.0, "fix") 34 | bc_dirichlet.addBCOnNodes(code_aster.PhysicalQuantityComponent.Dz, 0.0, "fix") 35 | bc_dirichlet.build() 36 | 37 | load = code_aster.ForceReal() 38 | load.setValue(code_aster.PhysicalQuantityComponent.Fy, -10) 39 | 40 | bc_load = code_aster.ForceOnFaceReal(monModel) 41 | bc_load.setValue(load, "force") 42 | bc_load.build() 43 | 44 | # linear solver 45 | mongolver = code_aster.MumpsSolver(code_aster.Renumbering.Metis) 46 | 47 | # set up analysis 48 | mecaStatique = code_aster.LinearStaticAnalysis(monModel, fieldmat) 49 | mecaStatique.addDirichletBC(bc_dirichlet) 50 | mecaStatique.addLoad(bc_load) 51 | mecaStatique.setLinearSolver(mongolver) 52 | 53 | # run the analysis 54 | resu = mecaStatique.execute() 55 | 56 | # print the results 57 | resu.printMedFile("cantilever.rmed") 58 | 59 | # finalize 60 | code_aster.close() 61 | -------------------------------------------------------------------------------- /Tutorials_04-06/RunCase_1_Stage_1.comm: -------------------------------------------------------------------------------- 1 | DEBUT(LANG='EN') 2 | 3 | 4 | mesh = LIRE_MAILLAGE(identifier='0:1', 5 | UNITE=20) 6 | 7 | model = AFFE_MODELE(identifier='1:1', 8 | AFFE=_F(MODELISATION=('3D', ), 9 | PHENOMENE='THERMIQUE', 10 | TOUT='OUI'), 11 | MAILLAGE=mesh) 12 | 13 | mater = DEFI_MATERIAU(identifier='2:1', 14 | THER=_F(LAMBDA=6.0)) 15 | 16 | fieldmat = AFFE_MATERIAU(identifier='3:1', 17 | AFFE=_F(MATER=(mater, ), 18 | TOUT='OUI'), 19 | MODELE=model) 20 | 21 | load = AFFE_CHAR_THER(identifier='4:1', 22 | FLUX_REP=_F(FLUN=0.0, 23 | GROUP_MA=('ins', )), 24 | MODELE=model, 25 | TEMP_IMPO=(_F(GROUP_MA=('up_face', ), 26 | TEMP=10.0), 27 | _F(GROUP_MA=('low_face', ), 28 | TEMP=20.0))) 29 | 30 | resther = THER_LINEAIRE(identifier='5:1', 31 | CHAM_MATER=fieldmat, 32 | EXCIT=_F(CHARGE=load), 33 | MODELE=model) 34 | 35 | IMPR_RESU(identifier='6:1', 36 | RESU=_F(RESULTAT=resther, 37 | TOUT_CHAM='OUI'), 38 | UNITE=80) 39 | 40 | FIN() -------------------------------------------------------------------------------- /Tutorials_04-06/RunCase_2_Stage_2.comm: -------------------------------------------------------------------------------- 1 | POURSUITE(LANG='EN') 2 | 3 | 4 | mesh0 = LIRE_MAILLAGE(identifier='0:2', 5 | UNITE=2) 6 | 7 | model1 = AFFE_MODELE(identifier='1:2', 8 | AFFE=_F(MODELISATION=('3D', ), 9 | PHENOMENE='MECANIQUE', 10 | TOUT='OUI'), 11 | MAILLAGE=mesh0) 12 | 13 | young = DEFI_FONCTION(identifier='2:2', 14 | NOM_PARA='TEMP', 15 | PROL_DROITE='CONSTANT', 16 | PROL_GAUCHE='CONSTANT', 17 | VALE=(10.0, 210000.0, 15.0, 210000.0, 20.0, 105000.0)) 18 | 19 | poisson = DEFI_CONSTANTE(identifier='3:2', 20 | VALE=0.2) 21 | 22 | alpha = DEFI_CONSTANTE(identifier='4:2', 23 | VALE=1.2e-05) 24 | 25 | steel = DEFI_MATERIAU(identifier='5:2', 26 | ELAS_FO=_F(ALPHA=alpha, 27 | E=young, 28 | NU=poisson, 29 | TEMP_DEF_ALPHA=15.0)) 30 | 31 | load1 = AFFE_CHAR_MECA(identifier='6:2', 32 | DDL_IMPO=_F(DX=0.0, 33 | DY=0.0, 34 | DZ=0.0, 35 | GROUP_MA=('fix', )), 36 | MODELE=model1) 37 | 38 | proj = PROJ_CHAMP(identifier='7:2', 39 | MAILLAGE_1=mesh, 40 | MAILLAGE_2=mesh0, 41 | METHODE='COLLOCATION', 42 | NOM_CHAM=('TEMP', ), 43 | RESULTAT=resther) 44 | 45 | fieldma1 = AFFE_MATERIAU(identifier='8:2', 46 | AFFE=_F(MATER=(steel, ), 47 | TOUT='OUI'), 48 | AFFE_VARC=_F(EVOL=proj, 49 | NOM_VARC='TEMP', 50 | PROL_DROITE='CONSTANT', 51 | PROL_GAUCHE='CONSTANT', 52 | TOUT='OUI', 53 | VALE_REF=15.0), 54 | MODELE=model1) 55 | 56 | reslin1 = MECA_STATIQUE(identifier='9:2', 57 | CHAM_MATER=fieldma1, 58 | EXCIT=_F(CHARGE=load1), 59 | MODELE=model1) 60 | 61 | IMPR_RESU(identifier='10:2', 62 | RESU=_F(NOM_CHAM=('TEMP', ), 63 | RESULTAT=proj), 64 | UNITE=3) 65 | 66 | IMPR_RESU(identifier='11:2', 67 | RESU=_F(RESULTAT=reslin1, 68 | TOUT_CHAM='OUI'), 69 | UNITE=4) 70 | 71 | FIN() -------------------------------------------------------------------------------- /Tutorials_04-06/_ExportedFromSalomeObject_0_1_2_3.med: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jesusbill/code-aster-examples/73de5facfc4cf609b11ea66822cf0457986970b2/Tutorials_04-06/_ExportedFromSalomeObject_0_1_2_3.med --------------------------------------------------------------------------------