Topic - study of effect of the temperature on the solubility of solids in liquids around 30 pages with includes of graph and charts for records For cbse based class 12 , investigatory project
CBSE class 12 chemistry investigatory project effect of temperature on solubility of solids in liquids
ls /home/daytona/skills/docx/
ls /home/daytona/workspace/ 2>/dev/null || echo "workspace is empty or does not exist"
mkdir -p /home/daytona/workspace/solubility-project
~/solubility-project/generate.js
const {
Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell,
Header, Footer, AlignmentType, HeadingLevel, BorderStyle, WidthType,
VerticalAlign, PageNumber, PageBreak, ShadingType, ImageRun,
TableOfContents, UnderlineType
} = require('docx');
const fs = require('fs');
// ─── Helper functions ────────────────────────────────────────────────────────
function heading1(text) {
return new Paragraph({
text,
heading: HeadingLevel.HEADING_1,
spacing: { before: 400, after: 200 },
border: { bottom: { style: BorderStyle.SINGLE, size: 6, color: '2E4057' } },
});
}
function heading2(text) {
return new Paragraph({
text,
heading: HeadingLevel.HEADING_2,
spacing: { before: 300, after: 150 },
});
}
function heading3(text) {
return new Paragraph({
text,
heading: HeadingLevel.HEADING_3,
spacing: { before: 200, after: 100 },
});
}
function body(text, opts = {}) {
return new Paragraph({
children: [new TextRun({ text, size: 24, font: 'Times New Roman', ...opts })],
spacing: { before: 100, after: 100, line: 360 },
alignment: AlignmentType.JUSTIFIED,
});
}
function bold(text) {
return new Paragraph({
children: [new TextRun({ text, bold: true, size: 24, font: 'Times New Roman' })],
spacing: { before: 100, after: 100, line: 360 },
alignment: AlignmentType.JUSTIFIED,
});
}
function bullet(text) {
return new Paragraph({
children: [new TextRun({ text: '• ' + text, size: 24, font: 'Times New Roman' })],
spacing: { before: 80, after: 80, line: 320 },
indent: { left: 720 },
alignment: AlignmentType.JUSTIFIED,
});
}
function numbered(num, text) {
return new Paragraph({
children: [new TextRun({ text: `${num}. ${text}`, size: 24, font: 'Times New Roman' })],
spacing: { before: 80, after: 80, line: 320 },
indent: { left: 720 },
alignment: AlignmentType.JUSTIFIED,
});
}
function pageBreak() {
return new Paragraph({ children: [new PageBreak()] });
}
function emptyLine() {
return new Paragraph({ text: '', spacing: { before: 100, after: 100 } });
}
function centeredText(text, size = 24, bold = false, color = '000000') {
return new Paragraph({
children: [new TextRun({ text, size, bold, font: 'Times New Roman', color })],
alignment: AlignmentType.CENTER,
spacing: { before: 120, after: 120 },
});
}
// ─── Table builder ───────────────────────────────────────────────────────────
function makeTable(headers, rows, colWidths) {
const headerRow = new TableRow({
tableHeader: true,
children: headers.map((h, i) =>
new TableCell({
width: { size: colWidths[i], type: WidthType.DXA },
shading: { fill: '2E4057', type: ShadingType.CLEAR, color: 'auto' },
verticalAlign: VerticalAlign.CENTER,
children: [new Paragraph({
alignment: AlignmentType.CENTER,
children: [new TextRun({ text: h, bold: true, size: 22, color: 'FFFFFF', font: 'Times New Roman' })],
})],
})
),
});
const dataRows = rows.map((row, ri) =>
new TableRow({
children: row.map((cell, ci) =>
new TableCell({
width: { size: colWidths[ci], type: WidthType.DXA },
shading: { fill: ri % 2 === 0 ? 'EAF2FB' : 'FFFFFF', type: ShadingType.CLEAR, color: 'auto' },
verticalAlign: VerticalAlign.CENTER,
children: [new Paragraph({
alignment: AlignmentType.CENTER,
children: [new TextRun({ text: String(cell), size: 22, font: 'Times New Roman' })],
})],
})
),
})
);
return new Table({
width: { size: 9000, type: WidthType.DXA },
rows: [headerRow, ...dataRows],
borders: {
top: { style: BorderStyle.SINGLE, size: 4, color: '2E4057' },
bottom: { style: BorderStyle.SINGLE, size: 4, color: '2E4057' },
left: { style: BorderStyle.SINGLE, size: 4, color: '2E4057' },
right: { style: BorderStyle.SINGLE, size: 4, color: '2E4057' },
insideH: { style: BorderStyle.SINGLE, size: 2, color: 'AAAAAA' },
insideV: { style: BorderStyle.SINGLE, size: 2, color: 'AAAAAA' },
},
});
}
function tableCaption(text) {
return new Paragraph({
children: [new TextRun({ text, bold: true, size: 22, font: 'Times New Roman', italics: true, color: '2E4057' })],
alignment: AlignmentType.CENTER,
spacing: { before: 80, after: 200 },
});
}
// ─── ASCII-art style chart representation as table ───────────────────────────
function chartTitle(text) {
return new Paragraph({
children: [new TextRun({ text, bold: true, size: 26, font: 'Times New Roman', color: '2E4057' })],
alignment: AlignmentType.CENTER,
spacing: { before: 200, after: 80 },
});
}
function chartNote(text) {
return new Paragraph({
children: [new TextRun({ text, italics: true, size: 20, font: 'Times New Roman', color: '555555' })],
alignment: AlignmentType.CENTER,
spacing: { before: 60, after: 200 },
});
}
// Build a bar-chart-like visual table (horizontal bar = filled cells)
function buildBarChartTable(title, caption, xLabel, yLabel, dataRows) {
// dataRows: [{label, value}] value 0-100
const maxVal = Math.max(...dataRows.map(r => r.value));
const rows = dataRows.map(r => {
const filled = Math.round((r.value / maxVal) * 20);
const bar = '█'.repeat(filled) + '░'.repeat(20 - filled);
return new TableRow({
children: [
new TableCell({
width: { size: 1800, type: WidthType.DXA },
shading: { fill: 'EAF2FB', type: ShadingType.CLEAR },
children: [new Paragraph({
alignment: AlignmentType.RIGHT,
children: [new TextRun({ text: r.label, bold: true, size: 20, font: 'Times New Roman' })],
})],
}),
new TableCell({
width: { size: 5200, type: WidthType.DXA },
shading: { fill: 'FFFFFF', type: ShadingType.CLEAR },
children: [new Paragraph({
children: [new TextRun({ text: bar, size: 18, font: 'Courier New', color: '1A73E8' })],
})],
}),
new TableCell({
width: { size: 1000, type: WidthType.DXA },
shading: { fill: 'EAF2FB', type: ShadingType.CLEAR },
children: [new Paragraph({
alignment: AlignmentType.CENTER,
children: [new TextRun({ text: String(r.value), bold: true, size: 20, font: 'Times New Roman', color: '2E4057' })],
})],
}),
],
});
});
const headerRow = new TableRow({
children: [
new TableCell({
width: { size: 1800, type: WidthType.DXA },
shading: { fill: '2E4057', type: ShadingType.CLEAR },
children: [new Paragraph({ alignment: AlignmentType.CENTER, children: [new TextRun({ text: xLabel, bold: true, size: 20, color: 'FFFFFF', font: 'Times New Roman' })] })],
}),
new TableCell({
width: { size: 5200, type: WidthType.DXA },
shading: { fill: '2E4057', type: ShadingType.CLEAR },
children: [new Paragraph({ alignment: AlignmentType.CENTER, children: [new TextRun({ text: 'Solubility (Bar Chart)', bold: true, size: 20, color: 'FFFFFF', font: 'Times New Roman' })] })],
}),
new TableCell({
width: { size: 1000, type: WidthType.DXA },
shading: { fill: '2E4057', type: ShadingType.CLEAR },
children: [new Paragraph({ alignment: AlignmentType.CENTER, children: [new TextRun({ text: yLabel, bold: true, size: 20, color: 'FFFFFF', font: 'Times New Roman' })] })],
}),
],
});
return new Table({
width: { size: 8000, type: WidthType.DXA },
rows: [headerRow, ...rows],
borders: {
top: { style: BorderStyle.SINGLE, size: 4, color: '2E4057' },
bottom: { style: BorderStyle.SINGLE, size: 4, color: '2E4057' },
left: { style: BorderStyle.SINGLE, size: 4, color: '2E4057' },
right: { style: BorderStyle.SINGLE, size: 4, color: '2E4057' },
insideH: { style: BorderStyle.SINGLE, size: 1, color: 'CCCCCC' },
insideV: { style: BorderStyle.SINGLE, size: 1, color: 'CCCCCC' },
},
});
}
// ─── DOCUMENT CONTENT ────────────────────────────────────────────────────────
const children = [];
// ============================================================
// COVER PAGE
// ============================================================
children.push(emptyLine(), emptyLine(), emptyLine());
children.push(centeredText('CENTRAL BOARD OF SECONDARY EDUCATION', 28, true, '2E4057'));
children.push(emptyLine());
children.push(centeredText('CHEMISTRY INVESTIGATORY PROJECT', 32, true, '1A73E8'));
children.push(emptyLine());
children.push(centeredText('SESSION: 2025 – 2026', 24, false, '555555'));
children.push(emptyLine(), emptyLine());
children.push(new Paragraph({
children: [new TextRun({ text: '─'.repeat(60), size: 24, color: '2E4057' })],
alignment: AlignmentType.CENTER,
}));
children.push(emptyLine());
children.push(centeredText('TOPIC:', 28, true, '2E4057'));
children.push(emptyLine());
children.push(centeredText('STUDY OF THE EFFECT OF TEMPERATURE ON', 30, true, 'C0392B'));
children.push(centeredText('SOLUBILITY OF SOLIDS IN LIQUIDS', 30, true, 'C0392B'));
children.push(emptyLine());
children.push(new Paragraph({
children: [new TextRun({ text: '─'.repeat(60), size: 24, color: '2E4057' })],
alignment: AlignmentType.CENTER,
}));
children.push(emptyLine(), emptyLine(), emptyLine());
children.push(centeredText('Submitted By:', 24, true, '2E4057'));
children.push(centeredText('[Student Name]', 26, false));
children.push(centeredText('Class XII – Section [ ]', 24, false));
children.push(centeredText('Roll No.: [ ]', 24, false));
children.push(emptyLine());
children.push(centeredText('Under the Guidance of:', 24, true, '2E4057'));
children.push(centeredText('[Teacher\'s Name]', 24, false));
children.push(centeredText('PGT Chemistry', 22, false, '555555'));
children.push(emptyLine());
children.push(centeredText('[School Name]', 24, true, '2E4057'));
children.push(centeredText('[School Address]', 22, false, '555555'));
children.push(centeredText('Affiliated to CBSE | Affiliation No.: [ ]', 22, false, '555555'));
children.push(pageBreak());
// ============================================================
// CERTIFICATE
// ============================================================
children.push(heading1('CERTIFICATE'));
children.push(emptyLine());
children.push(body('This is to certify that the Chemistry Investigatory Project entitled "Study of the Effect of Temperature on Solubility of Solids in Liquids" has been successfully completed by [Student Name], student of Class XII ([Section]), Roll No. [ ], of [School Name], under my guidance and supervision during the academic year 2025–2026.'));
children.push(emptyLine());
children.push(body('This project has been submitted in partial fulfilment of the requirements of the Central Board of Secondary Education (CBSE) for the Class XII Chemistry practical examination and is a bonafide record of work done by the student mentioned above.'));
children.push(emptyLine(), emptyLine(), emptyLine());
children.push(makeTable(
['', 'Signature', 'Date'],
[
['Chemistry Teacher / Guide', '[Teacher\'s Name]\nPGT Chemistry', ''],
['Principal', '[Principal\'s Name]', ''],
['External Examiner', '', ''],
],
[2500, 4000, 2500]
));
children.push(emptyLine());
children.push(body('School Stamp:', { bold: true }));
children.push(pageBreak());
// ============================================================
// ACKNOWLEDGEMENT
// ============================================================
children.push(heading1('ACKNOWLEDGEMENT'));
children.push(emptyLine());
children.push(body('I take this opportunity to express my profound gratitude and deep regards to my Chemistry teacher, [Teacher\'s Name], for her/his exemplary guidance, monitoring, and constant encouragement throughout the course of this project. The blessing, help and guidance given by her/him from time to time shall carry me a long way in the journey of life on which I am about to embark.'));
children.push(emptyLine());
children.push(body('I also take this opportunity to express a deep sense of gratitude to our respected Principal, [Principal\'s Name], for providing all the necessary facilities in the school chemistry laboratory that made this project a success.'));
children.push(emptyLine());
children.push(body('I am also thankful to the non-teaching staff of the chemistry laboratory for their co-operation and assistance.'));
children.push(emptyLine());
children.push(body('Finally, I am grateful to my parents and friends who constantly motivated me throughout the course of this project.'));
children.push(emptyLine(), emptyLine(), emptyLine());
children.push(new Paragraph({
children: [new TextRun({ text: '[Student Name]', size: 24, font: 'Times New Roman' })],
alignment: AlignmentType.RIGHT,
}));
children.push(new Paragraph({
children: [new TextRun({ text: 'Class XII – [Section]', size: 24, font: 'Times New Roman' })],
alignment: AlignmentType.RIGHT,
}));
children.push(pageBreak());
// ============================================================
// TABLE OF CONTENTS
// ============================================================
children.push(heading1('TABLE OF CONTENTS'));
children.push(emptyLine());
children.push(makeTable(
['S.No.', 'Section', 'Page No.'],
[
['1', 'Certificate', '2'],
['2', 'Acknowledgement', '3'],
['3', 'Table of Contents', '4'],
['4', 'Introduction', '5'],
['5', 'Theoretical Background', '7'],
['6', 'Review of Literature', '12'],
['7', 'Aim and Objectives', '14'],
['8', 'Hypothesis', '14'],
['9', 'Materials Required', '15'],
['10', 'Experimental Procedure', '16'],
['11', 'Observations and Data Recording', '18'],
['12', 'Results: Solubility Data Tables', '19'],
['13', 'Graphical Analysis and Charts', '22'],
['14', 'Calculations', '26'],
['15', 'Discussion', '27'],
['16', 'Conclusion', '28'],
['17', 'Precautions', '29'],
['18', 'Sources of Error', '29'],
['19', 'Applications', '30'],
['20', 'Bibliography / References', '31'],
],
[1000, 6000, 2000]
));
children.push(pageBreak());
// ============================================================
// SECTION 1: INTRODUCTION
// ============================================================
children.push(heading1('1. INTRODUCTION'));
children.push(emptyLine());
children.push(body('Solutions are homogeneous mixtures of two or more substances. In our day-to-day life, solutions play a vital role — from the saline drips used in hospitals to the sugar dissolved in our morning tea. Understanding how much of a substance can dissolve, and under what conditions, is one of the most fundamental topics in chemistry.'));
children.push(emptyLine());
children.push(body('Solubility is defined as the maximum amount of a solute that can be dissolved in a given amount of solvent at a specified temperature to produce a stable, homogeneous solution. It is most commonly expressed as grams of solute per 100 grams (or 100 mL) of solvent at a given temperature.'));
children.push(emptyLine());
children.push(heading2('1.1 What is a Solution?'));
children.push(body('A solution consists of two main components:'));
children.push(bullet('Solute – the substance that is dissolved (e.g., salt, sugar, potassium nitrate).'));
children.push(bullet('Solvent – the substance in which the solute dissolves (e.g., water, alcohol, acetone).'));
children.push(emptyLine());
children.push(body('When a solid solute is added to a liquid solvent, the solute particles are pulled away from the crystal lattice by the forces of attraction between solute particles and solvent molecules (solvation/hydration). The solution reaches its saturation point when no more solute can dissolve at that temperature.'));
children.push(emptyLine());
children.push(heading2('1.2 Why Study Solubility?'));
children.push(body('The study of solubility has enormous scientific and industrial importance:'));
children.push(bullet('Pharmaceutical Industry: Drug solubility determines bioavailability and dosage formulation.'));
children.push(bullet('Food Industry: Sugar and salt solubility determines preservation techniques.'));
children.push(bullet('Chemical Engineering: Industrial crystallisation processes exploit solubility-temperature relationships.'));
children.push(bullet('Environmental Science: Solubility of minerals in groundwater affects ecology and geology.'));
children.push(bullet('Agriculture: Fertiliser solubility (e.g., KNO₃) determines application methods.'));
children.push(emptyLine());
children.push(heading2('1.3 Temperature as a Variable'));
children.push(body('Among the various factors that affect solubility — nature of solute and solvent, pressure, polarity, and particle size — temperature is one of the most powerful and easily controllable variables. This project focuses exclusively on investigating how temperature changes affect the solubility of selected solid solutes in water.'));
children.push(emptyLine());
children.push(body('According to Le Chatelier\'s Principle, if the dissolution process is endothermic (heat is absorbed), increasing temperature will shift equilibrium towards dissolution, thereby increasing solubility. Conversely, if the process is exothermic (heat is released), increasing temperature decreases solubility. This project will test and verify these principles experimentally.'));
children.push(pageBreak());
// ============================================================
// SECTION 2: THEORETICAL BACKGROUND
// ============================================================
children.push(heading1('2. THEORETICAL BACKGROUND'));
children.push(emptyLine());
children.push(heading2('2.1 Types of Solutions'));
children.push(body('Solutions are classified based on the physical state of solute and solvent:'));
children.push(makeTable(
['Type', 'Solute State', 'Solvent State', 'Example'],
[
['Solid in Liquid', 'Solid', 'Liquid', 'NaCl in H₂O (saline)'],
['Liquid in Liquid', 'Liquid', 'Liquid', 'Ethanol in Water'],
['Gas in Liquid', 'Gas', 'Liquid', 'CO₂ in Water (soda)'],
['Solid in Solid', 'Solid', 'Solid', 'Alloys (Bronze, Steel)'],
['Gas in Solid', 'Gas', 'Solid', 'H₂ in Palladium'],
['Liquid in Solid', 'Liquid', 'Solid', 'Mercury Amalgam'],
['Gas in Gas', 'Gas', 'Gas', 'Air (N₂, O₂, Ar)'],
['Solid in Gas', 'Solid', 'Gas', 'Iodine vapour in air'],
['Liquid in Gas', 'Liquid', 'Gas', 'Chloroform vapour in N₂'],
],
[1800, 1800, 1800, 3600]
));
children.push(tableCaption('Table 2.1: Classification of Solutions by Physical State'));
children.push(emptyLine());
children.push(heading2('2.2 Concentration and Saturation'));
children.push(body('The extent of solubility of a solute in a solvent leads to three types of solutions:'));
children.push(bullet('Unsaturated Solution: A solution in which more solute can still be dissolved at a given temperature.'));
children.push(bullet('Saturated Solution: A solution in which no more solute can dissolve at that temperature. Dynamic equilibrium exists between dissolved and undissolved solute.'));
children.push(bullet('Supersaturated Solution: A solution containing more solute than the saturation limit at that temperature. It is unstable and readily precipitates solute on slight disturbance.'));
children.push(emptyLine());
children.push(heading2('2.3 Factors Affecting Solubility'));
children.push(heading3('(a) Nature of Solute and Solvent ("Like Dissolves Like")'));
children.push(body('"Like dissolves like" is the fundamental principle governing solubility. Polar solvents dissolve polar/ionic solutes, while non-polar solvents dissolve non-polar solutes. Water, being highly polar, readily dissolves ionic compounds (NaCl, KNO₃, NH₄Cl) and polar covalent compounds (sugar, ethanol).'));
children.push(emptyLine());
children.push(heading3('(b) Temperature'));
children.push(body('Temperature is the primary variable in this experiment. The relationship between temperature and solubility is governed by Le Chatelier\'s Principle:'));
children.push(emptyLine());
children.push(body('For endothermic dissolution (ΔH > 0):'));
children.push(new Paragraph({
children: [new TextRun({ text: ' Solute + Solvent + Heat ⇌ Solution', size: 24, font: 'Courier New', color: '1A73E8', bold: true })],
spacing: { before: 80, after: 80 },
indent: { left: 720 },
}));
children.push(body('→ Increasing temperature favours forward reaction → Solubility INCREASES with temperature.'));
children.push(body('Examples: KNO₃, NH₄Cl, KCl, sugar (sucrose)'));
children.push(emptyLine());
children.push(body('For exothermic dissolution (ΔH < 0):'));
children.push(new Paragraph({
children: [new TextRun({ text: ' Solute + Solvent ⇌ Solution + Heat', size: 24, font: 'Courier New', color: 'C0392B', bold: true })],
spacing: { before: 80, after: 80 },
indent: { left: 720 },
}));
children.push(body('→ Increasing temperature favours reverse reaction → Solubility DECREASES with temperature.'));
children.push(body('Examples: Ce₂(SO₄)₃, Li₂SO₄·H₂O, Ca(OH)₂ (lime water)'));
children.push(emptyLine());
children.push(heading3('(c) Pressure'));
children.push(body('Pressure has negligible effect on the solubility of solids and liquids in liquids (since they are nearly incompressible). Pressure significantly affects the solubility of gases in liquids (Henry\'s Law), but this is outside the scope of the present project.'));
children.push(emptyLine());
children.push(heading3('(d) Particle Size'));
children.push(body('Smaller particle size increases the surface area of the solute, thereby increasing the rate of dissolution. However, particle size does not affect the equilibrium solubility (amount dissolved at saturation) significantly.'));
children.push(emptyLine());
children.push(heading2('2.4 Solubility Equilibrium and the Solubility Product'));
children.push(body('When a sparingly soluble ionic salt dissolves in water, an equilibrium is established:'));
children.push(new Paragraph({
children: [new TextRun({ text: ' MX(s) ⇌ M⁺(aq) + X⁻(aq)', size: 24, font: 'Courier New', color: '2E4057', bold: true })],
spacing: { before: 80, after: 80 },
indent: { left: 720 },
}));
children.push(body('The solubility product constant (Ksp) is defined as:'));
children.push(new Paragraph({
children: [new TextRun({ text: ' Ksp = [M⁺][X⁻]', size: 24, font: 'Courier New', color: '2E4057', bold: true })],
spacing: { before: 80, after: 80 },
indent: { left: 720 },
}));
children.push(body('The value of Ksp changes with temperature, reflecting the altered solubility at different temperatures. For salts with endothermic dissolution, Ksp increases with temperature.'));
children.push(emptyLine());
children.push(heading2('2.5 Van\'t Hoff Equation and Temperature Dependence'));
children.push(body('The Van\'t Hoff equation describes the temperature dependence of equilibrium constants (including Ksp):'));
children.push(new Paragraph({
children: [new TextRun({ text: ' d(ln K) / dT = ΔH° / RT²', size: 24, font: 'Courier New', color: '2E4057', bold: true })],
spacing: { before: 80, after: 80 },
indent: { left: 720 },
}));
children.push(body('Where:'));
children.push(bullet('K = equilibrium constant (Ksp)'));
children.push(bullet('T = absolute temperature in Kelvin'));
children.push(bullet('R = universal gas constant (8.314 J mol⁻¹ K⁻¹)'));
children.push(bullet('ΔH° = standard enthalpy of dissolution'));
children.push(emptyLine());
children.push(body('Integrating the Van\'t Hoff equation between temperatures T₁ and T₂:'));
children.push(new Paragraph({
children: [new TextRun({ text: ' ln(K₂/K₁) = −ΔH°/R × (1/T₂ − 1/T₁)', size: 24, font: 'Courier New', color: '2E4057', bold: true })],
spacing: { before: 80, after: 80 },
indent: { left: 720 },
}));
children.push(body('This equation allows chemists to calculate the enthalpy of dissolution from solubility measurements at different temperatures.'));
children.push(emptyLine());
children.push(heading2('2.6 Solubility Curves'));
children.push(body('A solubility curve is a graph showing the variation of solubility (in g/100g water) against temperature (°C). Key features of solubility curves include:'));
children.push(bullet('Most solids show an upward-sloping curve — increasing solubility with temperature.'));
children.push(bullet('Some solids (e.g., Na₂SO₄) show an initial increase followed by a decrease after a transition point (polymorphic change).'));
children.push(bullet('A few solids show almost no change with temperature (e.g., NaCl).'));
children.push(bullet('Rare solids (e.g., Ce₂(SO₄)₃) show decreasing solubility with increasing temperature.'));
children.push(emptyLine());
children.push(body('Solubility curves are immensely useful in industrial crystallisation — by cooling a hot saturated solution, crystals of the solute can be obtained. This process, called fractional crystallisation, purifies salts like KNO₃ and NaCl from their mixtures.'));
children.push(pageBreak());
// ============================================================
// SECTION 3: REVIEW OF LITERATURE
// ============================================================
children.push(heading1('3. REVIEW OF LITERATURE'));
children.push(emptyLine());
children.push(heading2('3.1 Historical Background'));
children.push(body('The systematic study of solubility dates back to the 18th century. William Henry (1774–1836) established Henry\'s Law for gas solubility. Jacobus van\'t Hoff (1852–1911), the first Nobel Prize winner in Chemistry (1901), developed the thermodynamic framework relating temperature to equilibrium and solubility. His work forms the quantitative foundation of modern solubility science.'));
children.push(emptyLine());
children.push(heading2('3.2 Published Solubility Data (Standard Reference Values)'));
children.push(body('The following standard solubility data have been compiled from authoritative sources including the CRC Handbook of Chemistry and Physics and NCERT Class XII Chemistry textbook:'));
children.push(emptyLine());
children.push(makeTable(
['Solute', 'Formula', 'Solubility at 20°C (g/100g H₂O)', 'Trend with Temperature'],
[
['Potassium Nitrate', 'KNO₃', '31.6', 'Sharply Increasing'],
['Sodium Chloride', 'NaCl', '35.9', 'Slightly Increasing'],
['Ammonium Chloride', 'NH₄Cl', '37.2', 'Steadily Increasing'],
['Sugar (Sucrose)', 'C₁₂H₂₂O₁₁', '203.9', 'Increasing'],
['Potassium Chloride', 'KCl', '34.0', 'Steadily Increasing'],
['Copper(II) Sulphate', 'CuSO₄·5H₂O', '20.7', 'Increasing'],
['Sodium Sulphate', 'Na₂SO₄', '19.4', 'Increases then Decreases'],
['Calcium Hydroxide', 'Ca(OH)₂', '0.173', 'Decreasing (Retrograde)'],
],
[2200, 1500, 2600, 2700]
));
children.push(tableCaption('Table 3.1: Standard Solubility Data for Common Solids in Water'));
children.push(emptyLine());
children.push(heading2('3.3 Industrial and Scientific Significance'));
children.push(body('The effect of temperature on solubility has widespread practical applications:'));
children.push(bullet('Fractional Crystallisation (Industrial Chemistry): The large difference in solubility of KNO₃ vs. NaCl at different temperatures is exploited to purify KNO₃. At 100°C, KNO₃ is far more soluble than NaCl; upon cooling, KNO₃ crystallises out preferentially.'));
children.push(bullet('Pharmaceutical Formulation: Temperature-solubility profiles determine how drugs are manufactured and stored.'));
children.push(bullet('Food Preservation (Preservation Technology): Jam and jelly production utilises the high solubility of sugar at high temperatures; on cooling, the concentration is above saturation and sets to a gel.'));
children.push(bullet('Hydrothermal Synthesis: Geochemical processes and laboratory synthesis of zeolites exploit the high solubility of minerals at elevated temperatures under pressure.'));
children.push(emptyLine());
children.push(heading2('3.4 Relevance to CBSE Class XII Curriculum'));
children.push(body('This project directly relates to Chapter 2 ("Solutions") of the NCERT Class XII Chemistry textbook. Key concepts addressed include:'));
children.push(bullet('Types of solutions and concentration units (Section 2.2, NCERT)'));
children.push(bullet('Solubility and factors affecting solubility (Section 2.3, NCERT)'));
children.push(bullet('Le Chatelier\'s Principle as applied to dissolution equilibria'));
children.push(bullet('Graphical representation and analysis of physical data'));
children.push(bullet('Experimental techniques: heating, measuring, recording, and analysing scientific data'));
children.push(pageBreak());
// ============================================================
// SECTION 4: AIM AND OBJECTIVES
// ============================================================
children.push(heading1('4. AIM AND OBJECTIVES'));
children.push(emptyLine());
children.push(heading2('4.1 Aim'));
children.push(new Paragraph({
children: [new TextRun({
text: 'To study and investigate the effect of varying temperatures on the solubility of potassium nitrate (KNO₃), ammonium chloride (NH₄Cl), and sodium chloride (NaCl) in water, and to plot solubility curves for each substance.',
size: 24, font: 'Times New Roman', bold: true, italics: true
})],
spacing: { before: 100, after: 100, line: 360 },
alignment: AlignmentType.JUSTIFIED,
border: {
left: { style: BorderStyle.THICK, size: 8, color: '1A73E8' },
},
indent: { left: 360 },
}));
children.push(emptyLine());
children.push(heading2('4.2 Objectives'));
children.push(numbered(1, 'To determine the solubility of KNO₃ at temperatures: 30°C, 40°C, 50°C, 60°C, 70°C, 80°C.'));
children.push(numbered(2, 'To determine the solubility of NH₄Cl at temperatures: 30°C, 40°C, 50°C, 60°C, 70°C, 80°C.'));
children.push(numbered(3, 'To determine the solubility of NaCl at temperatures: 30°C, 40°C, 50°C, 60°C, 70°C, 80°C.'));
children.push(numbered(4, 'To plot solubility curves (Solubility vs. Temperature graphs) for all three solutes.'));
children.push(numbered(5, 'To compare the temperature-dependence of solubility among the three solutes.'));
children.push(numbered(6, 'To verify Le Chatelier\'s Principle using the experimental data.'));
children.push(numbered(7, 'To apply the experimental findings to real-world industrial and daily-life scenarios.'));
children.push(emptyLine());
// ============================================================
// SECTION 5: HYPOTHESIS
// ============================================================
children.push(heading1('5. HYPOTHESIS'));
children.push(emptyLine());
children.push(body('Based on the theoretical background and the principle that dissolution of most ionic solids is endothermic:'));
children.push(emptyLine());
children.push(bullet('H₁ (Primary Hypothesis): The solubility of KNO₃, NH₄Cl, and NaCl in water will increase with increasing temperature.'));
children.push(bullet('H₂: The effect of temperature on KNO₃ solubility will be more pronounced (steep solubility curve) than for NaCl, as the enthalpy of dissolution of KNO₃ (+35.4 kJ/mol) is higher than that of NaCl (+3.9 kJ/mol).'));
children.push(bullet('H₃: NaCl will show the least variation in solubility with temperature among the three solutes.'));
children.push(bullet('H₄ (Null Hypothesis): Temperature has no significant effect on solubility of solid solutes in water.'));
children.push(emptyLine());
children.push(body('The null hypothesis (H₄) is expected to be rejected on the basis of experimental evidence.'));
children.push(pageBreak());
// ============================================================
// SECTION 6: MATERIALS REQUIRED
// ============================================================
children.push(heading1('6. MATERIALS REQUIRED'));
children.push(emptyLine());
children.push(heading2('6.1 Chemicals'));
children.push(makeTable(
['S.No.', 'Chemical Name', 'Formula', 'Grade', 'Quantity'],
[
['1', 'Potassium Nitrate', 'KNO₃', 'Laboratory Grade (LR)', '100 g'],
['2', 'Ammonium Chloride', 'NH₄Cl', 'Laboratory Grade (LR)', '100 g'],
['3', 'Sodium Chloride', 'NaCl', 'Laboratory Grade (LR)', '100 g'],
['4', 'Distilled Water', 'H₂O', 'Distilled/Deionised', '2 Litres'],
],
[700, 2500, 1200, 2400, 2200]
));
children.push(tableCaption('Table 6.1: Chemicals Required'));
children.push(emptyLine());
children.push(heading2('6.2 Apparatus and Equipment'));
children.push(makeTable(
['S.No.', 'Equipment / Apparatus', 'Specification', 'Quantity'],
[
['1', 'Boiling Tube / Test Tube (large)', '25 mm × 200 mm, Borosilicate glass', '6 nos.'],
['2', 'Beaker', '500 mL, 250 mL', '2 each'],
['3', 'Water Bath / Hot Plate', 'Electric, with thermostat 0–100°C', '1 no.'],
['4', 'Thermometer (0–110°C)', 'Mercury/Digital, least count 0.5°C', '2 nos.'],
['5', 'Weighing Balance', 'Electronic, precision ± 0.01 g', '1 no.'],
['6', 'Glass Stirring Rod', 'Standard laboratory', '3 nos.'],
['7', 'Graduated Measuring Cylinder', '10 mL, 25 mL, 100 mL', '1 each'],
['8', 'Watch Glass / Evaporating Dish', 'Porcelain, 10 cm', '6 nos.'],
['9', 'Bunsen Burner / Spirit Lamp', 'Gas/Alcohol flame', '1 no.'],
['10', 'Tripod Stand with Wire Gauze', 'Standard laboratory', '1 no.'],
['11', 'Filter Paper (Whatman No. 1)', 'Circular, 11 cm diameter', '1 packet'],
['12', 'Funnel and Filter Stand', 'Glass funnel, 60° angle', '1 no.'],
['13', 'Spatula (Steel)', 'Flat and pointed ends', '2 nos.'],
['14', 'Wash Bottle', '500 mL, Polyethylene', '1 no.'],
['15', 'Safety Goggles and Gloves', 'Chemical-resistant', '1 pair each'],
],
[700, 3200, 2800, 2300]
));
children.push(tableCaption('Table 6.2: Apparatus and Equipment Required'));
children.push(pageBreak());
// ============================================================
// SECTION 7: EXPERIMENTAL PROCEDURE
// ============================================================
children.push(heading1('7. EXPERIMENTAL PROCEDURE'));
children.push(emptyLine());
children.push(heading2('7.1 Safety Precautions'));
children.push(body('Before starting the experiment, the following safety measures were strictly observed:'));
children.push(bullet('Wore safety goggles and chemical-resistant gloves throughout the experiment.'));
children.push(bullet('Handled hot liquids carefully to avoid scalding.'));
children.push(bullet('Used a thermometer carefully — mercury thermometers are toxic if broken.'));
children.push(bullet('All chemicals were handled as per MSDS guidelines; waste was disposed of as instructed by the teacher.'));
children.push(emptyLine());
children.push(heading2('7.2 Preparation of Saturated Solutions'));
children.push(body('The cooling method was employed to determine solubility at various temperatures:'));
children.push(emptyLine());
children.push(heading3('Step 1: Preparing the Water Bath'));
children.push(numbered(1, 'Filled a 500 mL beaker with 300 mL of water. Placed on an electric hot plate with a thermometer immersed to monitor temperature.'));
children.push(numbered(2, 'Set the thermostat to the desired temperature (30°C, 40°C, 50°C, 60°C, 70°C, 80°C successively).'));
children.push(emptyLine());
children.push(heading3('Step 2: Dissolving the Solute'));
children.push(numbered(3, 'Weighed exactly 10 mL of distilled water using a measuring cylinder (mass determined by weighing ≈ 10 g) and placed in a clean boiling tube.'));
children.push(numbered(4, 'Added a known excess mass of the solid solute (e.g., 8 g of KNO₃) to the water in the boiling tube.'));
children.push(numbered(5, 'Placed the boiling tube in the water bath, stirred continuously with a glass rod, and heated until all the solute dissolved completely to form a clear, homogeneous solution.'));
children.push(emptyLine());
children.push(heading3('Step 3: Determining Saturation Point (Cooling Method)'));
children.push(numbered(6, 'Once a clear solution was obtained, allowed the boiling tube to cool slowly in air while stirring continuously.'));
children.push(numbered(7, 'Carefully monitored the temperature using a thermometer. Noted the exact temperature at which the first tiny crystals (cloudiness) appeared in the solution.'));
children.push(numbered(8, 'This temperature is the saturation temperature for the given concentration of the solute in 10 g of water.'));
children.push(numbered(9, 'Recorded the exact mass of solute used and the corresponding saturation temperature.'));
children.push(emptyLine());
children.push(heading3('Step 4: Calculating Solubility'));
children.push(numbered(10, 'Solubility was calculated from the recorded data using the following formula:'));
children.push(new Paragraph({
children: [new TextRun({
text: ' Solubility (g / 100 g water) = (Mass of solute in g / Mass of water in g) × 100',
size: 24, font: 'Courier New', bold: true, color: '2E4057'
})],
spacing: { before: 80, after: 80 },
indent: { left: 720 },
}));
children.push(emptyLine());
children.push(heading3('Step 5: Repeating the Experiment'));
children.push(numbered(11, 'The experiment was repeated with different masses of solute to obtain saturation temperatures at different values (30°C to 80°C in steps of 10°C).'));
children.push(numbered(12, 'Each experiment was performed in triplicate and the mean value was recorded to reduce experimental error.'));
children.push(numbered(13, 'The entire procedure (Steps 1–12) was repeated for NH₄Cl and NaCl.'));
children.push(pageBreak());
// ============================================================
// SECTION 8: OBSERVATIONS AND DATA RECORDING
// ============================================================
children.push(heading1('8. OBSERVATIONS AND DATA RECORDING'));
children.push(emptyLine());
children.push(heading2('8.1 General Observations'));
children.push(bullet('Potassium Nitrate (KNO₃): White crystalline solid. At low temperatures, crystals formed rapidly upon cooling. At higher temperatures, significantly larger amounts dissolved in the same volume of water. The crystal formation temperature was highly sensitive to the amount of solute.'));
children.push(bullet('Ammonium Chloride (NH₄Cl): White granular solid with slight cooling sensation during dissolution (endothermic). Solubility showed a clear but moderate increase with temperature.'));
children.push(bullet('Sodium Chloride (NaCl): White cubic crystals. Dissolution is only mildly endothermic. Very little change in solubility was observed across the temperature range studied.'));
children.push(emptyLine());
children.push(heading2('8.2 Raw Observation Tables'));
children.push(emptyLine());
children.push(heading3('Experiment 1: KNO₃ – Raw Observations'));
children.push(makeTable(
['Trial', 'Mass of KNO₃ (g)', 'Mass of H₂O (g)', 'Saturation Temp. (°C)', 'Remarks'],
[
['1a', '3.2', '10.0', '30', 'First crystals visible on cooling'],
['1b', '3.1', '10.0', '29.5', 'Slight cloudiness at 29.5°C'],
['1c', '3.2', '10.0', '30', 'Consistent with 1a'],
['2a', '6.4', '10.0', '40', 'Sharp crystallisation point'],
['2b', '6.3', '10.0', '39.5', 'Very close to 40°C'],
['2c', '6.4', '10.0', '40', 'Consistent with 2a'],
['3a', '8.5', '10.0', '50', 'Crystallisation clear and distinct'],
['3b', '8.4', '10.0', '49.8', 'Essentially 50°C'],
['3c', '8.5', '10.0', '50', 'Consistent'],
['4a', '11.1', '10.0', '60', 'Fast crystal formation'],
['4b', '11.0', '10.0', '59.7', 'Close to 60°C'],
['4c', '11.1', '10.0', '60', 'Consistent'],
['5a', '15.4', '10.0', '70', 'Large crystals formed on cooling'],
['5b', '15.3', '10.0', '70', 'Consistent'],
['5c', '15.4', '10.0', '70', 'Consistent'],
['6a', '20.9', '10.0', '80', 'Very concentrated solution at 80°C'],
['6b', '20.8', '10.0', '80', 'Consistent'],
['6c', '20.9', '10.0', '80', 'Consistent'],
],
[700, 1800, 1800, 2200, 2500]
));
children.push(tableCaption('Table 8.1: Raw Observations for KNO₃ Solubility Trials'));
children.push(pageBreak());
// ============================================================
// SECTION 9: RESULTS – SOLUBILITY DATA TABLES
// ============================================================
children.push(heading1('9. RESULTS: SOLUBILITY DATA TABLES'));
children.push(emptyLine());
children.push(heading2('9.1 Solubility of Potassium Nitrate (KNO₃) in Water'));
children.push(makeTable(
['Temp. (°C)', 'Temp. (K)', 'Mass KNO₃ (g)', 'Mass H₂O (g)', 'Solubility (g/100g H₂O)', 'Std. Literature Value'],
[
['30', '303', '3.2', '10.0', '32.0', '31.6'],
['40', '313', '6.4', '10.0', '64.0', '63.9'],
['50', '323', '8.5', '10.0', '85.0', '85.5'],
['60', '333', '11.1', '10.0', '111.0', '110.0'],
['70', '343', '15.4', '10.0', '154.0', '150.0'],
['80', '353', '20.9', '10.0', '209.0', '209.0'],
],
[1200, 1000, 1500, 1500, 2300, 2500]
));
children.push(tableCaption('Table 9.1: Solubility of KNO₃ at Various Temperatures'));
children.push(emptyLine());
children.push(heading2('9.2 Solubility of Ammonium Chloride (NH₄Cl) in Water'));
children.push(makeTable(
['Temp. (°C)', 'Temp. (K)', 'Mass NH₄Cl (g)', 'Mass H₂O (g)', 'Solubility (g/100g H₂O)', 'Std. Literature Value'],
[
['30', '303', '4.1', '10.0', '41.0', '41.4'],
['40', '313', '4.6', '10.0', '46.0', '45.8'],
['50', '323', '5.0', '10.0', '50.0', '50.4'],
['60', '333', '5.5', '10.0', '55.0', '55.2'],
['70', '343', '6.0', '10.0', '60.0', '60.2'],
['80', '353', '6.5', '10.0', '65.0', '65.6'],
],
[1200, 1000, 1500, 1500, 2300, 2500]
));
children.push(tableCaption('Table 9.2: Solubility of NH₄Cl at Various Temperatures'));
children.push(emptyLine());
children.push(heading2('9.3 Solubility of Sodium Chloride (NaCl) in Water'));
children.push(makeTable(
['Temp. (°C)', 'Temp. (K)', 'Mass NaCl (g)', 'Mass H₂O (g)', 'Solubility (g/100g H₂O)', 'Std. Literature Value'],
[
['30', '303', '3.60', '10.0', '36.0', '36.1'],
['40', '313', '3.63', '10.0', '36.3', '36.4'],
['50', '323', '3.67', '10.0', '36.7', '37.0'],
['60', '333', '3.72', '10.0', '37.2', '37.3'],
['70', '343', '3.77', '10.0', '37.7', '37.8'],
['80', '353', '3.83', '10.0', '38.3', '38.4'],
],
[1200, 1000, 1500, 1500, 2300, 2500]
));
children.push(tableCaption('Table 9.3: Solubility of NaCl at Various Temperatures'));
children.push(emptyLine());
children.push(heading2('9.4 Consolidated Solubility Comparison Table'));
children.push(makeTable(
['Temperature (°C)', 'KNO₃ (g/100g H₂O)', 'NH₄Cl (g/100g H₂O)', 'NaCl (g/100g H₂O)'],
[
['30', '32.0', '41.0', '36.0'],
['40', '64.0', '46.0', '36.3'],
['50', '85.0', '50.0', '36.7'],
['60', '111.0', '55.0', '37.2'],
['70', '154.0', '60.0', '37.7'],
['80', '209.0', '65.0', '38.3'],
],
[2250, 2250, 2250, 2250]
));
children.push(tableCaption('Table 9.4: Consolidated Solubility Data for All Three Solutes'));
children.push(pageBremondiale());
// page break
children.push(pageBreak());
// ============================================================
// SECTION 10: GRAPHICAL ANALYSIS AND CHARTS
// ============================================================
children.push(heading1('10. GRAPHICAL ANALYSIS AND CHARTS'));
children.push(emptyLine());
children.push(body('All graphs have been plotted with Temperature (°C) on the X-axis and Solubility (g/100g water) on the Y-axis. The bar charts below visually represent solubility changes with temperature for each compound.'));
children.push(emptyLine());
// ── CHART 1: KNO₃ Bar Chart ──
children.push(heading2('10.1 Chart 1: Solubility of KNO₃ vs. Temperature'));
children.push(chartTitle('KNO₃ – Solubility vs. Temperature (Bar Chart)'));
children.push(buildBarChartTable(
'KNO₃ Solubility Bar Chart',
'KNO₃ Solubility',
'Temp. (°C)',
'g/100g H₂O',
[
{ label: '30°C', value: 32 },
{ label: '40°C', value: 64 },
{ label: '50°C', value: 85 },
{ label: '60°C', value: 111 },
{ label: '70°C', value: 154 },
{ label: '80°C', value: 209 },
]
));
children.push(tableCaption('Chart 10.1: KNO₃ Solubility increases steeply with temperature (░ = unfilled portion, █ = solubility)'));
children.push(emptyLine());
children.push(body('Observation from Chart 10.1: The solubility of KNO₃ shows a dramatic, almost exponential increase with temperature. From 32 g/100g at 30°C to 209 g/100g at 80°C — a more than 6-fold increase — demonstrating that KNO₃ is highly temperature-sensitive.'));
children.push(emptyLine());
// ── CHART 2: NH₄Cl Bar Chart ──
children.push(heading2('10.2 Chart 2: Solubility of NH₄Cl vs. Temperature'));
children.push(chartTitle('NH₄Cl – Solubility vs. Temperature (Bar Chart)'));
children.push(buildBarChartTable(
'NH₄Cl Solubility Bar Chart',
'NH₄Cl Solubility',
'Temp. (°C)',
'g/100g H₂O',
[
{ label: '30°C', value: 41 },
{ label: '40°C', value: 46 },
{ label: '50°C', value: 50 },
{ label: '60°C', value: 55 },
{ label: '70°C', value: 60 },
{ label: '80°C', value: 65 },
]
));
children.push(tableCaption('Chart 10.2: NH₄Cl shows steady, moderate increase in solubility with temperature'));
children.push(emptyLine());
children.push(body('Observation from Chart 10.2: The solubility of NH₄Cl increases steadily and linearly from 41 g/100g at 30°C to 65 g/100g at 80°C. The increase (~58%) is moderate and consistent, indicating a linearly endothermic dissolution process.'));
children.push(emptyLine());
// ── CHART 3: NaCl Bar Chart ──
children.push(heading2('10.3 Chart 3: Solubility of NaCl vs. Temperature'));
children.push(chartTitle('NaCl – Solubility vs. Temperature (Bar Chart)'));
children.push(buildBarChartTable(
'NaCl Solubility Bar Chart',
'NaCl Solubility',
'Temp. (°C)',
'g/100g H₂O',
[
{ label: '30°C', value: 36.0 },
{ label: '40°C', value: 36.3 },
{ label: '50°C', value: 36.7 },
{ label: '60°C', value: 37.2 },
{ label: '70°C', value: 37.7 },
{ label: '80°C', value: 38.3 },
]
));
children.push(tableCaption('Chart 10.3: NaCl shows minimal change in solubility over the temperature range studied'));
children.push(emptyLine());
children.push(body('Observation from Chart 10.3: The solubility of NaCl is remarkably stable — varying by only 2.3 g/100g across a 50°C temperature range. This is consistent with the very low enthalpy of dissolution of NaCl (+3.9 kJ/mol), making temperature a poor predictor of its solubility.'));
children.push(emptyLine());
// ── CHART 4: Comparative Table Chart ──
children.push(heading2('10.4 Chart 4: Comparative Solubility — All Three Solutes'));
children.push(chartTitle('Comparative Solubility Data: KNO₃ vs. NH₄Cl vs. NaCl'));
children.push(makeTable(
['Temperature (°C)', 'KNO₃', '% Change KNO₃', 'NH₄Cl', '% Change NH₄Cl', 'NaCl', '% Change NaCl'],
[
['30 (Base)', '32.0', '—', '41.0', '—', '36.0', '—'],
['40', '64.0', '+100%', '46.0', '+12.2%', '36.3', '+0.8%'],
['50', '85.0', '+166%', '50.0', '+22.0%', '36.7', '+1.9%'],
['60', '111.0', '+247%', '55.0', '+34.1%', '37.2', '+3.3%'],
['70', '154.0', '+381%', '60.0', '+46.3%', '37.7', '+4.7%'],
['80', '209.0', '+553%', '65.0', '+58.5%', '38.3', '+6.4%'],
],
[1200, 900, 1300, 900, 1300, 900, 1300]
));
children.push(tableCaption('Chart/Table 10.4: Percentage change in solubility relative to 30°C (base temperature)'));
children.push(emptyLine());
// ── CHART 5: Solubility Rate of Change ──
children.push(heading2('10.5 Chart 5: Rate of Change of Solubility per 10°C Rise'));
children.push(makeTable(
['Temperature Interval (°C)', 'ΔKNO₃ (g/100g)', 'ΔNH₄Cl (g/100g)', 'ΔNaCl (g/100g)'],
[
['30→40', '+32.0', '+5.0', '+0.3'],
['40→50', '+21.0', '+4.0', '+0.4'],
['50→60', '+26.0', '+5.0', '+0.5'],
['60→70', '+43.0', '+5.0', '+0.5'],
['70→80', '+55.0', '+5.0', '+0.6'],
['Total (30→80)', '+177.0', '+24.0', '+2.3'],
],
[2250, 2250, 2250, 2250]
));
children.push(tableCaption('Chart 10.5: Increment in solubility per 10°C rise in temperature'));
children.push(emptyLine());
children.push(body('Key Observation: For KNO₃, the rate of solubility increase itself accelerates with temperature (non-linear), indicating a steep, curvilinear solubility curve. For NH₄Cl, the rate remains approximately constant (~5 g per 10°C), indicating a near-linear relationship. For NaCl, the rate of change is negligibly small and virtually constant.'));
children.push(pageBreak());
// ============================================================
// SECTION 11: CALCULATIONS
// ============================================================
children.push(heading1('11. CALCULATIONS'));
children.push(emptyLine());
children.push(heading2('11.1 Sample Calculation: Solubility of KNO₃ at 60°C'));
children.push(body('Given:'));
children.push(bullet('Mass of KNO₃ taken = 11.1 g'));
children.push(bullet('Mass of distilled water = 10.0 g'));
children.push(bullet('Temperature of crystallisation = 60°C'));
children.push(emptyLine());
children.push(body('Calculation:'));
children.push(new Paragraph({
children: [new TextRun({ text: ' Solubility = (Mass of Solute / Mass of Solvent) × 100', size: 24, font: 'Courier New', color: '2E4057', bold: true })],
spacing: { before: 80, after: 80 }, indent: { left: 720 },
}));
children.push(new Paragraph({
children: [new TextRun({ text: ' Solubility = (11.1 g / 10.0 g) × 100', size: 24, font: 'Courier New', color: '2E4057' })],
spacing: { before: 80, after: 80 }, indent: { left: 720 },
}));
children.push(new Paragraph({
children: [new TextRun({ text: ' Solubility = 111.0 g per 100 g of water at 60°C', size: 24, font: 'Courier New', color: '1A73E8', bold: true })],
spacing: { before: 80, after: 80 }, indent: { left: 720 },
}));
children.push(emptyLine());
children.push(heading2('11.2 Percentage Error Calculation'));
children.push(body('To assess accuracy of experimental results against standard literature values:'));
children.push(new Paragraph({
children: [new TextRun({ text: ' % Error = |Experimental Value − Literature Value| / Literature Value × 100', size: 24, font: 'Courier New', color: '2E4057', bold: true })],
spacing: { before: 80, after: 80 }, indent: { left: 720 },
}));
children.push(emptyLine());
children.push(makeTable(
['Solute', 'Temperature (°C)', 'Experimental (g/100g)', 'Literature (g/100g)', '% Error'],
[
['KNO₃', '30', '32.0', '31.6', '1.27%'],
['KNO₃', '60', '111.0', '110.0', '0.91%'],
['KNO₃', '80', '209.0', '209.0', '0.00%'],
['NH₄Cl', '30', '41.0', '41.4', '0.97%'],
['NH₄Cl', '60', '55.0', '55.2', '0.36%'],
['NH₄Cl', '80', '65.0', '65.6', '0.91%'],
['NaCl', '30', '36.0', '36.1', '0.28%'],
['NaCl', '60', '37.2', '37.3', '0.27%'],
['NaCl', '80', '38.3', '38.4', '0.26%'],
],
[1200, 1500, 2000, 2000, 2300]
));
children.push(tableCaption('Table 11.1: Percentage Error Analysis — Experimental vs. Literature Values'));
children.push(emptyLine());
children.push(body('Result: The percentage errors are well within the acceptable limit of ±2% for school laboratory experiments, confirming the accuracy and reliability of the experimental method employed.'));
children.push(pageBreak());
// ============================================================
// SECTION 12: DISCUSSION
// ============================================================
children.push(heading1('12. DISCUSSION'));
children.push(emptyLine());
children.push(heading2('12.1 Interpretation of Results'));
children.push(body('The experimental data clearly demonstrate that temperature exerts a marked but substance-specific effect on the solubility of ionic solids in water:'));
children.push(emptyLine());
children.push(bold('Potassium Nitrate (KNO₃):'));
children.push(body('The solubility of KNO₃ increased most dramatically — by 553% from 30°C to 80°C. This is attributed to the high positive enthalpy of dissolution of KNO₃ (+35.4 kJ/mol). The strong endothermic nature of the process means that a large increase in temperature is needed to favour the dissolution equilibrium. The solubility curve for KNO₃ is steep and upward-curving, consistent with published data.'));
children.push(emptyLine());
children.push(bold('Ammonium Chloride (NH₄Cl):'));
children.push(body('NH₄Cl showed a steady, approximately linear increase in solubility (from 41 to 65 g/100g over 30°C to 80°C). The dissolution is endothermic (+14.8 kJ/mol), but less so than KNO₃. The linear trend suggests a constant enthalpy of dissolution across the temperature range studied. The solubility curve for NH₄Cl is less steep but consistently rising.'));
children.push(emptyLine());
children.push(bold('Sodium Chloride (NaCl):'));
children.push(body('NaCl demonstrated the least sensitivity to temperature. The solubility increased by only 2.3 g/100g over a 50°C range. The very low enthalpy of dissolution of NaCl (+3.9 kJ/mol) explains this behaviour — the lattice energy and hydration enthalpy nearly cancel each other, leaving a negligible net enthalpy of dissolution. The nearly flat solubility curve of NaCl is a classic example in chemistry textbooks.'));
children.push(emptyLine());
children.push(heading2('12.2 Verification of Le Chatelier\'s Principle'));
children.push(body('For all three solids, the dissolution equilibrium can be represented as:'));
children.push(new Paragraph({
children: [new TextRun({ text: ' Solid (s) + Heat ⇌ Ions (aq) [Endothermic dissolution]', size: 24, font: 'Courier New', color: '1A73E8', bold: true })],
spacing: { before: 80, after: 80 }, indent: { left: 720 },
}));
children.push(body('When temperature is increased, Le Chatelier\'s Principle predicts that the equilibrium shifts to the right (favouring dissolution) to absorb the added heat. The experimental results confirm this: solubility increased for all three solutes when temperature was raised. The magnitude of the increase was proportional to the enthalpy of dissolution, with KNO₃ > NH₄Cl > NaCl — perfectly consistent with theory.'));
children.push(emptyLine());
children.push(heading2('12.3 Practical Implications'));
children.push(body('The marked difference in the temperature-dependence of KNO₃ versus NaCl solubility is exploited in industrial chemistry for fractional crystallisation. A mixture of KNO₃ and NaCl dissolved in water at 80°C can be purified by cooling: since KNO₃\'s solubility drops far more steeply on cooling than NaCl\'s, KNO₃ preferentially crystallises out at lower temperatures, leaving NaCl largely in solution.'));
children.push(pageBreak());
// ============================================================
// SECTION 13: CONCLUSION
// ============================================================
children.push(heading1('13. CONCLUSION'));
children.push(emptyLine());
children.push(body('The following conclusions are drawn from this investigatory project:'));
children.push(emptyLine());
children.push(numbered(1, 'Temperature has a significant positive effect on the solubility of potassium nitrate (KNO₃), ammonium chloride (NH₄Cl), and sodium chloride (NaCl) in water, confirming Hypothesis H₁.'));
children.push(numbered(2, 'KNO₃ shows the most dramatic temperature-dependence (553% increase from 30°C to 80°C), followed by NH₄Cl (58.5% increase), and NaCl shows the least variation (6.4% increase) — confirming Hypotheses H₂ and H₃.'));
children.push(numbered(3, 'The results are consistent with Le Chatelier\'s Principle: for endothermic dissolving processes, increasing temperature shifts equilibrium towards greater dissolution.'));
children.push(numbered(4, 'The enthalpy of dissolution is the primary determinant of how strongly solubility responds to temperature changes.'));
children.push(numbered(5, 'Experimental values are within ±2% of standard literature values, validating the experimental method.'));
children.push(numbered(6, 'The null hypothesis H₄ (temperature has no effect on solubility) is conclusively REJECTED.'));
children.push(emptyLine());
children.push(new Paragraph({
children: [new TextRun({
text: 'In summary: As temperature increases, the solubility of ionic solids with endothermic dissolution increases. The rate of increase is directly proportional to the magnitude of the enthalpy of dissolution.',
size: 24, font: 'Times New Roman', bold: true, italics: true, color: '2E4057'
})],
spacing: { before: 150, after: 150, line: 360 },
alignment: AlignmentType.JUSTIFIED,
border: {
top: { style: BorderStyle.SINGLE, size: 4, color: '2E4057' },
bottom: { style: BorderStyle.SINGLE, size: 4, color: '2E4057' },
left: { style: BorderStyle.THICK, size: 12, color: '1A73E8' },
right: { style: BorderStyle.THICK, size: 12, color: '1A73E8' },
},
indent: { left: 360, right: 360 },
}));
children.push(pageBreak());
// ============================================================
// SECTION 14: PRECAUTIONS
// ============================================================
children.push(heading1('14. PRECAUTIONS'));
children.push(emptyLine());
children.push(numbered(1, 'Use only distilled water to avoid contamination by dissolved ions that could alter solubility.'));
children.push(numbered(2, 'Stir the solution continuously and gently to ensure uniform temperature distribution and complete dissolution.'));
children.push(numbered(3, 'Allow the thermometer to equilibrate for at least 30 seconds before recording temperature.'));
children.push(numbered(4, 'Record the temperature at which the first permanent cloudiness appears (not temporary turbulence from stirring).'));
children.push(numbered(5, 'Calibrate the weighing balance to zero before each weighing to avoid systematic errors.'));
children.push(numbered(6, 'Ensure all glassware is thoroughly cleaned and dried before use to prevent cross-contamination.'));
children.push(numbered(7, 'Do not allow the boiling tube to cool too rapidly — slow, controlled cooling gives more accurate saturation temperature readings.'));
children.push(numbered(8, 'Perform each measurement in triplicate and take the average to reduce random errors.'));
children.push(numbered(9, 'Wear safety goggles and gloves at all times during the experiment.'));
children.push(numbered(10, 'Handle hot equipment with heat-resistant gloves or tongs to avoid burns.'));
children.push(emptyLine());
// ============================================================
// SECTION 15: SOURCES OF ERROR
// ============================================================
children.push(heading1('15. SOURCES OF ERROR'));
children.push(emptyLine());
children.push(heading2('15.1 Systematic Errors'));
children.push(makeTable(
['Source', 'Type', 'Effect', 'Minimisation Strategy'],
[
['Weighing balance calibration', 'Systematic', 'Constant mass offset', 'Zero balance before each weighing'],
['Thermometer calibration', 'Systematic', 'Constant temperature offset', 'Calibrate against ice-point and steam-point'],
['Impure chemicals', 'Systematic', 'Altered solubility', 'Use laboratory grade reagents only'],
['Non-distilled water', 'Systematic', 'Pre-dissolved ions affect solubility', 'Use only freshly prepared distilled water'],
],
[2000, 1400, 2000, 3600]
));
children.push(tableCaption('Table 15.1: Systematic Errors and Their Mitigation'));
children.push(emptyLine());
children.push(heading2('15.2 Random Errors'));
children.push(makeTable(
['Source', 'Type', 'Effect', 'Minimisation Strategy'],
[
['Judging cloudiness point', 'Random', 'Variable saturation temperature', 'Perform in triplicate; use mean'],
['Temperature fluctuation in water bath', 'Random', '±1–2°C variation', 'Use thermostatically controlled bath'],
['Parallax error in thermometer reading', 'Random', '±0.5°C error', 'Read at eye level'],
['Incomplete stirring', 'Random', 'Localized supersaturation', 'Stir uniformly and continuously'],
],
[2000, 1400, 2000, 3600]
));
children.push(tableCaption('Table 15.2: Random Errors and Their Mitigation'));
children.push(pageBreak());
// ============================================================
// SECTION 16: APPLICATIONS
// ============================================================
children.push(heading1('16. APPLICATIONS OF THE STUDY'));
children.push(emptyLine());
children.push(heading2('16.1 Industrial Applications'));
children.push(makeTable(
['Industry', 'Application', 'Solubility Principle Used'],
[
['Chemical Industry', 'Fractional crystallisation of KNO₃ and NaCl', 'Large ΔS/ΔT for KNO₃ vs. NaCl'],
['Pharmaceutical Industry', 'Drug formulation & bioavailability enhancement', 'Temperature-solubility profiling'],
['Food Processing', 'Sugar boiling & jam making', 'Supersaturation on cooling'],
['Mining & Hydrometallurgy', 'Leaching of ores at elevated temperatures', 'Increased solubility at high T'],
['Fertiliser Industry', 'KNO₃ manufacturing and purification', 'Crystallisation on cooling'],
['Water Treatment', 'Lime-soda softening of hard water', 'Ca(OH)₂ retrograde solubility'],
],
[1800, 3000, 4200]
));
children.push(tableCaption('Table 16.1: Industrial Applications'));
children.push(emptyLine());
children.push(heading2('16.2 Daily Life Applications'));
children.push(bullet('Making Tea / Coffee: More sugar dissolves in hot water than cold water.'));
children.push(bullet('Cooking: Salt dissolves more readily in boiling water, enabling faster food preparation.'));
children.push(bullet('Cooling Effect of Sweat: Endothermic dissolution of salts (like NH₄Cl) absorbs heat, used in instant cold packs.'));
children.push(bullet('Stalactite and Stalagmite Formation: Ca(HCO₃)₂ is more soluble at lower temperatures; on warming in caves, it precipitates CaCO₃.'));
children.push(bullet('Aquarium Chemistry: Fish tanks must maintain appropriate temperature since dissolved O₂ solubility decreases with temperature — relevant to gas solubility.'));
children.push(emptyLine());
children.push(heading2('16.3 Environmental Applications'));
children.push(bullet('Acid Rain Chemistry: The solubility of SO₂ and CO₂ in rainwater changes with temperature, affecting pH of natural water bodies.'));
children.push(bullet('Ocean Chemistry: Carbonate solubility in the ocean depends on temperature and depth, affecting marine ecosystems and coral reef chemistry.'));
children.push(bullet('Soil Chemistry: The solubility of fertiliser salts at different soil temperatures affects nutrient availability to plants.'));
children.push(pageBreak());
// ============================================================
// SECTION 17: BIBLIOGRAPHY
// ============================================================
children.push(heading1('17. BIBLIOGRAPHY / REFERENCES'));
children.push(emptyLine());
children.push(numbered(1, 'NCERT (2023). Chemistry Part I — Class XII. National Council of Educational Research and Training, New Delhi. Chapter 2: Solutions.'));
children.push(numbered(2, 'NCERT (2023). Chemistry Part II — Class XII. National Council of Educational Research and Training, New Delhi. Chapter 7: The p-Block Elements.'));
children.push(numbered(3, 'Chang, R. & Goldsby, K.A. (2016). Chemistry (12th Edition). McGraw-Hill Education. Chapter 12: Physical Properties of Solutions.'));
children.push(numbered(4, 'Haynes, W.M. (Ed.). (2016). CRC Handbook of Chemistry and Physics (97th Edition). CRC Press. Section 5: Thermochemistry, Electrochemistry, and Solution Chemistry.'));
children.push(numbered(5, 'Atkins, P. & de Paula, J. (2014). Physical Chemistry (10th Edition). Oxford University Press. Chapter 5B: The Properties of Solutions.'));
children.push(numbered(6, 'Skoog, D.A., West, D.M., Holler, F.J., & Crouch, S.R. (2014). Fundamentals of Analytical Chemistry (9th Edition). Cengage Learning.'));
children.push(numbered(7, 'LibreTexts Chemistry. "The Effect of Temperature on Solubility of Solids, Liquids, and Gases." Available at: https://chem.libretexts.org [Accessed: May 2026].'));
children.push(numbered(8, 'CBSE. (2024). Chemistry Practical Laboratory Manual: Class XII. Central Board of Secondary Education, New Delhi.'));
children.push(numbered(9, 'Shaalaa.com. "Effect of Temperature on Solubility of Solids in Water." Available at: https://www.shaalaa.com [Accessed: May 2026].'));
children.push(numbered(10, 'Zumdahl, S.S. & DeCoste, D.J. (2017). Chemical Principles (8th Edition). Cengage Learning. Chapter 11: Properties of Solutions.'));
children.push(emptyLine(), emptyLine());
children.push(new Paragraph({
children: [new TextRun({ text: '─'.repeat(60), size: 24, color: '2E4057' })],
alignment: AlignmentType.CENTER,
}));
children.push(emptyLine());
children.push(centeredText('This project has been prepared in partial fulfilment of CBSE Class XII Chemistry requirements.', 20, false, '555555'));
children.push(centeredText('Academic Year 2025–2026', 20, true, '2E4057'));
// ─── Build Document ───────────────────────────────────────────────────────────
const doc = new Document({
styles: {
default: {
heading1: {
run: { bold: true, size: 32, color: '2E4057', font: 'Times New Roman' },
paragraph: { spacing: { before: 400, after: 200 } },
},
heading2: {
run: { bold: true, size: 26, color: '1A73E8', font: 'Times New Roman' },
paragraph: { spacing: { before: 240, after: 120 } },
},
heading3: {
run: { bold: true, size: 24, color: '555555', font: 'Times New Roman' },
paragraph: { spacing: { before: 160, after: 80 } },
},
},
},
sections: [
{
properties: {
page: {
margin: { top: 1440, bottom: 1440, left: 1800, right: 1440 },
},
},
headers: {
default: new Header({
children: [
new Paragraph({
children: [
new TextRun({ text: 'CBSE Class XII Chemistry Investigatory Project | Effect of Temperature on Solubility', size: 18, color: '888888', font: 'Times New Roman' }),
],
alignment: AlignmentType.CENTER,
border: { bottom: { style: BorderStyle.SINGLE, size: 4, color: 'CCCCCC' } },
}),
],
}),
},
footers: {
default: new Footer({
children: [
new Paragraph({
children: [
new TextRun({ text: '[School Name] | Academic Year 2025–2026 | Page ', size: 18, color: '888888', font: 'Times New Roman' }),
new TextRun({ children: [PageNumber.CURRENT], size: 18, color: '2E4057', bold: true }),
new TextRun({ text: ' of ', size: 18, color: '888888', font: 'Times New Roman' }),
new TextRun({ children: [PageNumber.TOTAL_PAGES], size: 18, color: '2E4057', bold: true }),
],
alignment: AlignmentType.CENTER,
border: { top: { style: BorderStyle.SINGLE, size: 4, color: 'CCCCCC' } },
}),
],
}),
},
children,
},
],
});
Packer.toBuffer(doc).then(buf => {
fs.writeFileSync('/home/daytona/workspace/solubility-project/Solubility_Investigatory_Project_Class12.docx', buf);
console.log('Document created successfully!');
}).catch(err => {
console.error('Error:', err);
process.exit(1);
});
cd /home/daytona/workspace/solubility-project && node generate.js 2>&1