parser=argparse.ArgumentParser(description='Computational Molecular & Material Design Interface')
# Input Geometri, tanpa ini perhitungan tidak akan berjalan.
parser.add_argument('-i','--input',type=str,default='geom.xyz',help='Input geometri dalam koordinat Cartesian')
parser.add_argument('-cons','--constraints',type=str,default='None',help='Membekukan ikatan, sudut ikatan, dan sebagainya selama proses optimasi geometri. Periksa manual Orca 5.0 lebih lanjut mengenai ini.')
# Informasi muatan dan multiplisitas spin molekul.
parser.add_argument('-m','--method',type=str,default='XTB2',help='Metode yang digunakan dalam perhitungan. Pilihan: XTB, XTB2, DFTB, DFTB2, DFTB3-diag, dan sebagainya.')
# Input yang berkaitan dengan perhitungan frekuensi menggunakan software Orca
parser.add_argument('-sfreq','--scalefreq',type=float,default=1,help='Faktor skala frekuensi yang digunakan.')
# Input yang berkaitan dengan perhitungan menggunakan software DCDFTBMD
parser.add_argument('-disp','--dispersion',type=str,default='None',help='Model koreksi dispersi jika menggunakan software DCDFTB. Pilihan: None, D3, D3BJ, D3H5.')
parser.add_argument('-para','--parapath',type=str,default='/home/adit/opt/dftbplus-21.2/external/slakos/origin/3ob-3-1',help='Lokasi folder berisikan himpunan parameter DFTB yang akan digunakan.')
parser.add_argument('-ens','--ensembel',type=str,default='NVE',help='Ensembel yang digunakan dalam simulasi dinamika molekul. Pilihan: NVE, NVT, dan NPT.')
parser.add_argument('-tstat','--thermostat',type=str,default='andersen',help='Termostat yang digunakan dalam simulasi NVT. Pilihan: andersen,berendsen,dan nose')
parser.add_argument('-t','--temp',type=str,default='298.15',help='Suhu yang digunakan dalam perhitungan frekuensi maupun simulasi MD dan perhitungan frekuensi dalam satuan Kelvin.')
# Input yang berkaitan dengan penyiapan sistem larutan
parser.add_argument('-mt','--terlarut',type=str,help='Nama file molekul terlarut dalam format .xyz (ditulis tanpa ekstensi).')
parser.add_argument('-ct','--c_terlarut',type=str,help='Muatan bersih molekul terlarut.',default=0)
parser.add_argument('-pt','--persen_terlarut',type=str,default=50,help='Persen massa terlarut. Jika lebih dari satu terlarut, pisahkan dengan koma.')
parser.add_argument('-pp','--persen_pelarut',type=str,default=50,help='Persen massa pelarut. Default:50')
parser.add_argument('-l','--lapang',type=float,default=5,help='Panjang tambahan (Angstrom) pada rusuk kubus untuk menghindari bad contact. Default: 10.0.')
parser.add_argument('-gen','--generate_dftbinp',type=str,default='false',help='Apakah ingin mengkonversi ke dalam format koordinat xyz?')
parser.add_argument('-mp','--pelarut',type=str,help='Nama file molekul pelarut dalam format .xyz (ditulis tanpa ekstensi).')
parser.add_argument('-nequil','--nequil',type=int,default=50000,help='Jumlah step pada saat ekuilibrasi.')
parser.add_argument('-traj','--traject',type=str,default='../NVT/traject',help='File trayektori dari simulasi sebelumnya')
parser.add_argument('-vel','--velocity',type=str,default='../NVT/velocity',help='File kecepatan atom dari simulasi sebelumnya')
parser.add_argument('-inp','--dftbinp',type=str,default='../NVT/dftb.inp',help='File dftb.inp dari simulasi sebelumnya.')
# Opsi untuk dinding potensial virtual
parser.add_argument('-soft','--soft',type=str,default='false',help='Apakah dinding potensial akan digunakan?. Pilihan: true, false.')
parser.add_argument('-softtype','--softtype',type=str,default='SPHERE',help='Jenis dinding apakah yang akan anda pakai? Baca lebih lanjut manual DCDFTBMD.')
parser.add_argument('-softrange','--softrange',type=float,default=10,help='Ukuran dinding potensial yang anda gunakan. Default = 10 angstrom')
parser.add_argument('-softcenter','--softcenter',type=str,default='COM',help='Jenis pusat koordinat dinding potensial. Default = COM')
parser.add_argument('-metarest','--metarest',type=str,default='false',help='Apakah dilakukan restart simulasi metadinamika?. Pilihan: true, false.')
parser.add_argument('-metafreq','--metafreq',type=int,default=100,help='Dalam berapa step sekali potensial Gaussian ditambahkan?')
parser.add_argument('-metaheight','--metaheight',type=float,default=3.0e-3,help='Ketinggian potensial Gaussian dalam satuan Hartree. Default = 3.0e-3')
parser.add_argument('-metawidth','--metawidth',type=float,default=0.1,help='Lebar potensial Gaussian yang digunakan (dalam satuan yang sama dengan satuan cv). Default = 0.1')
parser.add_argument('-pow1','--pow1',type=float,default=6,help='Nilai pangkat pertama pada definisi bilangan koordinasi rasional. Default = 6')
parser.add_argument('-pow2','--pow2',type=float,default=12,help='Nilai pangkat kedua pada definisi bilangan koordinasi rasional. Default = 12')
parser.add_argument('-rcut','--rcut',type=float,default=1.6,help='Jarak cutoff pada definisi bilangan koordinasi dalam satuan angstrom. Default = 1.6')
parser.add_argument('-ag1','--ag1',type=str,help='Grup atom pertama dalam sebuah CV.')
parser.add_argument('-ag2','--ag2',type=str,help='Grup atom kedua dalam sebuah CV.')
parser.add_argument('-ag3','--ag3',type=str,help='Grup atom ketiga dalam sebuah CV.')
parser.add_argument('-ag4','--ag4',type=str,help='Grup atom keempat dalam sebuah CV.')
# Input terkait DC setup
parser.add_argument('-bufrad','--bufrad',type=float,default=3.0,help='Radius buffer yang digunakan dalam sebuah subsistem. Default: 3.0')
parser.add_argument('-delta','--delta',type=float,default=3.0,help='Panjang rusuk kubus virual yang dibuat untuk membelah-belah subsistem. Default: 3.0')
parser.add_argument('-opttype','--opttype',type=str,default='bfgs',help='Jenis algoritma optimasi geometri yang digunakan dalam program DFTBUP maupun DCDFTBMD. Default: bfgs. Pilihan: sd, cg, qm, fire.')
parser.add_argument('-freqtype','--freqtype',type=int,default=1,help='Jenis perhitungan frekuensi vibrasi yang dilakukan, analitik (1) atau numerik (2). Default: 1, pilihan: 2.')
parser.add_argument('-alp','--alp',type=float,default=1.2,help='Lebar potensial Gaussian dalam satuan Angstrom. Default: 1.2 Angstrom.')
# Scanning geometri menggunkaan xTB standalone
parser.add_argument('-dist','--distance',type=str,default='None',help='Jarak antara dua buah atom dalam format: Serial1,Serial2,Jarak. Contoh: 4,1,1.5.')
parser.add_argument('-ang','--angle',type=str,default='None',help='Sudut antara tiga buah atom dalam format: Serial1,Serial2,Serial3,Sudut. Contoh: 4,1,3,180.')
parser.add_argument('-dih','--dihedral',type=str,default='None',help='Sudut dihedral antara empat buah atom dalam format: Serial1,Serial2,Serial4,Dihedral. Contoh: 4,1,3,2,120.')
parser.add_argument('-scanmode','--scanmode',type=str,default='None',help='Mode scan geometri yang diinginkan. Pilihan: concerted, sequential.')
parser.add_argument('-scan','--scan',type=str,default='None',help='Rentang Scanning dalam format: Titik1,Titik2,JumlahTitik. Contoh:2.5,1.0,100.')
parser.add_argument('-trans','--transitionstate',default='None',type=str,help='Struktur perkiraan keadaan transisi yang digunakan dalam format koordinat Cartesian.')
parser.add_argument('-ocsstr','--ocsstr',type=str,default='true',help='Menghitung osscilator strength dan momen dipol transisi elektronik.')
parser.add_argument('-wt','--writetrans',type=str,default='true',help='Menulis informasi detail mengenai transisi elektronik yang terjadi.')
parser.add_argument('-lc','--longrange',type=str,default='false',help='Apakah akan dilakukan koreksi interaksi jarak jauh.')
# Input untuk metode multiskala
parser.add_argument('-qmatoms','--qmatoms',type=str,default='None',help='Indeks dari atom-atom di lapisan QM. Indeks dimulai dari nol.')
parser.add_argument('-activeatoms','--activeatoms',type=str,default='1:-1',help='Indeks atom aktif yang digunakan untuk perhitungan.')
parser.add_argument('-hessfile','--hessfile',type=str,default='None',help='File Hessian hasil optimasi geometri atau berbagai perhitungan sebelumnya.')
parser.add_argument('-tc','--totalcharge',type=int,default=0,help='Muatan total molekul.')
parser.add_argument('-tmult','--totalmult',type=int,default=1,help='Multiplisitas spin total molekul.')
parser.add_argument('-qm2method','--qm2method',type=str,default='None',help='Custom method untuk lapisan QM2')
parser.add_argument('-qm2basis','--qm2basis',type=str,default='None',help='Custom himpunan basis untuk lapisan QM2')
# Informasi input padatan
parser.add_argument('-kpts','--kpts',type=str,default='1x1x1',help='Informasi K-points yang digunakan. Ditulis sebagai: 1x1x1, 2x2x2, dsb.')
# Input terkait perhitungan Atom in Molecules
parser.add_argument('-aim','--aim',type=str,default='false',help='Apakah akan dilakukan perhitungan AIM untuk interaksi non-kovalen?')
parser.add_argument('-pseudo','--pseudo',type=str,default='/home/adit/opt/qe-7.0/pseudo',help='Folder tempat menyimpan file pseudo potential.')
parser.add_argument('-outdir','--outdir',type=str,default='./out',help='Folder tempat menyimpan output.')
parser.add_argument('-unit','--unit',type=str,default='angstrom',help='Satuan yang digunakan dalam mendefinisikan parameter sel dan posisi atom. Default: angstrom. Pilihan: angstrom, bohr')
parser.add_argument('-bravais','--bravais',type=int,default=0,help='Indeks Bravais yang diperlukan untuk mengidentifikasi kristal pada software Quantum-Espresso.')
parser.add_argument('-ecutwfc','--ecutwfc',type=float,default=60.0,help='Cutoff energi kinetik untuk fungsi gelombang dalam satuan Ry. Default: 60.0 Ry.')
parser.add_argument('-ecutrho','--ecutrho',type=float,default=720.0,help='Cutoff energi kinetikr untuk rapat muatan dan potensial. Default: 720.0 Ry.')
parser.add_argument('-mix','--mixing_beta',type=float,default=0.7,help='Koefisien mixing untuk self-consistency.')
parser.add_argument('-conv_thr','--conv_thr',type=float,default=1e-8,help='Batas nilai konvergensi.')
parser.add_argument('-dftfunc','--dftfunc',type=str,default='pbe',help='Fungsional DFT yang digunakan. Default: pbe')
parser.add_argument('-extpseudo','--extpseudo',type=str,default='UPF',help='Ekstensi dari file pseudopotensial. Default: UPF.')
parser.add_argument('-cpress','--cellpress',type=float,default=0.0,help='Tekanan sel dalam satuan kilobar yang digunakan dalam Quantum-Espresso. Default:0.0.')
parser.add_argument('-press_conv','--press_conv_thr',type=float,default=0.5,help='Kriteria konvergensi untuk tekanan sel. Default=0.5 kbar.')
parser.add_argument('-nband','--nband',type=int,default=8,help='Jumlah tingkat energi yang ingin diplot dalam DOS.')