Я только начинаю работать с ASE и хотел написать программу для расчета коэффициента Пуассона для материала путем приложения деформаций к элементарной ячейке. Я написал следующий код:
import numpy as np
import matplotlib.pyplot as plt
from ase.build import bulk
import Morse
from ase.units import GPa
# Create the copper crystal
cu = bulk("Cu", "fcc", a=2.2614, cubic=True)
calc = Morse.MorsePotential()
cu.set_calculator(calc)
# Define a range of normal strains
normal_strains = np.linspace(-0.02, 0.02, 10) # 10 normal strains from -2% to +2%
# Initialize lists to store results
axial_strains = []
transverse_strains = []
# Apply normal strain and calculate the resulting transverse strains
for normal_strain in normal_strains:
strained_cu = cu.copy()
cell = strained_cu.get_cell()
original_cell = cell.copy() # Save the original cell for reference
cell[0, 0] *= (1 + normal_strain) # Apply normal strain in the X direction
strained_cu.set_cell(cell, scale_atoms=True)
strained_cu.set_calculator(calc)
# Calculate the resulting strains in the Y and Z directions
new_cell = strained_cu.get_cell()
print(f"new cell: {new_cell}")
print(original_cell)
transverse_strain_y = (new_cell[1, 1] - original_cell[1, 1]) / original_cell[1, 1]
transverse_strain_z = (new_cell[2, 2] - original_cell[2, 2]) / original_cell[2, 2]
Однако этот код применяет деформацию в направлении X, но направления Y и Z остаются неизменными. Как я могу применить деформацию к X, чтобы получить деформацию в направлениях Y и Z, чтобы иметь возможность рассчитать коэффициент Пуассона?
Для справки, вот отладочная распечатка старого и нового блока. ячейки:
new cell: Cell([2.2161720000000003, 2.2614, 2.2614])
original cell: Cell([2.2614, 2.2614, 2.2614])
new cell: Cell([2.2262226666666667, 2.2614, 2.2614])
original cell: Cell([2.2614, 2.2614, 2.2614])
new cell: Cell([2.2362733333333336, 2.2614, 2.2614])
original cell: Cell([2.2614, 2.2614, 2.2614])
new cell: Cell([2.246324, 2.2614, 2.2614])
original cell: Cell([2.2614, 2.2614, 2.2614])
new cell: Cell([2.256374666666667, 2.2614, 2.2614])
original cell: Cell([2.2614, 2.2614, 2.2614])
new cell: Cell([2.2664253333333333, 2.2614, 2.2614])
original cell: Cell([2.2614, 2.2614, 2.2614])
new cell: Cell([2.2764759999999997, 2.2614, 2.2614])
original cell: Cell([2.2614, 2.2614, 2.2614])
new cell: Cell([2.2865266666666666, 2.2614, 2.2614])
original cell: Cell([2.2614, 2.2614, 2.2614])
new cell: Cell([2.2965773333333335, 2.2614, 2.2614])
original cell: Cell([2.2614, 2.2614, 2.2614])
new cell: Cell([2.306628, 2.2614, 2.2614])
original cell: Cell([2.2614, 2.2614, 2.2614])
Подробнее здесь: https://stackoverflow.com/questions/790 ... ntire-cell
ASE применяет штаммы ко всей клетке ⇐ Python
Программы на Python
1728498034
Anonymous
Я только начинаю работать с ASE и хотел написать программу для расчета коэффициента Пуассона для материала путем приложения деформаций к элементарной ячейке. Я написал следующий код:
import numpy as np
import matplotlib.pyplot as plt
from ase.build import bulk
import Morse
from ase.units import GPa
# Create the copper crystal
cu = bulk("Cu", "fcc", a=2.2614, cubic=True)
calc = Morse.MorsePotential()
cu.set_calculator(calc)
# Define a range of normal strains
normal_strains = np.linspace(-0.02, 0.02, 10) # 10 normal strains from -2% to +2%
# Initialize lists to store results
axial_strains = []
transverse_strains = []
# Apply normal strain and calculate the resulting transverse strains
for normal_strain in normal_strains:
strained_cu = cu.copy()
cell = strained_cu.get_cell()
original_cell = cell.copy() # Save the original cell for reference
cell[0, 0] *= (1 + normal_strain) # Apply normal strain in the X direction
strained_cu.set_cell(cell, scale_atoms=True)
strained_cu.set_calculator(calc)
# Calculate the resulting strains in the Y and Z directions
new_cell = strained_cu.get_cell()
print(f"new cell: {new_cell}")
print(original_cell)
transverse_strain_y = (new_cell[1, 1] - original_cell[1, 1]) / original_cell[1, 1]
transverse_strain_z = (new_cell[2, 2] - original_cell[2, 2]) / original_cell[2, 2]
Однако этот код применяет деформацию в направлении X, но направления Y и Z остаются неизменными. Как я могу применить деформацию к X, чтобы получить деформацию в направлениях Y и Z, чтобы иметь возможность рассчитать коэффициент Пуассона?
Для справки, вот отладочная распечатка старого и нового блока. ячейки:
new cell: Cell([2.2161720000000003, 2.2614, 2.2614])
original cell: Cell([2.2614, 2.2614, 2.2614])
new cell: Cell([2.2262226666666667, 2.2614, 2.2614])
original cell: Cell([2.2614, 2.2614, 2.2614])
new cell: Cell([2.2362733333333336, 2.2614, 2.2614])
original cell: Cell([2.2614, 2.2614, 2.2614])
new cell: Cell([2.246324, 2.2614, 2.2614])
original cell: Cell([2.2614, 2.2614, 2.2614])
new cell: Cell([2.256374666666667, 2.2614, 2.2614])
original cell: Cell([2.2614, 2.2614, 2.2614])
new cell: Cell([2.2664253333333333, 2.2614, 2.2614])
original cell: Cell([2.2614, 2.2614, 2.2614])
new cell: Cell([2.2764759999999997, 2.2614, 2.2614])
original cell: Cell([2.2614, 2.2614, 2.2614])
new cell: Cell([2.2865266666666666, 2.2614, 2.2614])
original cell: Cell([2.2614, 2.2614, 2.2614])
new cell: Cell([2.2965773333333335, 2.2614, 2.2614])
original cell: Cell([2.2614, 2.2614, 2.2614])
new cell: Cell([2.306628, 2.2614, 2.2614])
original cell: Cell([2.2614, 2.2614, 2.2614])
Подробнее здесь: [url]https://stackoverflow.com/questions/79070995/ase-apply-strains-to-entire-cell[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия