/**
 * @brief Functions for making TMDC primitive cells.
 *
 * @author Yunhai Li (liyunhai1016@hotmail.com)
 *
 * @copyright Copyright (c) 2024, TBPLaS develop team.
 *
 * @note Functions are converted from Python version by calling print_cxx().
 */

#ifndef TBPLAS_MATERIALS_XS2_H
#define TBPLAS_MATERIALS_XS2_H

#include "base/datatypes.h"
#include "builder/primitive.h"

namespace tbplas::materials {
using tbplas::base::complex_t;
using tbplas::builder::PrimitiveCell;

/**
 * @brief Make TMDC primitive cell.
 * 
 * @param[in] material chemical label of material, should be in 
 * {"MoS2", "MoSe2", "WS2", "WSe2"}
 * @return TMDC primitive cell
 */
[[nodiscard]] PrimitiveCell<complex_t>
make_tmdc(const std::string& material = "MoS2");

/**
 * @brief Make MoS2 primitive cell with SOC.
 * 
 * @return MoS2 primitive cell
 */
[[nodiscard]] PrimitiveCell<complex_t>
make_mos2_soc();

} // namespace tbplas::materials

#endif