@jjlmoya/utils-science 1.39.0 → 1.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/package.json +1 -1
  2. package/src/category/index.ts +2 -1
  3. package/src/entries.ts +3 -1
  4. package/src/index.ts +1 -0
  5. package/src/tests/locale_completeness.test.ts +2 -2
  6. package/src/tests/tool_validation.test.ts +2 -2
  7. package/src/tool/crystal-lattice-structure-finder/bibliography.astro +14 -0
  8. package/src/tool/crystal-lattice-structure-finder/bibliography.ts +20 -0
  9. package/src/tool/crystal-lattice-structure-finder/component.astro +366 -0
  10. package/src/tool/crystal-lattice-structure-finder/crystal-lattice-structure-finder.css +387 -0
  11. package/src/tool/crystal-lattice-structure-finder/data.ts +220 -0
  12. package/src/tool/crystal-lattice-structure-finder/entry.ts +26 -0
  13. package/src/tool/crystal-lattice-structure-finder/i18n/de.ts +218 -0
  14. package/src/tool/crystal-lattice-structure-finder/i18n/en.ts +218 -0
  15. package/src/tool/crystal-lattice-structure-finder/i18n/es.ts +218 -0
  16. package/src/tool/crystal-lattice-structure-finder/i18n/fr.ts +218 -0
  17. package/src/tool/crystal-lattice-structure-finder/i18n/id.ts +218 -0
  18. package/src/tool/crystal-lattice-structure-finder/i18n/it.ts +218 -0
  19. package/src/tool/crystal-lattice-structure-finder/i18n/ja.ts +218 -0
  20. package/src/tool/crystal-lattice-structure-finder/i18n/ko.ts +218 -0
  21. package/src/tool/crystal-lattice-structure-finder/i18n/nl.ts +218 -0
  22. package/src/tool/crystal-lattice-structure-finder/i18n/pl.ts +218 -0
  23. package/src/tool/crystal-lattice-structure-finder/i18n/pt.ts +218 -0
  24. package/src/tool/crystal-lattice-structure-finder/i18n/ru.ts +218 -0
  25. package/src/tool/crystal-lattice-structure-finder/i18n/sv.ts +218 -0
  26. package/src/tool/crystal-lattice-structure-finder/i18n/tr.ts +218 -0
  27. package/src/tool/crystal-lattice-structure-finder/i18n/zh.ts +218 -0
  28. package/src/tool/crystal-lattice-structure-finder/index.ts +11 -0
  29. package/src/tool/crystal-lattice-structure-finder/logic.ts +39 -0
  30. package/src/tool/crystal-lattice-structure-finder/seo.astro +15 -0
  31. package/src/tools.ts +2 -0
@@ -0,0 +1,218 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+
4
+ const slug = 'kristal-kafes-yapi-bulucu';
5
+ const title = 'Kristal Kafes Yapısı Bulucu';
6
+ const description = 'Basit kübik, yüzey merkezli kübik (YMK) ve hekzagonal sıkı paket (HSP) birim hücrelerini interaktif 3D görüntüleyici, atomik paketleme faktörü, koordinasyon sayısı ve teorik yoğunluk hesaplayıcı ile keşfedin.';
7
+
8
+ const howTo = [
9
+ {
10
+ name: 'Bir kafes veya malzeme seçin',
11
+ text: 'Basit kübik, YMK veya HSP gibi bir yapı ailesinden başlayın veya kafes sabitini ve atomik ya da formül kütlesini yüklemek için gerçek bir malzeme ön ayarı seçin.',
12
+ },
13
+ {
14
+ name: 'Birim hücreyi döndürün',
15
+ text: 'Hangi atomların köşelerde, yüzeylerde veya geleneksel hücrenin içinde olduğunu incelemek için açı ve yakınlaştırma kontrollerini sürükleyin.',
16
+ },
17
+ {
18
+ name: 'Paketleme ve yoğunluğu okuyun',
19
+ text: 'Seçilen yapı için atomik paketleme faktörünü, koordinasyon sayısını, hücre başına atomu, hücre kütlesini, hücre hacmini ve teorik yoğunluğu karşılaştırın.',
20
+ },
21
+ {
22
+ name: 'Özel sabitleri test edin',
23
+ text: 'Kristal genişlediğinde, büzüldüğünde veya bileşim değiştirdiğinde teorik yoğunluğun nasıl değiştiğini görmek için kafes parametresi a, c/a oranı ve kütleyi düzenleyin.',
24
+ },
25
+ ];
26
+
27
+ const faq = [
28
+ {
29
+ question: 'Kristal kafeste birim hücre nedir?',
30
+ answer: 'Birim hücre, kristali oluşturmak için uzayı döşeyebilen en küçük tekrarlanan üç boyutlu kutudur. Atomları komşu hücrelerle paylaşılabilir, bu nedenle hücre başına net atom sayısı, sınırlarda çizilen küre sayısından daha az olabilir.',
31
+ },
32
+ {
33
+ question: 'YMK ve HSP neden aynı paketleme faktörüne sahiptir?',
34
+ answer: 'YMK ve ideal HSP, eşit kürelerin her ikisi de sıkı paketlenmiş düzenlemeleridir. Yoğun üçgen katmanları farklı dizilerde istiflerler, YMK için ABCABC ve HSP için ABAB, ancak her ikisi de alanın yaklaşık yüzde 74\'ünü atomlarla doldurur.',
35
+ },
36
+ {
37
+ question: 'Teorik yoğunluk nasıl hesaplanır?',
38
+ answer: 'Hesaplayıcı, bir birim hücrenin içindeki kütleyi birim hücre hacmine böler. Hücre kütlesi, hücre başına atom veya formül birimi sayısının mol kütlesi ile çarpılıp Avogadro sabitine bölünmesiyle elde edilir.',
39
+ },
40
+ {
41
+ question: 'Ölçülen yoğunluk neden teorik sonuçtan farklı olabilir?',
42
+ answer: 'Gerçek numuneler boşluklar, safsızlıklar, gözenekler, tane sınırları, izotopik karışımlar, sıcaklık genleşmesi veya birden çok faz içerebilir. Teorik değer, seçilen kafes sabitine sahip mükemmel bir kristali varsayar.',
43
+ },
44
+ {
45
+ question: 'Halit gerçekten bir YMK metal kafesi midir?',
46
+ answer: 'Hayır. Halit iyonik kaya tuzudur, bir metal değildir. Ön ayar, geleneksel YMK türevli hücresini kullanır çünkü NaCl kübik hücre başına dört formül birimine sahiptir, bu da onu yoğunluk hesaplama pratiği için kullanışlı kılar.',
47
+ },
48
+ ];
49
+
50
+ export const content: ToolLocaleContent = {
51
+ slug,
52
+ title,
53
+ description,
54
+ ui: {
55
+ viewerLabel: 'İnteraktif kristal birim hücre',
56
+ material: 'Malzeme',
57
+ lattice: 'Kafes',
58
+ rotation: 'Döndürme',
59
+ zoom: 'Yakınlaştırma',
60
+ latticeA: 'Kafes sabiti a',
61
+ cRatio: 'c/a oranı',
62
+ molarMass: 'Mol kütlesi',
63
+ atomsPerCell: 'Hücre başına atom',
64
+ packingFactor: 'Paketleme faktörü',
65
+ coordination: 'Koordinasyon',
66
+ density: 'Yoğunluk',
67
+ cellVolume: 'Hücre hacmi',
68
+ cellMass: 'Hücre kütlesi',
69
+ radius: 'Atom yarıçapı',
70
+ cornerAtoms: 'Köşe atomları',
71
+ faceAtoms: 'Yüzey atomları',
72
+ interiorAtoms: 'İç atomlar',
73
+ materialNote: 'Malzeme notu',
74
+ formula: 'Formül',
75
+ resetView: 'Görünümü sıfırla',
76
+ crystalProperties: 'Kristal özellikleri',
77
+ physicalMetrics: 'Fiziksel metrikler',
78
+ latticeSimpleCubic: 'Basit kübik',
79
+ latticeFcc: 'Yüzey merkezli kübik (YMK)',
80
+ latticeHcp: 'Hegzagonal sıkı paket (HSP)',
81
+ shortSc: 'SC',
82
+ shortFcc: 'YMK',
83
+ shortHcp: 'HSP',
84
+ materialCopper: 'Bakır',
85
+ materialCopperNote: 'Yüksek elektrik iletkenliğine sahip yaygın bir YMK metali.',
86
+ materialAluminum: 'Alüminyum',
87
+ materialAluminumNote: 'İyi termal iletkenliğe sahip hafif bir YMK metali.',
88
+ materialPolonium: 'Polonyum',
89
+ materialPoloniumNote: 'Basit kübik yapıya sahip nadir bir element.',
90
+ materialMagnesium: 'Magnezyum',
91
+ materialMagnesiumNote: 'İyi mukavemet-ağırlık oranına sahip hafif bir HSP metali.',
92
+ materialTitanium: 'Titanyum',
93
+ materialTitaniumNote: 'Havacılık uygulamalarında yaygın olarak kullanılan güçlü bir HSP metali.',
94
+ materialHalite: 'Halit',
95
+ materialHaliteNote: 'Dört NaCl birimi için YMK türevli geleneksel hücreye sahip iyonik kaya tuzu.',
96
+ },
97
+ seo: [
98
+ {
99
+ type: 'title',
100
+ text: 'Kristal kafes yapısı bulucu ile birim hücreler, paketleme faktörü ve yoğunluk',
101
+ level: 2,
102
+ },
103
+ {
104
+ type: 'paragraph',
105
+ html: 'Bu kristal kafes yapısı bulucu, bir birim hücrenin görüntüsünü öğrencilerin ve malzeme bilimcilerin genellikle ihtiyaç duyduğu hesaplamalarla bağlamaya yardımcı olur. Basit kübik, yüzey merkezli kübik ve hekzagonal sıkı paket yapılarını inceleyebilir, ardından atomik paketleme faktörü, koordinasyon sayısı, hücre başına atom, kafes parametresinden atom yarıçapı, hücre hacmi, hücre kütlesi ve teorik yoğunluğu gerçek malzeme ön ayarlarından veya özel girdilerden hesaplayabilirsiniz.',
106
+ },
107
+ {
108
+ type: 'paragraph',
109
+ html: 'İnteraktif görüntüleyici, kristalografideki yaygın zorluk için tasarlanmıştır: sınır atomları görünür, ancak her bir sınır atomunun yalnızca bir kısmı seçilen hücreye aittir. Modeli döndürmek, sayısal formülü kullanmadan önce köşe bölgeleri, yüzey bölgeleri ve iç bölgeler arasındaki farkı görmeyi kolaylaştırır.',
110
+ },
111
+ {
112
+ type: 'title',
113
+ text: 'Basit kübik, YMK ve HSP karşılaştırması',
114
+ level: 3,
115
+ },
116
+ {
117
+ type: 'table',
118
+ headers: ['Yapı', 'Hücre başına net atom', 'Koordinasyon sayısı', 'Atomik paketleme faktörü', 'Tipik örnekler'],
119
+ rows: [
120
+ ['Basit kübik', '1', '6', '%52,36', 'Alfa polonyum klasik element örneğidir.'],
121
+ ['Yüzey merkezli kübik', '4', '12', '%74,05', 'Bakır, alüminyum, nikel, gümüş, altın ve birçok sünek metal.'],
122
+ ['Hekzagonal sıkı paket', '6', '12', '%74,05', 'Magnezyum, alfa titanyum, çinko, kobalt ve berilyum.'],
123
+ ],
124
+ },
125
+ {
126
+ type: 'paragraph',
127
+ html: 'Basit kübik paketlemenin görselleştirilmesi kolaydır çünkü atomlar küp kenarı boyunca birbirine değer ve her köşe atomu hücreye sekizde bir katkıda bulunur. YMK, her yüzeyin merkezine atom ekler, böylece atomlar yüzey köşegenleri boyunca birbirine değer ve net sayı geleneksel kübik hücre başına dört atom olur. HSP, kübik bir kutu yerine hekzagonal katmanlar kullanır, ancak ideal HSP, YMK ile aynı sıkı paket sınırına ulaşır.',
128
+ },
129
+ {
130
+ type: 'title',
131
+ text: 'Atomik paketleme faktörü formülü',
132
+ level: 3,
133
+ },
134
+ {
135
+ type: 'paragraph',
136
+ html: 'Atomik paketleme faktörü, sert küre atomları tarafından işgal edilen birim hücre hacminin oranıdır. <strong>APF = hücredeki atomların hacmi / birim hücre hacmi</strong> olarak hesaplanır. Basit kübik için bu pi / 6 olur çünkü yarıçapı a/2 olan bir atom kübik hücreye sığar. YMK ve ideal HSP, eşit küreler için maksimum paketleme oranı olan yaklaşık 0,7405\'e ulaşır.',
137
+ },
138
+ {
139
+ type: 'paragraph',
140
+ html: 'Paketleme faktörü yoğunluk ile aynı şey değildir. APF, özdeş kürelerin alanı ne kadar verimli doldurduğunu tanımlarken, yoğunluk aynı zamanda mol kütlesine ve kafes boyutlarına da bağlıdır. Hafif bir HSP metali ve ağır bir YMK metali benzer paketleme faktörlerine ancak çok farklı yoğunluklara sahip olabilir.',
141
+ },
142
+ {
143
+ type: 'title',
144
+ text: 'Hesaplayıcı tarafından kullanılan teorik yoğunluk formülü',
145
+ level: 3,
146
+ },
147
+ {
148
+ type: 'paragraph',
149
+ html: 'Hesaplayıcı <strong>rho = nM / (NA Vhucre)</strong> formülünü kullanır. Bu denklemde, <strong>n</strong> hücre başına atom veya formül birimi sayısı, <strong>M</strong> gram bölü mol cinsinden mol kütlesi, <strong>NA</strong> Avogadro sabiti ve <strong>Vhucre</strong> santimetre küp cinsinden birim hücre hacmidir. Kübik hücreler a^3 kullanır. Hekzagonal hücreler (3 sqrt(3) / 2) a^2 c kullanır ve c, c/a oranı aracılığıyla sağlanır.',
150
+ },
151
+ {
152
+ type: 'paragraph',
153
+ html: 'Kafes sabitleri genellikle angstrom cinsinden tablolaştırıldığından, hesaplayıcı yoğunluğu hesaplamadan önce angstromu santimetreye dönüştürür. Kafes sabitindeki küçük bir değişiklik, kübik hücrelerde hacim üçüncü kuvvetle ölçeklendiğinden yoğunluğu gözle görülür şekilde etkileyebilir.',
154
+ },
155
+ {
156
+ type: 'title',
157
+ text: 'Metaller ve mineraller için kafes ön ayarları nasıl kullanılır',
158
+ level: 3,
159
+ },
160
+ {
161
+ type: 'list',
162
+ items: [
163
+ '<strong>Bakır ve alüminyum:</strong> hücre başına aynı net atoma ancak farklı mol kütlelerine ve kafes sabitlerine sahip iki YMK metali karşılaştırın.',
164
+ '<strong>Magnezyum ve alfa titanyum:</strong> HSP paketlemesini inceleyin ve c/a oranının hekzagonal hücre hacmini nasıl değiştirdiğini görün.',
165
+ '<strong>Alfa polonyum:</strong> nadir basit kübik yapıyı ve daha düşük paketleme verimliliğini inceleyin.',
166
+ '<strong>Halit:</strong> tek elementli bir metal yerine mineral tarzı bir NaCl geleneksel hücresi ile formül birimi yoğunluğu pratiği yapın.',
167
+ ],
168
+ },
169
+ {
170
+ type: 'title',
171
+ text: 'Sert küre birim hücre modelinin sınırlamaları',
172
+ level: 3,
173
+ },
174
+ {
175
+ type: 'paragraph',
176
+ html: 'Bu araç idealize edilmiş geometrik modeller kullanır. Gerçek kristaller sert sınırlar yerine elektron yoğunluğuna sahiptir ve kafes sabitleri sıcaklık, basınç, bileşim ve kusurlarla değişir. İyonik ve kovalent kristaller ayrıca burada gösterilen üç öğretim yapısının ötesine geçen baz atomları, kısmi doluluklar ve simetri işlemleri gerektirebilir.',
177
+ },
178
+ {
179
+ type: 'paragraph',
180
+ html: 'Sonuçları eğitim, hızlı tahminler ve yaygın kafes ailelerinin karşılaştırılması için kullanın. Yayın kalitesinde kristalografi için, kafes parametrelerini, fazı, stokiyometriyi ve bölge doluluğunu birincil kırınım verilerinden veya seçilmiş bir kristalografi veritabanından doğrulayın.',
181
+ },
182
+ ],
183
+ faq,
184
+ bibliography,
185
+ howTo,
186
+ schemas: [
187
+ {
188
+ '@context': 'https://schema.org',
189
+ '@type': 'SoftwareApplication',
190
+ name: title,
191
+ description,
192
+ applicationCategory: 'EducationalApplication',
193
+ operatingSystem: 'Any',
194
+ },
195
+ {
196
+ '@context': 'https://schema.org',
197
+ '@type': 'FAQPage',
198
+ mainEntity: faq.map((item) => ({
199
+ '@type': 'Question',
200
+ name: item.question,
201
+ acceptedAnswer: {
202
+ '@type': 'Answer',
203
+ text: item.answer,
204
+ },
205
+ })),
206
+ },
207
+ {
208
+ '@context': 'https://schema.org',
209
+ '@type': 'HowTo',
210
+ name: title,
211
+ step: howTo.map((step) => ({
212
+ '@type': 'HowToStep',
213
+ name: step.name,
214
+ text: step.text,
215
+ })),
216
+ },
217
+ ],
218
+ };
@@ -0,0 +1,218 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+
4
+ const slug = 'crystal-lattice-structure-finder';
5
+ const title = '晶格结构探索器';
6
+ const description = '通过交互式3D查看器、原子堆积因子、配位数和理论密度计算器,探索简单立方、面心立方 (FCC) 和六方密堆积 (HCP) 晶胞。';
7
+
8
+ const howTo = [
9
+ {
10
+ name: '选择晶格或材料',
11
+ text: '从简单立方、FCC或HCP等结构家族开始,或选择真实材料预设以加载其晶格常数和原子或化学式质量。',
12
+ },
13
+ {
14
+ name: '旋转晶胞',
15
+ text: '拖动角度和缩放控件,检查哪些原子位于传统晶胞的角、面或内部。',
16
+ },
17
+ {
18
+ name: '查看堆积和密度',
19
+ text: '比较所选结构的原子堆积因子、配位数、每晶胞原子数、晶胞质量、晶胞体积和理论密度。',
20
+ },
21
+ {
22
+ name: '测试自定义常数',
23
+ text: '编辑晶格参数a、c/a比和质量,观察晶体膨胀、收缩或成分变化时理论密度的变化。',
24
+ },
25
+ ];
26
+
27
+ const faq = [
28
+ {
29
+ question: '晶格中的晶胞是什么?',
30
+ answer: '晶胞是可以填充空间以构建晶体的最小重复三维盒子。其原子可能与相邻晶胞共享,因此每晶胞净原子数可能小于边界上绘制的球体数量。',
31
+ },
32
+ {
33
+ question: '为什么FCC和HCP具有相同的堆积因子?',
34
+ answer: 'FCC和理想HCP都是等径球体的密堆积排列。它们以不同的顺序堆叠密集的三角形层 - - FCC为ABCABC,HCP为ABAB - - 但两者都约占据空间体积的74%。',
35
+ },
36
+ {
37
+ question: '理论密度如何计算?',
38
+ answer: '计算器将一个晶胞内的质量除以晶胞体积。晶胞质量由每晶胞原子或化学式单元数乘以摩尔质量再除以阿伏伽德罗常数得到。',
39
+ },
40
+ {
41
+ question: '实测密度为什么可能与理论结果不同?',
42
+ answer: '实际样品可能包含空位、杂质、孔隙、晶界、同位素混合物、热膨胀或多相。理论值假设所选晶格常数下的完美晶体。',
43
+ },
44
+ {
45
+ question: '岩盐真的是FCC金属晶格吗?',
46
+ answer: '不是。岩盐是离子型石盐,不是金属。预设使用其传统的FCC衍生晶胞,因为NaCl每立方晶胞有四个化学式单元,使其适合密度计算练习。',
47
+ },
48
+ ];
49
+
50
+ export const content: ToolLocaleContent = {
51
+ slug,
52
+ title,
53
+ description,
54
+ ui: {
55
+ viewerLabel: '交互式晶体晶胞',
56
+ material: '材料',
57
+ lattice: '晶格',
58
+ rotation: '旋转',
59
+ zoom: '缩放',
60
+ latticeA: '晶格常数 a',
61
+ cRatio: 'c/a 比',
62
+ molarMass: '摩尔质量',
63
+ atomsPerCell: '每晶胞原子数',
64
+ packingFactor: '堆积因子',
65
+ coordination: '配位数',
66
+ density: '密度',
67
+ cellVolume: '晶胞体积',
68
+ cellMass: '晶胞质量',
69
+ radius: '原子半径',
70
+ cornerAtoms: '角原子',
71
+ faceAtoms: '面原子',
72
+ interiorAtoms: '内部原子',
73
+ materialNote: '材料说明',
74
+ formula: '化学式',
75
+ resetView: '重置视图',
76
+ crystalProperties: '晶体性质',
77
+ physicalMetrics: '物理指标',
78
+ latticeSimpleCubic: '简单立方',
79
+ latticeFcc: '面心立方 (FCC)',
80
+ latticeHcp: '六方密堆积 (HCP)',
81
+ shortSc: 'SC',
82
+ shortFcc: 'FCC',
83
+ shortHcp: 'HCP',
84
+ materialCopper: '铜',
85
+ materialCopperNote: '导电性高的常见FCC金属。',
86
+ materialAluminum: '铝',
87
+ materialAluminumNote: '导热性良好的轻质FCC金属。',
88
+ materialPolonium: '钋',
89
+ materialPoloniumNote: '具有简单立方结构的稀有元素。',
90
+ materialMagnesium: '镁',
91
+ materialMagnesiumNote: '强度重量比优异的轻质HCP金属。',
92
+ materialTitanium: '钛',
93
+ materialTitaniumNote: '航空航天应用中广泛使用的高强度HCP金属。',
94
+ materialHalite: '岩盐',
95
+ materialHaliteNote: '具有四个NaCl单元的FCC衍生传统晶胞的离子型石盐。',
96
+ },
97
+ seo: [
98
+ {
99
+ type: 'title',
100
+ text: '晶胞、堆积因子和密度的晶格结构探索器',
101
+ level: 2,
102
+ },
103
+ {
104
+ type: 'paragraph',
105
+ html: '这款晶格结构探索器有助于将晶胞的图形与学生和材料科学家通常需要的计算联系起来。您可以查看简单立方、面心立方和六方密堆积结构,然后从真实材料预设或自定义输入计算原子堆积因子、配位数、每晶胞原子数、由晶格参数得出的原子半径、晶胞体积、晶胞质量和理论密度。',
106
+ },
107
+ {
108
+ type: 'paragraph',
109
+ html: '交互式查看器专为晶体学中的常见难点而设计:边界原子可见,但每个边界原子只有一部分属于所选晶胞。旋转模型可以使角位点、面位点和内部位点之间的差异在使用数值公式之前更容易观察。',
110
+ },
111
+ {
112
+ type: 'title',
113
+ text: '简单立方、FCC和HCP比较',
114
+ level: 3,
115
+ },
116
+ {
117
+ type: 'table',
118
+ headers: ['结构', '每晶胞净原子数', '配位数', '原子堆积因子', '典型例子'],
119
+ rows: [
120
+ ['简单立方', '1', '6', '52.36%', 'α-钋是经典的元素实例。'],
121
+ ['面心立方 (FCC)', '4', '12', '74.05%', '铜、铝、镍、银、金及许多延展性金属。'],
122
+ ['六方密堆积 (HCP)', '6', '12', '74.05%', '镁、α-钛、锌、钴和铍。'],
123
+ ],
124
+ },
125
+ {
126
+ type: 'paragraph',
127
+ html: '简单立方堆积易于可视化的原因是原子沿立方体棱边接触,每个角原子贡献八分之一给晶胞。FCC在每个面的中心添加原子,因此原子沿面对角线接触,传统立方晶胞的净原子数变为四个。HCP使用六方层而非立方盒子,但理想HCP可达到与FCC相同的密堆积极限。',
128
+ },
129
+ {
130
+ type: 'title',
131
+ text: '原子堆积因子公式',
132
+ level: 3,
133
+ },
134
+ {
135
+ type: 'paragraph',
136
+ html: '原子堆积因子是晶胞体积中由硬球原子占据的比例。计算公式为<strong>APF = 晶胞内原子体积 / 晶胞体积</strong>。对于简单立方,由于一个半径为a/2的原子恰好位于立方晶胞内,因此结果为π/6。FCC和理想HCP均达到约0.7405,这是等径球体的最大堆积率。',
137
+ },
138
+ {
139
+ type: 'paragraph',
140
+ html: '堆积因子与密度不同。APF描述的是相同球体填充空间的效率,而密度还取决于摩尔质量和晶格尺寸。轻质HCP金属和重质FCC金属可能具有相似的堆积因子,但密度却相差很大。',
141
+ },
142
+ {
143
+ type: 'title',
144
+ text: '计算器使用的理论密度公式',
145
+ level: 3,
146
+ },
147
+ {
148
+ type: 'paragraph',
149
+ html: '计算器使用<strong>ρ = nM / (NA V胞)</strong>。在该公式中,<strong>n</strong>是每晶胞的原子数或化学式单元数,<strong>M</strong>是摩尔质量(克/摩尔),<strong>NA</strong>是阿伏伽德罗常数,<strong>V胞</strong>是晶胞体积(立方厘米)。立方晶胞使用a³。六方晶胞使用(3√3 / 2)a²c,其中c通过c/a比输入。',
150
+ },
151
+ {
152
+ type: 'paragraph',
153
+ html: '由于晶格常数通常以埃为单位列表,计算器在计算密度之前会先将埃转换为厘米。晶格常数的微小变化会对密度产生显著影响,因为立方晶胞的体积与边长三次方成正比。',
154
+ },
155
+ {
156
+ type: 'title',
157
+ text: '如何使用金属和矿物的晶格预设',
158
+ level: 3,
159
+ },
160
+ {
161
+ type: 'list',
162
+ items: [
163
+ '<strong>铜和铝:</strong>比较两种每晶胞净原子数相同但摩尔质量和晶格常数不同的FCC金属。',
164
+ '<strong>镁和α-钛:</strong>查看HCP堆积,观察c/a比如何改变六方晶胞体积。',
165
+ '<strong>α-钋:</strong>研究罕见的简单立方结构及其较低的堆积效率。',
166
+ '<strong>岩盐:</strong>使用矿物型NaCl传统晶胞而非单元素金属,练习化学式单元密度计算。',
167
+ ],
168
+ },
169
+ {
170
+ type: 'title',
171
+ text: '硬球晶胞模型的局限性',
172
+ level: 3,
173
+ },
174
+ {
175
+ type: 'paragraph',
176
+ html: '此工具使用理想化的几何模型。实际晶体具有电子密度而非硬边界,晶格常数随温度、压力、成分和缺陷而变化。离子晶体和共价晶体还可能需要基元原子、部分占据和对称操作,这超出了此处展示的三种教学结构。',
177
+ },
178
+ {
179
+ type: 'paragraph',
180
+ html: '结果可用于教育、快速估算和常见晶格家族之间的比较。若要达到可发表质量的晶体学水平,请通过原始衍射数据或经过整理的晶体学数据库验证晶格参数、相、化学计量和位点占有率。',
181
+ },
182
+ ],
183
+ faq,
184
+ bibliography,
185
+ howTo,
186
+ schemas: [
187
+ {
188
+ '@context': 'https://schema.org',
189
+ '@type': 'SoftwareApplication',
190
+ name: title,
191
+ description,
192
+ applicationCategory: 'EducationalApplication',
193
+ operatingSystem: 'Any',
194
+ },
195
+ {
196
+ '@context': 'https://schema.org',
197
+ '@type': 'FAQPage',
198
+ mainEntity: faq.map((item) => ({
199
+ '@type': 'Question',
200
+ name: item.question,
201
+ acceptedAnswer: {
202
+ '@type': 'Answer',
203
+ text: item.answer,
204
+ },
205
+ })),
206
+ },
207
+ {
208
+ '@context': 'https://schema.org',
209
+ '@type': 'HowTo',
210
+ name: title,
211
+ step: howTo.map((step) => ({
212
+ '@type': 'HowToStep',
213
+ name: step.name,
214
+ text: step.text,
215
+ })),
216
+ },
217
+ ],
218
+ };
@@ -0,0 +1,11 @@
1
+ import { crystalLatticeStructureFinder } from './entry';
2
+ import type { ToolDefinition } from '../../types';
3
+
4
+ export * from './entry';
5
+
6
+ export const CRYSTAL_LATTICE_STRUCTURE_FINDER_TOOL: ToolDefinition = {
7
+ entry: crystalLatticeStructureFinder,
8
+ Component: () => import('./component.astro'),
9
+ SEOComponent: () => import('./seo.astro'),
10
+ BibliographyComponent: () => import('./bibliography.astro'),
11
+ };
@@ -0,0 +1,39 @@
1
+ import { LATTICE_STRUCTURES, MATERIAL_PRESETS } from './data';
2
+ import type { LatticeId, AtomSite, LatticeStructure, MaterialPreset, DensityResult } from './data';
3
+
4
+ export { LATTICE_STRUCTURES, MATERIAL_PRESETS };
5
+ export type { LatticeId, AtomSite, LatticeStructure, MaterialPreset, DensityResult };
6
+
7
+ const AVOGADRO = 6.02214076e23;
8
+ const ANGSTROM_TO_CM = 1e-8;
9
+
10
+ export function getLattice(id: LatticeId): LatticeStructure {
11
+ return LATTICE_STRUCTURES.find((structure) => structure.id === id) ?? LATTICE_STRUCTURES[0]!;
12
+ }
13
+
14
+ export function getMaterial(id: string): MaterialPreset {
15
+ return MATERIAL_PRESETS.find((material) => material.id === id) ?? MATERIAL_PRESETS[0]!;
16
+ }
17
+
18
+ export function calculateTheoreticalDensity(material: MaterialPreset): DensityResult {
19
+ const lattice = getLattice(material.latticeId);
20
+ const cToA = material.cToA ?? lattice.cToA ?? 1;
21
+ const atomsPerCell = material.atomsPerFormulaUnit ?? lattice.atomsPerCell;
22
+ const volumeA3 = material.latticeId === 'hexagonal-close-packed'
23
+ ? (3 * Math.sqrt(3) / 2) * material.latticeA ** 2 * material.latticeA * cToA
24
+ : material.latticeA ** 3;
25
+ const cellVolumeCm3 = volumeA3 * ANGSTROM_TO_CM ** 3;
26
+ const cellMassG = (atomsPerCell * material.atomicMass) / AVOGADRO;
27
+
28
+ return {
29
+ density: cellMassG / cellVolumeCm3,
30
+ cellVolumeCm3,
31
+ cellMassG,
32
+ atomsPerCell,
33
+ packingFactor: lattice.packingFactor,
34
+ };
35
+ }
36
+
37
+ export function calculatePackingPercent(lattice: LatticeStructure): number {
38
+ return lattice.packingFactor * 100;
39
+ }
@@ -0,0 +1,15 @@
1
+ ---
2
+ import { SEORenderer } from '@jjlmoya/utils-shared';
3
+ import { crystalLatticeStructureFinder } from './index';
4
+ import type { KnownLocale } from '../../types';
5
+
6
+ interface Props {
7
+ locale?: KnownLocale;
8
+ }
9
+
10
+ const { locale = 'en' } = Astro.props;
11
+ const content = await crystalLatticeStructureFinder.i18n[locale]?.();
12
+ if (!content) return null;
13
+ ---
14
+
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
package/src/tools.ts CHANGED
@@ -22,6 +22,7 @@ import { ROCHE_LIMIT_SATELLITE_DISRUPTION_TOOL } from './tool/roche-limit-satell
22
22
  import { DYSON_SPHERE_ENERGY_CAPTURE_TOOL } from './tool/dyson-sphere-energy-capture/index';
23
23
  import { GLOBAL_ALBEDO_SNOWBALL_SIMULATOR_TOOL } from './tool/global-albedo-snowball-simulator/index';
24
24
  import { CONWAY_LIFE_RULE_LAB_TOOL } from './tool/conway-life-rule-lab/index';
25
+ import { CRYSTAL_LATTICE_STRUCTURE_FINDER_TOOL } from './tool/crystal-lattice-structure-finder/index';
25
26
 
26
27
  export const ALL_TOOLS: ToolDefinition[] = [
27
28
  COLONY_COUNTER_TOOL,
@@ -46,4 +47,5 @@ export const ALL_TOOLS: ToolDefinition[] = [
46
47
  DYSON_SPHERE_ENERGY_CAPTURE_TOOL,
47
48
  GLOBAL_ALBEDO_SNOWBALL_SIMULATOR_TOOL,
48
49
  CONWAY_LIFE_RULE_LAB_TOOL,
50
+ CRYSTAL_LATTICE_STRUCTURE_FINDER_TOOL,
49
51
  ];