四态法计算不同近邻DMI相互作用文件生成脚本

书接上回 拷打Deepseek实现自动生成四态法计算海森堡模型多近邻 J 计算文件脚本

本文依旧借助D师傅来完成代码编写和功能完善,

理论和方法 参考

四态法计算DMI

更正:四态法计算DMI需要打开SOC

代码功能:

超胞构建
读取用户输入的扩胞比例,自动生成 TRANSMAT.in
调用 vaspkit 模块 400 生成 SUPERCELL.vasp 并重命名为 POSCAR-sc
原子距离分析
解析超胞 POSCAR,列出所有原子
以“中心原子”为参考,按元素与距离(±0.1 Å 容差)自动分组
为每组生成“特殊近邻”代表,用于后续四种自旋构型
VASP 输入文件批量生成
自动调用 vaspkit 依次生成 KPOINTS、POTCAR、INCAR
支持四种计算模式:
① 标准  ② 仅 U  ③ 仅 SOC  ④ U+SOC(缺省,推荐 DMI)
自动在 INCAR 中追加 I_CONSTRAINED_M = 1
磁性构型自动设置
对每组近邻、每个方向(x/y/z)、每种状态(pp/nn/pn/np)自动生成:
– 中心原子、特殊近邻、环境原子的非共线磁矩方向
– 写入 MAGMOM 并保证 ISPIN=2 / LSORBIT=.TRUE.
磁矩大小用户可调(缺省 1.0 μB)

快速开始

# 1. 准备原始 POSCAR 并放入空目录
cp $YOUR_POSCAR ./POSCAR
# 2. 运行脚本
python dmi_prep.py
# 3. 按提示输入
#   超胞比例:3 3 1 ↵
#   选择中心原子索引:1 ↵
#   K 点精度:0.04 ↵
#   计算模式:4 ↵ (U+SOC)
#   磁矩大小:1 ↵
# 4. 检查生成的邻居文件夹并提交 VASP 作业
ls Fe_2.8/

代码整体

import subprocess
import sys
import os
import numpy as np
from math import sqrt
from collections import defaultdict
import shutil
import re
from tabulate import tabulate
def create_transmat_file(scale_a, scale_b, scale_c):
    """Create TRANSMAT.in file"""
    content 
= f
""
"Read transformation matrix from the TRANSMAT.in file if it exists.
{scale_a:>4}    0    0          # must be three integers
0    {scale_b:>4}    0          # must be three integers
0    0    {scale_c:>4}          # must be three integers
"
""
    with open("TRANSMAT.in", "w") as f:
        f.write(content)
def parse_poscar(filename):
    """Parse POSCAR file and return lattice vectors, atom types, atom counts, and coordinates"""
    with open(filename, 'r') as f:
        lines 
= f.readlines()
    
    # Read title
    title = lines[0].strip()
    
    # Read scaling factor
    scale = float(lines[1].strip())
    
    # Read lattice vectors
    lattice_vectors = []
    for i in range(2, 5):
        lattice_vectors.append([float(x) for x in lines[i].split()])
    lattice_vectors = np.array(lattice_vectors) * scale
    
    # Read atom types
    atom_types = lines[5].split()
    
    # Read atom counts
    atom_counts = [int(x) for x in lines[6].split()]
    
    # Check coordinate type
    coord_type = lines[7].strip().lower()
    
    # Read atom coordinates
    coordinates = []
    atom_labels = []
    index = 8
    for i, atom_type in enumerate(atom_types):
        for j in range(atom_counts[i]):
            parts = lines[index].split()
            coords = [float(x) for x in parts[:3]]
            label = f"{atom_type}{j+1:03d}"
            if len(parts) > 3:
                label = parts[3]
            coordinates.append(coords)
            atom_labels.append(label)
            index += 1
    
    return lattice_vectors, atom_types, atom_counts, coordinates, atom_labels, coord_type
def direct_to_cartesian(direct_coords, lattice_vectors):
    """Convert direct coordinates to Cartesian coordinates"""
    cartesian_coords = []
    for coord in direct_coords:
        cartesian = np.dot(coord, lattice_vectors)
        cartesian_coords.append(cartesian)
    return cartesian_coords
def calculate_distance(coord1, coord2):
    """Calculate distance between two coordinates (without periodic boundary conditions)"""
    return sqrt((coord1[0]-coord2[0])**2 + (coord1[1]-coord2[1])**2 + (coord1[2]-coord2[2])**2)
def group_atoms_by_distance(distances, tolerance=0.01):
    """Group atoms by distance with tolerance"""
    groups = []
    used_indices = set()
    
    for i, dist in enumerate(distances):
        if i in used_indices:
            continue
            
        group = [i]
        used_indices.add(i)
        
        for j in range(i+1, len(distances)):
            if j in used_indices:
                continue
                
            if abs(distances[j] - dist) < tolerance:
                group.append(j)
                used_indices.add(j)
                
        groups.append(group)
    
    return groups
def run_vaspkit_command(command_input, description):
    """Run vaspkit command and handle results"""
    print(f"Running vaspkit for {description}...")
    result = subprocess.run(
        ["vaspkit"],
        input=command_input,
        text=True,
        capture_output=True
    )
    
    if result.returncode == 0:
        print(f"vaspkit {description} executed successfully")
        if result.stdout:
            print("Output:", result.stdout)
        return True
    else:
        print(f"Error running vaspkit for {description}:")
        if result.stderr:
            print(result.stderr)
        return False
def add_constrained_m_to_incar(incar_path):
    """Add I_CONSTRAINED_M = 1 to INCAR file"""
    with open(incar_path, 'r') as f:
        lines = f.readlines()
    
    # Check if I_CONSTRAINED_M already exists
    constrained_m_exists = False
    for i, line in enumerate(lines):
        if line.strip().startswith('I_CONSTRAINED_M'):
            lines[i] = 'I_CONSTRAINED_M = 1\n'
            constrained_m_exists = True
            break
    
    # If not exists, add to file end
    if not constrained_m_exists:
        lines.append('I_CONSTRAINED_M = 1\n')
    
    with open(incar_path, 'w') as f:
        f.writelines(lines)
def set_magmom_in_incar(incar_path, magmom_str):
    """Set MAGMOM parameter in INCAR file according to requirements"""
    with open(incar_path, 'r') as f:
        lines = f.readlines()
    
    # Check if MAGMOM exists
    magmom_exists = False
    magmom_line_index = -1
    ispin_line_index = -1
    
    for i, line in enumerate(lines):
        if 'MAGMOM' in line.upper():
            magmom_exists = True
            magmom_line_index = i
        if 'ISPIN' in line.upper():
            ispin_line_index = i
    
    # Remove all existing MAGMOM lines
    new_lines = []
    for line in lines:
        if 'MAGMOM' not in line.upper():
            new_lines.append(line)
    
    # Add ISPIN = 2 if not exists
    ispin_added = False
    if ispin_line_index == -1:
        new_lines.insert(0, 'ISPIN = 2\n')
        ispin_line_index = 0
        ispin_added = True
    
    # Ensure ISPIN = 2
    for i, line in enumerate(new_lines):
        if 'ISPIN' in line.upper():
            parts = line.split('=')
            if len(parts) > 1:
                new_lines[i] = 'ISPIN = 2\n'
            else:
                new_lines[i] = 'ISPIN = 2\n'
    
    # Add MAGMOM after ISPIN line
    if ispin_added:
        insert_index = ispin_line_index + 1
    else:
        insert_index = ispin_line_index + 1
    
    new_lines.insert(insert_index, f'MAGMOM = {magmom_str}\n')
    
    with open(incar_path, 'w') as f:
        f.writelines(new_lines)
def get_magnetic_moments(total_atoms, center_index, neighbor_index, element_indices, element, direction, state, mag_size):
    """Calculate magnetic moments based on direction, state, and magnetic moment size"""
    # Initialize magnetic moments for all atoms (0 0 0)
    magmoms = [[0, 0, 0] for _ in range(total_atoms)]
    
    # Set magnetic moments based on direction and state
    if direction == 'z':
        # z direction: x cross y
        if state == 'pp':
            # Center atom: x direction
            magmoms[center_index] = [mag_size, 0, 0]
            # Neighbor atom: y direction
            magmoms[neighbor_index] = [0, mag_size, 0]
            # Same element other atoms: z direction
            for idx in element_indices:
                if idx != center_index and idx != neighbor_index:
                    magmoms[idx] = [0, 0, mag_size]
        elif state == 'nn':
            # Center atom: -x direction
            magmoms[center_index] = [-mag_size, 0, 0]
            # Neighbor atom: -y direction
            magmoms[neighbor_index] = [0, -mag_size, 0]
            # Same element other atoms: z direction
            for idx in element_indices:
                if idx != center_index and idx != neighbor_index:
                    magmoms[idx] = [0, 0, mag_size]
        elif state == 'pn':
            # Center atom: x direction
            magmoms[center_index] = [mag_size, 0, 0]
            # Neighbor atom: -y direction
            magmoms[neighbor_index] = [0, -mag_size, 0]
            # Same element other atoms: z direction
            for idx in element_indices:
                if idx != center_index and idx != neighbor_index:
                    magmoms[idx] = [0, 0, mag_size]
        elif state == 'np':
            # Center atom: -x direction
            magmoms[center_index] = [-mag_size, 0, 0]
            # Neighbor atom: y direction
            magmoms[neighbor_index] = [0, mag_size, 0]
            # Same element other atoms: z direction
            for idx in element_indices:
                if idx != center_index and idx != neighbor_index:
                    magmoms[idx] = [0, 0, mag_size]
    
    elif direction == 'x':
        # x direction: y cross z
        if state == 'pp':
            # Center atom: y direction
            magmoms[center_index] = [0, mag_size, 0]
            # Neighbor atom: z direction
            magmoms[neighbor_index] = [0, 0, mag_size]
            # Same element other atoms: x direction
            for idx in element_indices:
                if idx != center_index and idx != neighbor_index:
                    magmoms[idx] = [mag_size, 0, 0]
        elif state == 'nn':
            # Center atom: -y direction
            magmoms[center_index] = [0, -mag_size, 0]
            # Neighbor atom: -z direction
            magmoms[neighbor_index] = [0, 0, -mag_size]
            # Same element other atoms: x direction
            for idx in element_indices:
                if idx != center_index and idx != neighbor_index:
                    magmoms[idx] = [mag_size, 0, 0]
        elif state == 'pn':
            # Center atom: y direction
            magmoms[center_index] = [0, mag_size, 0]
            # Neighbor atom: -z direction
            magmoms[neighbor_index] = [0, 0, -mag_size]
            # Same element other atoms: x direction
            for idx in element_indices:
                if idx != center_index and idx != neighbor_index:
                    magmoms[idx] = [mag_size, 0, 0]
        elif state == 'np':
            # Center atom: -y direction
            magmoms[center_index] = [0, -mag_size, 0]
            # Neighbor atom: z direction
            magmoms[neighbor_index] = [0, 0, mag_size]
            # Same element other atoms: x direction
            for idx in element_indices:
                if idx != center_index and idx != neighbor_index:
                    magmoms[idx] = [mag_size, 0, 0]
    
    elif direction == 'y':
        # y direction: z cross x
        if state == 'pp':
            # Center atom: z direction
            magmoms[center_index] = [0, 0, mag_size]
            # Neighbor atom: x direction
            magmoms[neighbor_index] = [mag_size, 0, 0]
            # Same element other atoms: y direction
            for idx in element_indices:
                if idx != center_index and idx != neighbor_index:
                    magmoms[idx] = [0, mag_size, 0]
        elif state == 'nn':
            # Center atom: -z direction
            magmoms[center_index] = [0, 0, -mag_size]
            # Neighbor atom: -x direction
            magmoms[neighbor_index] = [-mag_size, 0, 0]
            # Same element other atoms: y direction
            for idx in element_indices:
                if idx != center_index and idx != neighbor_index:
                    magmoms[idx] = [0, mag_size, 0]
        elif state == 'pn':
            # Center atom: z direction
            magmoms[center_index] = [0, 0, mag_size]
            # Neighbor atom: -x direction
            magmoms[neighbor_index] = [-mag_size, 0, 0]
            # Same element other atoms: y direction
            for idx in element_indices:
                if idx != center_index and idx != neighbor_index:
                    magmoms[idx] = [0, mag_size, 0]
        elif state == 'np':
            # Center atom: -z direction
            magmoms[center_index] = [0, 0, -mag_size]
            # Neighbor atom: x direction
            magmoms[neighbor_index] = [mag_size, 0, 0]
            # Same element other atoms: y direction
            for idx in element_indices:
                if idx != center_index and idx != neighbor_index:
                    magmoms[idx] = [0, mag_size, 0]
    
    # Convert magnetic moments list to VASP format string
    magmom_str = " ".join([f"{m[0]} {m[1]} {m[2]}" for m in magmoms])
    return magmom_str, magmoms
def format_moment(moment):
    """Format magnetic moment for display"""
    if moment == [0, 0, 0]:
        return "0 0 0"
    elif moment == [1, 0, 0]:
        return "+X"
    elif moment == [-1, 0, 0]:
        return "-X"
    elif moment == [0, 1, 0]:
        return "+Y"
    elif moment == [0, -1, 0]:
        return "-Y"
    elif moment == [0, 0, 1]:
        return "+Z"
    elif moment == [0, 0, -1]:
        return "-Z"
    else:
        return f"{moment[0]} {moment[1]} {moment[2]}"
def main():
    # Get supercell scaling factors from user
    try:
        scales_input = input("Enter supercell scaling factors (e.g., 3 3 1): ").strip()
        if not scales_input:
            scales_input = "2 2 1"  # Default value
        
        scales = scales_input.split()
        if len(scales) != 3:
            raise ValueError("Please provide exactly three integers")
        
        scale_a, scale_b, scale_c = map(int, scales)
        
        # Create TRANSMAT.in file
        create_transmat_file(scale_a, scale_b, scale_c)
        print("Created TRANSMAT.in file with specified scaling factors")
        
        # Run vaspkit 400 module
        if not run_vaspkit_command("400\n", "400 module (supercell generation)"):
            return
        
        # Rename file
        if os.path.exists("SUPERCELL.vasp"):
            os.rename("SUPERCELL.vasp", "POSCAR-sc")
            print("Renamed SUPERCELL.vasp to POSCAR-sc")
        else:
            print("Error: SUPERCELL.vasp not found")
            return
        
        # Parse POSCAR-sc file
        lattice_vectors, atom_types, atom_counts, coordinates, atom_labels, coord_type = parse_poscar("POSCAR-sc")
        total_atoms = len(atom_labels)
        
        # Display atom information
        print("\nAtom information in supercell:")
        for i, atom_type in enumerate(atom_types):
            print(f"{atom_type}: {atom_counts[i]} atoms")
        
        # Convert coordinates to Cartesian (if direct coordinates)
        if coord_type == "direct":
            cartesian_coords = direct_to_cartesian(coordinates, lattice_vectors)
        else:
            cartesian_coords = coordinates
        
        # Let user select center atom
        print("\nAvailable atoms:")
        for i, label in enumerate(atom_labels):
            print(f"{i+1}: {label}")
        
        try:
            center_index = int(input("\nSelect center atom by index: ")) - 1
            if center_index < 0 or center_index >= len(atom_labels):
                raise ValueError("Invalid index")
        except ValueError as e:
            print(f"Invalid input: {e}")
            return
        
        center_atom = atom_labels[center_index]
        center_coord = cartesian_coords[center_index]
        center_element = ''.join([c for c in center_atom if not c.isdigit()])
        print(f"Selected center atom: {center_atom}")
        
        # Get all atom indices of center element
        center_element_indices = []
        for i, label in enumerate(atom_labels):
            element = '
'.join([c for c in label if not c.isdigit()])
            if element == center_element:
                center_element_indices.append(i)
        
        # Calculate distances from center element atoms to center atom (without periodic boundary conditions)
        distances = []
        center_element_indices_without_center = [i for i in center_element_indices if i != center_index]
        
        for i in center_element_indices_without_center:
            dist = calculate_distance(center_coord, cartesian_coords[i])
            distances.append((i, dist))
        
        # Group atoms by distance
        distance_groups = defaultdict(list)
        for idx, dist in distances:
            # Format distance (keep one decimal)
            formatted_dist = f"{dist:.1f}"
            distance_groups[formatted_dist].append(idx)
        
        # Display distance groups
        print(f"\n{center_element} atoms grouped by distance from center:")
        neighbor_groups = []
        for distance, indices in distance_groups.items():
            # For each distance group, select the atom with the smallest index as the special neighbor
            special_neighbor = min(indices)
            print(f"Distance {distance} Å: {len(indices)} atoms (special neighbor: {atom_labels[special_neighbor]})")
            
            neighbor_groups.append({
                '
element
'
: center_element,
                'distance': distance,
                'special_neighbor': special_neighbor,
                'all_indices': indices,
                'folder_name': f"{center_element}_{distance}"
            })
        
        # Step 3: Generate KPOINTS, POTCAR and INCAR files
        print("\n" + "="*50)
        print("Step 3: Generating KPOINTS, POTCAR and INCAR files")
        print("="*50)
        
        # Create temporary directory and copy POSCAR-sc
        temp_dir = "vaspkit_temp"
        os.makedirs(temp_dir, exist_ok=True)
        shutil.copy2("POSCAR-sc", os.path.join(temp_dir, "POSCAR"))
        
        # Switch to temporary directory
        original_dir = os.getcwd()
        os.chdir(temp_dir)
        
        # Prompt user to ensure vaspkit is configured with POTCAR path
        print("\nPlease ensure that vaspkit is configured with the correct POTCAR path.")
        input("Press Enter to continue...")
        
        # Get K-point precision
        kpoint_precision = input("Enter K-point precision (default 0.04, smaller value means higher precision, not recommended < 0.01): ").strip()
        if not kpoint_precision:
            kpoint_precision = "0.04"
        
        # Run vaspkit 102 module
        if not run_vaspkit_command(f"102\n2\n{kpoint_precision}\n", "102 module (KPOINTS and POTCAR generation)"):
            os.chdir(original_dir)
            return
        
        # Check if POTCAR was generated
        if not os.path.exists("POTCAR"):
            print("POTCAR was not generated. Please manually prepare POTCAR and place it in the current directory.")
            input("Press Enter after you have placed POTCAR in the directory...")
            
            if not os.path.exists("POTCAR"):
                print("POTCAR still not found. Exiting.")
                os.chdir(original_dir)
                return
        
        # Ask user if they need U or SOC
        print("\nPlease select the type of calculation:")
        print("1. Standard (no U, no SOC)")
        print("2. With U (Hubbard U)")
        print("3. With SOC (Spin-Orbit Coupling)")
        print("4. With both U and SOC (recommended for DMI)")
        
        choice = input("Enter your choice (1-4, default is 4 for DMI calculation): ").strip()
        if not choice:
            choice = "4"
        
        # Run appropriate vaspkit 101 module based on choice
        if choice == "1":
            if not run_vaspkit_command("101\nMGST\n", "101 module (standard INCAR generation)"):
                os.chdir(original_dir)
                return
        elif choice == "2":
            if not run_vaspkit_command("101\nMGPUST\n", "101 module (INCAR generation with U)"):
                os.chdir(original_dir)
                return
            # Prompt user to check U settings in temporary directory
            print("\nPlease check and modify the U settings in the temporary directory if needed.")
            print("The U values generated by vaspkit might need adjustment.")
            input("Press Enter after you have confirmed the U settings...")
        elif choice == "3":
            if not run_vaspkit_command("101\nMGSOCST\n", "101 module (INCAR generation with SOC)"):
                os.chdir(original_dir)
                return
        elif choice == "4":
            if not run_vaspkit_command("101\nMGPUSOCST\n", "101 module (INCAR generation with U and SOC)"):
                os.chdir(original_dir)
                return
            # Prompt user to check U settings in temporary directory
            print("\nPlease check and modify the U settings in the temporary directory if needed.")
            print("The U values generated by vaspkit might need adjustment.")
            input("Press Enter after you have confirmed the U settings...")
        else:
            print("Invalid choice. Using default (U and SOC) for DMI calculation.")
            if not run_vaspkit_command("101\nMGPUSOCST\n", "101 module (INCAR generation with U and SOC)"):
                os.chdir(original_dir)
                return
            # Prompt user to check U settings in temporary directory
            print("\nPlease check and modify the U settings in the temporary directory if needed.")
            print("The U values generated by vaspkit might need adjustment.")
            input("Press Enter after you have confirmed the U settings...")
        
        # Check if INCAR was generated
        if not os.path.exists("INCAR"):
            print("INCAR was not generated. Please check vaspkit configuration.")
            os.chdir(original_dir)
            return
        
        # Confirm INCAR content
        print("\nGenerated INCAR content:")
        with open("INCAR", "r") as f:
            incar_content = f.read()
            print(incar_content)
        
        # Add I_CONSTRAINED_M = 1 to all INCAR files
        add_constrained_m_to_incar("INCAR")
        print("Added I_CONSTRAINED_M = 1 to INCAR")
        
        # Get magnetic moment size
        mag_size_input = input("Enter magnetic moment size (default 1): ").strip()
        if not mag_size_input:
            mag_size = 1.0
        else:
            mag_size = float(mag_size_input)
        
        # Create folder structure for all directions and set magnetic moments
        magmom_summary = {}
        detailed_magmom_info = {}
        
        for group in neighbor_groups:
            folder_name = group['folder_name']
            element = group['element']
            special_neighbor = group['special_neighbor']
            
            # Create main folder (if not exists)
            main_folder_path = os.path.join(original_dir, folder_name)
            os.makedirs(main_folder_path, exist_ok=True)
            
            # Copy input files to main folder
            for file in ["INCAR", "KPOINTS", "POTCAR"]:
                if os.path.exists(file):
                    shutil.copy2(file, main_folder_path)
            
            # Copy POSCAR to main folder
            shutil.copy2("POSCAR", main_folder_path)
            
            # Create folders for each direction
            for direction in ['x', 'y', 'z']:
                dir_path = os.path.join(main_folder_path, direction)
                os.makedirs(dir_path, exist_ok=True)
                
                # Create folders for each state
                for state in ['pp', 'nn', 'pn', 'np']:
                    state_path = os.path.join(dir_path, state)
                    os.makedirs(state_path, exist_ok=True)
                    
                    # Copy input files to state folder
                    for file in ["INCAR", "KPOINTS", "POTCAR"]:
                        if os.path.exists(file):
                            shutil.copy2(file, state_path)
                    
                    # Copy POSCAR to state folder
                    shutil.copy2("POSCAR", state_path)
                    
                    # Set magnetic moments
                    magmom_str, magmoms = get_magnetic_moments(
                        total_atoms, center_index, special_neighbor, center_element_indices, 
                        element, direction, state, mag_size
                    )
                    
                    # Update MAGMOM in INCAR
                    incar_path = os.path.join(state_path, "INCAR")
                    set_magmom_in_incar(incar_path, magmom_str)
                    
                    # Record magnetic moment settings
                    key = f"{folder_name}/{direction}/{state}"
                    magmom_summary[key] = magmom_str
                    
                    # Record detailed magnetic moment information for table
                    detailed_info = []
                    # Add center atom
                    detailed_info.append({
                        "Atom": atom_labels[center_index],
                        "Index": center_index + 1,
                        "Moment": format_moment([m/mag_size if mag_size != 0 else 0 for m in magmoms[center_index]]),
                        "Type": "Center"
                    })
                    
                    # Add special neighbor atom
                    detailed_info.append({
                        "Atom": atom_labels[special_neighbor],
                        "Index": special_neighbor + 1,
                        "Moment": format_moment([m/mag_size if mag_size != 0 else 0 for m in magmoms[special_neighbor]]),
                        "Type": "Special Neighbor"
                    })
                    
                    # Add other same element atoms
                    for idx in center_element_indices:
                        if idx != center_index and idx != special_neighbor:
                            detailed_info.append({
                                "Atom": atom_labels[idx],
                                "Index": idx + 1,
                                "Moment": format_moment([m/mag_size if mag_size != 0 else 0 for m in magmoms[idx]]),
                                "Type": "Environment"
                            })
                    
                    detailed_magmom_info[key] = detailed_info
        
        # Switch back to original directory
        os.chdir(original_dir)
        
        # Output detailed magnetic moment settings summary in table format
        print("\n" + "="*80)
        print("Detailed Magnetic Moment Settings Summary:")
        print("="*80)
        
        for key, info in detailed_magmom_info.items():
            print(f"\nConfiguration: {key}")
            table_data = []
            for item in info:
                table_data.append([item["Atom"], item["Index"], item["Moment"], item["Type"]])
            
            print(tabulate(table_data, headers=["Atom", "Index", "Moment", "Type"], tablefmt="grid"))
        
        # Output magnetic moment settings summary
        print("\n" + "="*50)
        print("Magnetic Moment Settings Summary:")
        print("="*50)
        
        for key, magmom in magmom_summary.items():
            print(f"\n{key}:")
            print(f"MAGMOM = {magmom}")
        
        # Check SOC settings
        print("\n" + "="*50)
        print("SOC settings check:")
        print("="*50)
        
        with open(os.path.join(temp_dir, "INCAR"), "r") as f:
            incar_content = f.read()
            if "LSORBIT" in incar_content and "= .TRUE." in incar_content:
                print("SOC is enabled (LSORBIT = .TRUE.)")
            else:
                print("WARNING: SOC is not enabled. DMI calculations require SOC.")
        
        print("\nAll steps completed successfully!")
        print(f"Generated {len(neighbor_groups)} neighbor folders with VASP input files.")
        print("Each neighbor folder contains x, y, z directions with pp, nn, pn, np states.")
        print("I_CONSTRAINED_M = 1 has been added to all INCAR files.")
                
    except ValueError as e:
        print(f"Invalid input: {e}")
    except Exception as e:
        print(f"An error occurred: {e}")
        import traceback
        traceback.print_exc()
if __name__ == "__main__":
    main()

运行示例

Enter supercell scaling factors (e.g., 3 3 1): Created TRANSMAT.in file with specified scaling factors
Running vaspkit for 400 module (supercell generation)...
vaspkit 400 module (supercell generation) executed successfully
Output:             \\\///         
           / _  _ \         Hey, you must know what you are doing.
         (| (o)(o) |)       Otherwise you might get wrong results.
 o-----.OOOo--()--oOOO.------------------------------------------o
 |         VASPKIT Standard Edition 1.5.1 (27 Jan. 2024)         |
 |         Lead Developer: Vei WANG (wangvei@icloud.com)         |
 |      Main Contributors: Gang TANG, Nan XU & Jin-Cheng LIU     |
 |  Online Tutorials Available on Website: https://vaspkit.com   |
 o-----.oooO-----------------------------------------------------o
        (   )   Oooo.                          VASPKIT Made Simple
         \ (    (   )     
          \_)    ) /      
                (_/       
 ===================== Structural Utilities ======================
 01) VASP Input-Files Generator    02) Mechanical Properties      
 03) K-Path for Band-Structure     04) Structure Editor           
 05) Catalysis-ElectroChem Kit     06) Symmetry Analysis          
 07) Materials Databases           08) Advanced Structure Models  
 ===================== Electronic Utilities ======================
 11) Density-of-States             21) Band-Structure             
 23) 3D Band-Structure             25) Hybrid-DFT Band-Structure  
 26) Fermi-Surface                 28) Band-Structure Unfolding   
 31) Charge-Density Analysis       42) Potential Analysis         
 44) Piezoelectric Properties      51) Wave-Function Analysis     
 62) Magnetic Analysis             65) Spin-Texture               
 68) Transport Properties                                         
 ======================== Misc Utilities =========================
 71) Optical Properties            72) Molecular-Dynamics Kit     
 74) User Interface                78) VASP2other Interface       
 84) ABACUS Interface              91) Semiconductor Kit          
 92) 2D-Material Kit               95) Phonon Analysis            
 0)  Quit                                                         
 ------------>>
 -->> (01) Reading TRANSMAT.in file
 -->> (02) Written SUPERCELL.vasp File.
 o---------------------------------------------------------------o
 |                       * ACKNOWLEDGMENTS *                     |
 | Other Contributors (in no particular order): Peng-Fei LIU,    |
 | Xue-Fei LIU, Dao-Xiong WU, Zhao-Fu ZHANG, Tian WANG, Qiang LI,|
 | Ya-Chao LIU, Jiang-Shan ZHAO, Qi-Jing ZHENG, Yue QIU and You! |
 | Advisors: Wen-Tong GENG, Yoshiyuki KAWAZOE                    |
 :) Any Suggestions for Improvement are Welcome and Appreciated (:
 |---------------------------------------------------------------|
 |                          * CITATIONS *                        |
 | When using VASPKIT in your research PLEASE cite the paper:    |
 | [1] V. WANG, N. XU, J.-C. LIU, G. TANG, W.-T. GENG, VASPKIT: A|
 | User-Friendly Interface Facilitating High-Throughput Computing|
 | and Analysis Using VASP Code, Computer Physics Communications |
 | 267, 108033, (2021), DOI: 10.1016/j.cpc.2021.108033           |
 o---------------------------------------------------------------o

Renamed SUPERCELL.vasp to POSCAR-sc

Atom information in supercell:
Ni: 9 atoms
Br: 18 atoms

Available atoms:
1: Ni001
2: Ni002
3: Ni003
4: Ni004
5: Ni005
6: Ni006
7: Ni007
8: Ni008
9: Ni009
10: Br001
11: Br002
12: Br003
13: Br004
14: Br005
15: Br006
16: Br007
17: Br008
18: Br009
19: Br010
20: Br011
21: Br012
22: Br013
23: Br014
24: Br015
25: Br016
26: Br017
27: Br018

Select center atom by index: Selected center atom: Ni001

Ni atoms grouped by distance from center:
Distance 3.7 ?: 3 atoms (special neighbor: Ni002)
Distance 7.3 ?: 3 atoms (special neighbor: Ni003)
Distance 6.3 ?: 2 atoms (special neighbor: Ni006)

==================================================
Step 3: Generating KPOINTS, POTCAR and INCAR files
==================================================

Please ensure that vaspkit is configured with the correct POTCAR path.
Press Enter to continue...Enter K-point precision (default 0.04, smaller value means higher precision, not recommended < 0.01): Running vaspkit for 102 module (KPOINTS and POTCAR generation)...
vaspkit 102 module (KPOINTS and POTCAR generation) executed successfully
Output:             \\\///         
           / _  _ \         Hey, you must know what you are doing.
         (| (o)(o) |)       Otherwise you might get wrong results.
 o-----.OOOo--()--oOOO.------------------------------------------o
 |         VASPKIT Standard Edition 1.5.1 (27 Jan. 2024)         |
 |         Lead Developer: Vei WANG (wangvei@icloud.com)         |
 |      Main Contributors: Gang TANG, Nan XU & Jin-Cheng LIU     |
 |  Online Tutorials Available on Website: https://vaspkit.com   |
 o-----.oooO-----------------------------------------------------o
        (   )   Oooo.                          VASPKIT Made Simple
         \ (    (   )     
          \_)    ) /      
                (_/       
 ===================== Structural Utilities ======================
 01) VASP Input-Files Generator    02) Mechanical Properties      
 03) K-Path for Band-Structure     04) Structure Editor           
 05) Catalysis-ElectroChem Kit     06) Symmetry Analysis          
 07) Materials Databases           08) Advanced Structure Models  
 ===================== Electronic Utilities ======================
 11) Density-of-States             21) Band-Structure             
 23) 3D Band-Structure             25) Hybrid-DFT Band-Structure  
 26) Fermi-Surface                 28) Band-Structure Unfolding   
 31) Charge-Density Analysis       42) Potential Analysis         
 44) Piezoelectric Properties      51) Wave-Function Analysis     
 62) Magnetic Analysis             65) Spin-Texture               
 68) Transport Properties                                         
 ======================== Misc Utilities =========================
 71) Optical Properties            72) Molecular-Dynamics Kit     
 74) User Interface                78) VASP2other Interface       
 84) ABACUS Interface              91) Semiconductor Kit          
 92) 2D-Material Kit               95) Phonon Analysis            
 0)  Quit                                                         
 ------------>>
 ======================== K-Mesh Scheme ==========================
 1) Monkhorst-Pack Scheme                                         
 2) Gamma Scheme                                                  
 3) Irreducible K-Points with Gamma Scheme                        
                                                                  
 0)   Quit                                                        
 9)   Back                                                        
 ------------->>
 +---------------------------- Tip ------------------------------+
   * Accuracy Levels: Gamma-Only: 0;              
                      Low: 0.06~0.04;             
                      Medium: 0.04~0.03;          
                      Fine: 0.02-0.01.            
   * 0.03-0.04 is Generally Precise Enough!       
 +---------------------------------------------------------------+
 Input the K-spacing value (in unit of 2*pi/Angstrom): 
 ------------>>
 +-------------------------- Summary ----------------------------+
 Reciprocal Lattice Vectors (in Units of 1/Angstrom):
       0.5713472553       0.3298674917       0.0000000000
       0.0000000000       0.6597349833       0.0000000000
       0.0000000000       0.0000000000       0.3204509563
 Reciprocal Lattice Constants:   0.6597   0.6597   0.3205
 Real-Space Lattice Constants:  10.9971  10.9971  19.6073
 Size of K-Mesh:    3    3    1
 +---------------------------------------------------------------+
 -->> (01) Written KPOINTS File.
 o---------------------------------------------------------------o
 |                       * ACKNOWLEDGMENTS *                     |
 | Other Contributors (in no particular order): Peng-Fei LIU,    |
 | Xue-Fei LIU, Dao-Xiong WU, Zhao-Fu ZHANG, Tian WANG, Qiang LI,|
 | Ya-Chao LIU, Jiang-Shan ZHAO, Qi-Jing ZHENG, Yue QIU and You! |
 | Advisors: Wen-Tong GENG, Yoshiyuki KAWAZOE                    |
 :) Any Suggestions for Improvement are Welcome and Appreciated (:
 |---------------------------------------------------------------|
 |                          * CITATIONS *                        |
 | When using VASPKIT in your research PLEASE cite the paper:    |
 | [1] V. WANG, N. XU, J.-C. LIU, G. TANG, W.-T. GENG, VASPKIT: A|
 | User-Friendly Interface Facilitating High-Throughput Computing|
 | and Analysis Using VASP Code, Computer Physics Communications |
 | 267, 108033, (2021), DOI: 10.1016/j.cpc.2021.108033           |
 o---------------------------------------------------------------o


Please select the type of calculation:
1. Standard (no U, no SOC)
2. With U (Hubbard U)
3. With SOC (Spin-Orbit Coupling)
4. With both U and SOC (recommended for DMI)
Enter your choice (1-4, default is 4 for DMI calculation): Running vaspkit for 101 module (INCAR generation with U and SOC)...
vaspkit 101 module (INCAR generation with U and SOC) executed successfully
Output:             \\\///         
           / _  _ \         Hey, you must know what you are doing.
         (| (o)(o) |)       Otherwise you might get wrong results.
 o-----.OOOo--()--oOOO.------------------------------------------o
 |         VASPKIT Standard Edition 1.5.1 (27 Jan. 2024)         |
 |         Lead Developer: Vei WANG (wangvei@icloud.com)         |
 |      Main Contributors: Gang TANG, Nan XU & Jin-Cheng LIU     |
 |  Online Tutorials Available on Website: https://vaspkit.com   |
 o-----.oooO-----------------------------------------------------o
        (   )   Oooo.                          VASPKIT Made Simple
         \ (    (   )     
          \_)    ) /      
                (_/       
 ===================== Structural Utilities ======================
 01) VASP Input-Files Generator    02) Mechanical Properties      
 03) K-Path for Band-Structure     04) Structure Editor           
 05) Catalysis-ElectroChem Kit     06) Symmetry Analysis          
 07) Materials Databases           08) Advanced Structure Models  
 ===================== Electronic Utilities ======================
 11) Density-of-States             21) Band-Structure             
 23) 3D Band-Structure             25) Hybrid-DFT Band-Structure  
 26) Fermi-Surface                 28) Band-Structure Unfolding   
 31) Charge-Density Analysis       42) Potential Analysis         
 44) Piezoelectric Properties      51) Wave-Function Analysis     
 62) Magnetic Analysis             65) Spin-Texture               
 68) Transport Properties                                         
 ======================== Misc Utilities =========================
 71) Optical Properties            72) Molecular-Dynamics Kit     
 74) User Interface                78) VASP2other Interface       
 84) ABACUS Interface              91) Semiconductor Kit          
 92) 2D-Material Kit               95) Phonon Analysis            
 0)  Quit                                                         
 ------------>>
 +---------------------------- Tip ------------------------------+
 |          WARNNING: You MUST know what wou are doing!          |   
 |Some Parameters in INCAR file need to be set/adjusted manually.|   
 +---------------------------------------------------------------+
 ======================== INCAR Options ==========================
 ST) Static-Calculation            SR) Standard Relaxation        
 MG) Magnetic Properties           SO) Spin-Orbit Coupling        
 D3) DFT-D3 no-damping Correction  H6) HSE06 Calculation          
 PU) DFT+U Calculation             MD) Molecular Dynamics         
 GW) GW0 Calculation               BS) BSE Calculation            
 DC) Elastic Constant              EL) ELF Calculation            
 BD) Bader Charge Analysis         OP) Optical Properties         
 EC) Static Dielectric Constant    PC) Decomposed Charge Density  
 PH) Phonon-Calculation            PY) Phonon with Phononpy       
 NE) Nudged Elastic Band (NEB)     DM) The Dimer Method           
 FQ) Frequence Calculation         LR) Lattice Relaxation         
 MT) Meta-GGA Calculation          PZ) Piezoelectric Calculation  
 
 0)   Quit                                                       
 9)   Back      
 ------------>>
 Input Key-Parameters (STH6D3 means HSE06-D3 Static-Calcualtion)
 -->> (01) Written INCAR file!
 o---------------------------------------------------------------o
 |                       * ACKNOWLEDGMENTS *                     |
 | Other Contributors (in no particular order): Peng-Fei LIU,    |
 | Xue-Fei LIU, Dao-Xiong WU, Zhao-Fu ZHANG, Tian WANG, Qiang LI,|
 | Ya-Chao LIU, Jiang-Shan ZHAO, Qi-Jing ZHENG, Yue QIU and You! |
 | Advisors: Wen-Tong GENG, Yoshiyuki KAWAZOE                    |
 :) Any Suggestions for Improvement are Welcome and Appreciated (:
 |---------------------------------------------------------------|
 |                          * CITATIONS *                        |
 | When using VASPKIT in your research PLEASE cite the paper:    |
 | [1] V. WANG, N. XU, J.-C. LIU, G. TANG, W.-T. GENG, VASPKIT: A|
 | User-Friendly Interface Facilitating High-Throughput Computing|
 | and Analysis Using VASP Code, Computer Physics Communications |
 | 267, 108033, (2021), DOI: 10.1016/j.cpc.2021.108033           |
 o---------------------------------------------------------------o


Please check and modify the U settings in the temporary directory if needed.
The U values generated by vaspkit might need adjustment.
Press Enter after you have confirmed the U settings...
Generated INCAR content:
Global Parameters
ISTART =  1            (Read existing wavefunction, if there)
ISPIN  =  1            (Non-Spin polarised DFT)
# ICHARG =  11         (Non-self-consistent: GGA/LDA band structures)
LREAL  = .FALSE.       (Projection operators: automatic)
# ENCUT  =  400        (Cut-off energy for plane wave basis set, in eV)
# PREC   =  Accurate   (Precision level: Normal or Accurate, set Accurate when perform structure lattice relaxation calculation)
LWAVE  = .TRUE.        (Write WAVECAR or not)
LCHARG = .TRUE.        (Write CHGCAR or not)
ADDGRID= .TRUE.        (Increase grid, helps GGA convergence)
LASPH  = .TRUE.        (Give more accurate total energies and band structure calculations)
PREC   = Accurate      (Accurate strictly avoids any aliasing or wrap around errors)
# LVTOT  = .TRUE.      (Write total electrostatic potential into LOCPOT or not)
# LVHAR  = .TRUE.      (Write ionic + Hartree electrostatic potential into LOCPOT or not)
# NELECT =             (No. of electrons: charged cells, be careful)
# LPLANE = .TRUE.      (Real space distribution, supercells)
# NWRITE = 2           (Medium-level output)
# KPAR   = 2           (Divides k-grid into separate groups)
# NGXF    = 300        (FFT grid mesh density for nice charge/potential plots)
# NGYF    = 300        (FFT grid mesh density for nice charge/potential plots)
# NGZF    = 300        (FFT grid mesh density for nice charge/potential plots)
 
Static Calculation
ISMEAR =  0            (gaussian smearing method)
SIGMA  =  0.05         (please check the width of the smearing)
LORBIT =  11           (PAW radii for projected DOS)
NEDOS  =  2001         (DOSCAR points)
NELM   =  60           (Max electronic SCF steps)
EDIFF  =  1E-08        (SCF energy convergence, in eV)
 
Collinear Magnetic Calculation
ISPIN      =  2        (Spin polarised DFT)
# MAGMOM   =           (Set this parameters manually)
LASPH      = .TRUE.    (Non-spherical elements, d/f convergence)
GGA_COMPAT = .FALSE.   (Apply spherical cutoff on gradient field)
VOSKOWN    =  1        (Enhances the magnetic moments and the magnetic energies)
LMAXMIX    =  4        (For d elements increase LMAXMIX to 4, f: LMAXMIX = 6)
# AMIX       =  0.2    (Mixing parameter to control SCF convergence)
# BMIX       =  0.0001 (Mixing parameter to control SCF convergence)
# AMIX_MAG   =  0.4    (Mixing parameter to control SCF convergence)
# BMIX_MAG   =  0.0001 (Mixing parameter to control SCF convergence)
 
DFT+U Calculation
LDAU    = .TRUE.        (Activate DFT+U)
LDAUTYPE=  2            (Dudarev, only U-J matters)
LDAUL   =  2 -1         (Orbitals for each species)
LDAUU   =  2  0         (U for each species)
LDAUJ   =  0  0         (J for each species)
LMAXMIX =  4            (Mixing cut-off, 4-d, 6-f)
 
Spin-Orbit Coupling Calculation
LSORBIT    = .TRUE.    (Activate SOC)
GGA_COMPAT = .FALSE.   (Apply spherical cutoff on gradient field)
VOSKOWN    =  1        (Enhances the magnetic moments and the magnetic energies)
LMAXMIX    =  4        (For d elements increase LMAXMIX to 4, f: LMAXMIX = 6)
ISYM       =  -1       (Switch symmetry off)
# SAXIS    =  0 0 1    (Direction of the magnetic field)
# MAGMOM   =  0 0 3    (Set this parameters manually, Local magnetic moment parallel to SAXIS, 3*NIONS*1.0 for non-collinear magnetic systems)
# NBANDS   =           (Set this parameters manually, 2 * number of bands of collinear-run)
 

Added I_CONSTRAINED_M = 1 to INCAR
Enter magnetic moment size (default 1): 
================================================================================
Detailed Magnetic Moment Settings Summary:
================================================================================

Configuration: Ni_3.7/x/pp
+--------+---------+----------+------------------+
| Atom   |   Index | Moment   | Type             |
+========+=========+==========+==================+
| Ni001  |       1 | +Y       | Center           |
+--------+---------+----------+------------------+
| Ni002  |       2 | +Z       | Special Neighbor |
+--------+---------+----------+------------------+
| Ni003  |       3 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni004  |       4 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni005  |       5 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni006  |       6 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni007  |       7 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni008  |       8 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni009  |       9 | +X       | Environment      |
+--------+---------+----------+------------------+

Configuration: Ni_3.7/x/nn
+--------+---------+----------+------------------+
| Atom   |   Index | Moment   | Type             |
+========+=========+==========+==================+
| Ni001  |       1 | -Y       | Center           |
+--------+---------+----------+------------------+
| Ni002  |       2 | -Z       | Special Neighbor |
+--------+---------+----------+------------------+
| Ni003  |       3 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni004  |       4 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni005  |       5 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni006  |       6 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni007  |       7 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni008  |       8 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni009  |       9 | +X       | Environment      |
+--------+---------+----------+------------------+

Configuration: Ni_3.7/x/pn
+--------+---------+----------+------------------+
| Atom   |   Index | Moment   | Type             |
+========+=========+==========+==================+
| Ni001  |       1 | +Y       | Center           |
+--------+---------+----------+------------------+
| Ni002  |       2 | -Z       | Special Neighbor |
+--------+---------+----------+------------------+
| Ni003  |       3 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni004  |       4 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni005  |       5 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni006  |       6 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni007  |       7 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni008  |       8 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni009  |       9 | +X       | Environment      |
+--------+---------+----------+------------------+

Configuration: Ni_3.7/x/np
+--------+---------+----------+------------------+
| Atom   |   Index | Moment   | Type             |
+========+=========+==========+==================+
| Ni001  |       1 | -Y       | Center           |
+--------+---------+----------+------------------+
| Ni002  |       2 | +Z       | Special Neighbor |
+--------+---------+----------+------------------+
| Ni003  |       3 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni004  |       4 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni005  |       5 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni006  |       6 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni007  |       7 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni008  |       8 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni009  |       9 | +X       | Environment      |
+--------+---------+----------+------------------+

Configuration: Ni_3.7/y/pp
+--------+---------+----------+------------------+
| Atom   |   Index | Moment   | Type             |
+========+=========+==========+==================+
| Ni001  |       1 | +Z       | Center           |
+--------+---------+----------+------------------+
| Ni002  |       2 | +X       | Special Neighbor |
+--------+---------+----------+------------------+
| Ni003  |       3 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni004  |       4 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni005  |       5 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni006  |       6 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni007  |       7 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni008  |       8 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni009  |       9 | +Y       | Environment      |
+--------+---------+----------+------------------+

Configuration: Ni_3.7/y/nn
+--------+---------+----------+------------------+
| Atom   |   Index | Moment   | Type             |
+========+=========+==========+==================+
| Ni001  |       1 | -Z       | Center           |
+--------+---------+----------+------------------+
| Ni002  |       2 | -X       | Special Neighbor |
+--------+---------+----------+------------------+
| Ni003  |       3 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni004  |       4 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni005  |       5 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni006  |       6 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni007  |       7 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni008  |       8 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni009  |       9 | +Y       | Environment      |
+--------+---------+----------+------------------+

Configuration: Ni_3.7/y/pn
+--------+---------+----------+------------------+
| Atom   |   Index | Moment   | Type             |
+========+=========+==========+==================+
| Ni001  |       1 | +Z       | Center           |
+--------+---------+----------+------------------+
| Ni002  |       2 | -X       | Special Neighbor |
+--------+---------+----------+------------------+
| Ni003  |       3 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni004  |       4 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni005  |       5 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni006  |       6 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni007  |       7 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni008  |       8 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni009  |       9 | +Y       | Environment      |
+--------+---------+----------+------------------+

Configuration: Ni_3.7/y/np
+--------+---------+----------+------------------+
| Atom   |   Index | Moment   | Type             |
+========+=========+==========+==================+
| Ni001  |       1 | -Z       | Center           |
+--------+---------+----------+------------------+
| Ni002  |       2 | +X       | Special Neighbor |
+--------+---------+----------+------------------+
| Ni003  |       3 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni004  |       4 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni005  |       5 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni006  |       6 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni007  |       7 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni008  |       8 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni009  |       9 | +Y       | Environment      |
+--------+---------+----------+------------------+

Configuration: Ni_3.7/z/pp
+--------+---------+----------+------------------+
| Atom   |   Index | Moment   | Type             |
+========+=========+==========+==================+
| Ni001  |       1 | +X       | Center           |
+--------+---------+----------+------------------+
| Ni002  |       2 | +Y       | Special Neighbor |
+--------+---------+----------+------------------+
| Ni003  |       3 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni004  |       4 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni005  |       5 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni006  |       6 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni007  |       7 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni008  |       8 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni009  |       9 | +Z       | Environment      |
+--------+---------+----------+------------------+

Configuration: Ni_3.7/z/nn
+--------+---------+----------+------------------+
| Atom   |   Index | Moment   | Type             |
+========+=========+==========+==================+
| Ni001  |       1 | -X       | Center           |
+--------+---------+----------+------------------+
| Ni002  |       2 | -Y       | Special Neighbor |
+--------+---------+----------+------------------+
| Ni003  |       3 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni004  |       4 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni005  |       5 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni006  |       6 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni007  |       7 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni008  |       8 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni009  |       9 | +Z       | Environment      |
+--------+---------+----------+------------------+

Configuration: Ni_3.7/z/pn
+--------+---------+----------+------------------+
| Atom   |   Index | Moment   | Type             |
+========+=========+==========+==================+
| Ni001  |       1 | +X       | Center           |
+--------+---------+----------+------------------+
| Ni002  |       2 | -Y       | Special Neighbor |
+--------+---------+----------+------------------+
| Ni003  |       3 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni004  |       4 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni005  |       5 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni006  |       6 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni007  |       7 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni008  |       8 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni009  |       9 | +Z       | Environment      |
+--------+---------+----------+------------------+

Configuration: Ni_3.7/z/np
+--------+---------+----------+------------------+
| Atom   |   Index | Moment   | Type             |
+========+=========+==========+==================+
| Ni001  |       1 | -X       | Center           |
+--------+---------+----------+------------------+
| Ni002  |       2 | +Y       | Special Neighbor |
+--------+---------+----------+------------------+
| Ni003  |       3 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni004  |       4 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni005  |       5 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni006  |       6 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni007  |       7 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni008  |       8 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni009  |       9 | +Z       | Environment      |
+--------+---------+----------+------------------+

Configuration: Ni_7.3/x/pp
+--------+---------+----------+------------------+
| Atom   |   Index | Moment   | Type             |
+========+=========+==========+==================+
| Ni001  |       1 | +Y       | Center           |
+--------+---------+----------+------------------+
| Ni003  |       3 | +Z       | Special Neighbor |
+--------+---------+----------+------------------+
| Ni002  |       2 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni004  |       4 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni005  |       5 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni006  |       6 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni007  |       7 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni008  |       8 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni009  |       9 | +X       | Environment      |
+--------+---------+----------+------------------+

Configuration: Ni_7.3/x/nn
+--------+---------+----------+------------------+
| Atom   |   Index | Moment   | Type             |
+========+=========+==========+==================+
| Ni001  |       1 | -Y       | Center           |
+--------+---------+----------+------------------+
| Ni003  |       3 | -Z       | Special Neighbor |
+--------+---------+----------+------------------+
| Ni002  |       2 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni004  |       4 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni005  |       5 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni006  |       6 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni007  |       7 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni008  |       8 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni009  |       9 | +X       | Environment      |
+--------+---------+----------+------------------+

Configuration: Ni_7.3/x/pn
+--------+---------+----------+------------------+
| Atom   |   Index | Moment   | Type             |
+========+=========+==========+==================+
| Ni001  |       1 | +Y       | Center           |
+--------+---------+----------+------------------+
| Ni003  |       3 | -Z       | Special Neighbor |
+--------+---------+----------+------------------+
| Ni002  |       2 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni004  |       4 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni005  |       5 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni006  |       6 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni007  |       7 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni008  |       8 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni009  |       9 | +X       | Environment      |
+--------+---------+----------+------------------+

Configuration: Ni_7.3/x/np
+--------+---------+----------+------------------+
| Atom   |   Index | Moment   | Type             |
+========+=========+==========+==================+
| Ni001  |       1 | -Y       | Center           |
+--------+---------+----------+------------------+
| Ni003  |       3 | +Z       | Special Neighbor |
+--------+---------+----------+------------------+
| Ni002  |       2 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni004  |       4 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni005  |       5 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni006  |       6 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni007  |       7 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni008  |       8 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni009  |       9 | +X       | Environment      |
+--------+---------+----------+------------------+

Configuration: Ni_7.3/y/pp
+--------+---------+----------+------------------+
| Atom   |   Index | Moment   | Type             |
+========+=========+==========+==================+
| Ni001  |       1 | +Z       | Center           |
+--------+---------+----------+------------------+
| Ni003  |       3 | +X       | Special Neighbor |
+--------+---------+----------+------------------+
| Ni002  |       2 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni004  |       4 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni005  |       5 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni006  |       6 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni007  |       7 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni008  |       8 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni009  |       9 | +Y       | Environment      |
+--------+---------+----------+------------------+

Configuration: Ni_7.3/y/nn
+--------+---------+----------+------------------+
| Atom   |   Index | Moment   | Type             |
+========+=========+==========+==================+
| Ni001  |       1 | -Z       | Center           |
+--------+---------+----------+------------------+
| Ni003  |       3 | -X       | Special Neighbor |
+--------+---------+----------+------------------+
| Ni002  |       2 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni004  |       4 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni005  |       5 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni006  |       6 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni007  |       7 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni008  |       8 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni009  |       9 | +Y       | Environment      |
+--------+---------+----------+------------------+

Configuration: Ni_7.3/y/pn
+--------+---------+----------+------------------+
| Atom   |   Index | Moment   | Type             |
+========+=========+==========+==================+
| Ni001  |       1 | +Z       | Center           |
+--------+---------+----------+------------------+
| Ni003  |       3 | -X       | Special Neighbor |
+--------+---------+----------+------------------+
| Ni002  |       2 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni004  |       4 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni005  |       5 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni006  |       6 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni007  |       7 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni008  |       8 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni009  |       9 | +Y       | Environment      |
+--------+---------+----------+------------------+

Configuration: Ni_7.3/y/np
+--------+---------+----------+------------------+
| Atom   |   Index | Moment   | Type             |
+========+=========+==========+==================+
| Ni001  |       1 | -Z       | Center           |
+--------+---------+----------+------------------+
| Ni003  |       3 | +X       | Special Neighbor |
+--------+---------+----------+------------------+
| Ni002  |       2 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni004  |       4 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni005  |       5 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni006  |       6 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni007  |       7 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni008  |       8 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni009  |       9 | +Y       | Environment      |
+--------+---------+----------+------------------+

Configuration: Ni_7.3/z/pp
+--------+---------+----------+------------------+
| Atom   |   Index | Moment   | Type             |
+========+=========+==========+==================+
| Ni001  |       1 | +X       | Center           |
+--------+---------+----------+------------------+
| Ni003  |       3 | +Y       | Special Neighbor |
+--------+---------+----------+------------------+
| Ni002  |       2 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni004  |       4 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni005  |       5 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni006  |       6 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni007  |       7 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni008  |       8 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni009  |       9 | +Z       | Environment      |
+--------+---------+----------+------------------+

Configuration: Ni_7.3/z/nn
+--------+---------+----------+------------------+
| Atom   |   Index | Moment   | Type             |
+========+=========+==========+==================+
| Ni001  |       1 | -X       | Center           |
+--------+---------+----------+------------------+
| Ni003  |       3 | -Y       | Special Neighbor |
+--------+---------+----------+------------------+
| Ni002  |       2 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni004  |       4 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni005  |       5 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni006  |       6 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni007  |       7 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni008  |       8 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni009  |       9 | +Z       | Environment      |
+--------+---------+----------+------------------+

Configuration: Ni_7.3/z/pn
+--------+---------+----------+------------------+
| Atom   |   Index | Moment   | Type             |
+========+=========+==========+==================+
| Ni001  |       1 | +X       | Center           |
+--------+---------+----------+------------------+
| Ni003  |       3 | -Y       | Special Neighbor |
+--------+---------+----------+------------------+
| Ni002  |       2 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni004  |       4 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni005  |       5 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni006  |       6 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni007  |       7 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni008  |       8 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni009  |       9 | +Z       | Environment      |
+--------+---------+----------+------------------+

Configuration: Ni_7.3/z/np
+--------+---------+----------+------------------+
| Atom   |   Index | Moment   | Type             |
+========+=========+==========+==================+
| Ni001  |       1 | -X       | Center           |
+--------+---------+----------+------------------+
| Ni003  |       3 | +Y       | Special Neighbor |
+--------+---------+----------+------------------+
| Ni002  |       2 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni004  |       4 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni005  |       5 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni006  |       6 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni007  |       7 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni008  |       8 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni009  |       9 | +Z       | Environment      |
+--------+---------+----------+------------------+

Configuration: Ni_6.3/x/pp
+--------+---------+----------+------------------+
| Atom   |   Index | Moment   | Type             |
+========+=========+==========+==================+
| Ni001  |       1 | +Y       | Center           |
+--------+---------+----------+------------------+
| Ni006  |       6 | +Z       | Special Neighbor |
+--------+---------+----------+------------------+
| Ni002  |       2 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni003  |       3 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni004  |       4 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni005  |       5 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni007  |       7 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni008  |       8 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni009  |       9 | +X       | Environment      |
+--------+---------+----------+------------------+

Configuration: Ni_6.3/x/nn
+--------+---------+----------+------------------+
| Atom   |   Index | Moment   | Type             |
+========+=========+==========+==================+
| Ni001  |       1 | -Y       | Center           |
+--------+---------+----------+------------------+
| Ni006  |       6 | -Z       | Special Neighbor |
+--------+---------+----------+------------------+
| Ni002  |       2 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni003  |       3 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni004  |       4 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni005  |       5 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni007  |       7 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni008  |       8 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni009  |       9 | +X       | Environment      |
+--------+---------+----------+------------------+

Configuration: Ni_6.3/x/pn
+--------+---------+----------+------------------+
| Atom   |   Index | Moment   | Type             |
+========+=========+==========+==================+
| Ni001  |       1 | +Y       | Center           |
+--------+---------+----------+------------------+
| Ni006  |       6 | -Z       | Special Neighbor |
+--------+---------+----------+------------------+
| Ni002  |       2 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni003  |       3 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni004  |       4 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni005  |       5 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni007  |       7 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni008  |       8 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni009  |       9 | +X       | Environment      |
+--------+---------+----------+------------------+

Configuration: Ni_6.3/x/np
+--------+---------+----------+------------------+
| Atom   |   Index | Moment   | Type             |
+========+=========+==========+==================+
| Ni001  |       1 | -Y       | Center           |
+--------+---------+----------+------------------+
| Ni006  |       6 | +Z       | Special Neighbor |
+--------+---------+----------+------------------+
| Ni002  |       2 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni003  |       3 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni004  |       4 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni005  |       5 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni007  |       7 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni008  |       8 | +X       | Environment      |
+--------+---------+----------+------------------+
| Ni009  |       9 | +X       | Environment      |
+--------+---------+----------+------------------+

Configuration: Ni_6.3/y/pp
+--------+---------+----------+------------------+
| Atom   |   Index | Moment   | Type             |
+========+=========+==========+==================+
| Ni001  |       1 | +Z       | Center           |
+--------+---------+----------+------------------+
| Ni006  |       6 | +X       | Special Neighbor |
+--------+---------+----------+------------------+
| Ni002  |       2 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni003  |       3 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni004  |       4 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni005  |       5 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni007  |       7 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni008  |       8 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni009  |       9 | +Y       | Environment      |
+--------+---------+----------+------------------+

Configuration: Ni_6.3/y/nn
+--------+---------+----------+------------------+
| Atom   |   Index | Moment   | Type             |
+========+=========+==========+==================+
| Ni001  |       1 | -Z       | Center           |
+--------+---------+----------+------------------+
| Ni006  |       6 | -X       | Special Neighbor |
+--------+---------+----------+------------------+
| Ni002  |       2 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni003  |       3 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni004  |       4 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni005  |       5 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni007  |       7 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni008  |       8 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni009  |       9 | +Y       | Environment      |
+--------+---------+----------+------------------+

Configuration: Ni_6.3/y/pn
+--------+---------+----------+------------------+
| Atom   |   Index | Moment   | Type             |
+========+=========+==========+==================+
| Ni001  |       1 | +Z       | Center           |
+--------+---------+----------+------------------+
| Ni006  |       6 | -X       | Special Neighbor |
+--------+---------+----------+------------------+
| Ni002  |       2 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni003  |       3 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni004  |       4 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni005  |       5 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni007  |       7 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni008  |       8 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni009  |       9 | +Y       | Environment      |
+--------+---------+----------+------------------+

Configuration: Ni_6.3/y/np
+--------+---------+----------+------------------+
| Atom   |   Index | Moment   | Type             |
+========+=========+==========+==================+
| Ni001  |       1 | -Z       | Center           |
+--------+---------+----------+------------------+
| Ni006  |       6 | +X       | Special Neighbor |
+--------+---------+----------+------------------+
| Ni002  |       2 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni003  |       3 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni004  |       4 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni005  |       5 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni007  |       7 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni008  |       8 | +Y       | Environment      |
+--------+---------+----------+------------------+
| Ni009  |       9 | +Y       | Environment      |
+--------+---------+----------+------------------+

Configuration: Ni_6.3/z/pp
+--------+---------+----------+------------------+
| Atom   |   Index | Moment   | Type             |
+========+=========+==========+==================+
| Ni001  |       1 | +X       | Center           |
+--------+---------+----------+------------------+
| Ni006  |       6 | +Y       | Special Neighbor |
+--------+---------+----------+------------------+
| Ni002  |       2 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni003  |       3 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni004  |       4 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni005  |       5 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni007  |       7 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni008  |       8 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni009  |       9 | +Z       | Environment      |
+--------+---------+----------+------------------+

Configuration: Ni_6.3/z/nn
+--------+---------+----------+------------------+
| Atom   |   Index | Moment   | Type             |
+========+=========+==========+==================+
| Ni001  |       1 | -X       | Center           |
+--------+---------+----------+------------------+
| Ni006  |       6 | -Y       | Special Neighbor |
+--------+---------+----------+------------------+
| Ni002  |       2 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni003  |       3 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni004  |       4 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni005  |       5 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni007  |       7 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni008  |       8 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni009  |       9 | +Z       | Environment      |
+--------+---------+----------+------------------+

Configuration: Ni_6.3/z/pn
+--------+---------+----------+------------------+
| Atom   |   Index | Moment   | Type             |
+========+=========+==========+==================+
| Ni001  |       1 | +X       | Center           |
+--------+---------+----------+------------------+
| Ni006  |       6 | -Y       | Special Neighbor |
+--------+---------+----------+------------------+
| Ni002  |       2 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni003  |       3 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni004  |       4 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni005  |       5 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni007  |       7 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni008  |       8 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni009  |       9 | +Z       | Environment      |
+--------+---------+----------+------------------+

Configuration: Ni_6.3/z/np
+--------+---------+----------+------------------+
| Atom   |   Index | Moment   | Type             |
+========+=========+==========+==================+
| Ni001  |       1 | -X       | Center           |
+--------+---------+----------+------------------+
| Ni006  |       6 | +Y       | Special Neighbor |
+--------+---------+----------+------------------+
| Ni002  |       2 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni003  |       3 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni004  |       4 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni005  |       5 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni007  |       7 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni008  |       8 | +Z       | Environment      |
+--------+---------+----------+------------------+
| Ni009  |       9 | +Z       | Environment      |
+--------+---------+----------+------------------+

==================================================
Magnetic Moment Settings Summary:
==================================================

Ni_3.7/x/pp:
MAGMOM = 0 1.0 0 0 0 1.0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ni_3.7/x/nn:
MAGMOM = 0 -1.0 0 0 0 -1.0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ni_3.7/x/pn:
MAGMOM = 0 1.0 0 0 0 -1.0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ni_3.7/x/np:
MAGMOM = 0 -1.0 0 0 0 1.0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ni_3.7/y/pp:
MAGMOM = 0 0 1.0 1.0 0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ni_3.7/y/nn:
MAGMOM = 0 0 -1.0 -1.0 0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ni_3.7/y/pn:
MAGMOM = 0 0 1.0 -1.0 0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ni_3.7/y/np:
MAGMOM = 0 0 -1.0 1.0 0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ni_3.7/z/pp:
MAGMOM = 1.0 0 0 0 1.0 0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ni_3.7/z/nn:
MAGMOM = -1.0 0 0 0 -1.0 0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ni_3.7/z/pn:
MAGMOM = 1.0 0 0 0 -1.0 0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ni_3.7/z/np:
MAGMOM = -1.0 0 0 0 1.0 0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ni_7.3/x/pp:
MAGMOM = 0 1.0 0 1.0 0 0 0 0 1.0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ni_7.3/x/nn:
MAGMOM = 0 -1.0 0 1.0 0 0 0 0 -1.0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ni_7.3/x/pn:
MAGMOM = 0 1.0 0 1.0 0 0 0 0 -1.0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ni_7.3/x/np:
MAGMOM = 0 -1.0 0 1.0 0 0 0 0 1.0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ni_7.3/y/pp:
MAGMOM = 0 0 1.0 0 1.0 0 1.0 0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ni_7.3/y/nn:
MAGMOM = 0 0 -1.0 0 1.0 0 -1.0 0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ni_7.3/y/pn:
MAGMOM = 0 0 1.0 0 1.0 0 -1.0 0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ni_7.3/y/np:
MAGMOM = 0 0 -1.0 0 1.0 0 1.0 0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ni_7.3/z/pp:
MAGMOM = 1.0 0 0 0 0 1.0 0 1.0 0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ni_7.3/z/nn:
MAGMOM = -1.0 0 0 0 0 1.0 0 -1.0 0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ni_7.3/z/pn:
MAGMOM = 1.0 0 0 0 0 1.0 0 -1.0 0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ni_7.3/z/np:
MAGMOM = -1.0 0 0 0 0 1.0 0 1.0 0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ni_6.3/x/pp:
MAGMOM = 0 1.0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 1.0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ni_6.3/x/nn:
MAGMOM = 0 -1.0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 -1.0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ni_6.3/x/pn:
MAGMOM = 0 1.0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 -1.0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ni_6.3/x/np:
MAGMOM = 0 -1.0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 1.0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ni_6.3/y/pp:
MAGMOM = 0 0 1.0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 1.0 0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ni_6.3/y/nn:
MAGMOM = 0 0 -1.0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 -1.0 0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ni_6.3/y/pn:
MAGMOM = 0 0 1.0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 -1.0 0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ni_6.3/y/np:
MAGMOM = 0 0 -1.0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 1.0 0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ni_6.3/z/pp:
MAGMOM = 1.0 0 0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 1.0 0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ni_6.3/z/nn:
MAGMOM = -1.0 0 0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 -1.0 0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ni_6.3/z/pn:
MAGMOM = 1.0 0 0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 -1.0 0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ni_6.3/z/np:
MAGMOM = -1.0 0 0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 1.0 0 1.0 0 0 0 1.0 0 0 1.0 0 0 1.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

==================================================
SOC settings check:
==================================================
SOC is enabled (LSORBIT = .TRUE.)

All steps completed successfully!
Generated 3 neighbor folders with VASP input files.
Each neighbor folder contains x, y, z directions with pp, nn, pn, np states.
I_CONSTRAINED_M = 1 has been added to all INCAR files.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值