
This Fortran repository contains a collection of scientific routines for soil science modeling. The modules focus on key processes such as soil moisture balance, infiltration, temperature dynamics, nutrient cycling, and soil respiration. All algorithms are implemented based on peer-reviewed literature and established guidelines to ensure scientific accuracy and reproducibility. The code is written in modern Fortran (Fortran 90+) and uses double precision for all floating-point calculations to ensure numerical stability. 🧩 Modules The library includes the following modules: SoilMoistureBalance_mod: Computes the daily soil water balance using the FAO-56 methodology. InfiltrationGreenAmpt_mod: Implements the Green-Ampt model for calculating infiltration capacity. SoilTemperatureProfile_mod: Simulates the soil temperature profile using the Fourier heat conduction equation. NitrogenMineralization_mod: Estimates net nitrogen mineralization rates based on the CENTURY model approach. SoilRespiration_mod: Calculates heterotrophic respiration rates using the Q10 temperature function. BulkDensityCalc_mod: Computes soil bulk density from particle density and porosity. SoilWaterRetention_mod: Implements the van Genuchten equation to estimate the soil water retention curve. EvapotranspirationPenmanMonteith_mod: Calculates reference evapotranspiration using the FAO-56 Penman-Monteith equation. SoilCarbonDecomposition_mod: Models soil organic carbon decomposition using first-order decay kinetics. SoilErosionEstimate_mod: Provides a simplified soil erosion estimate using the Universal Soil Loss Equation (USLE) factors. 👷♂️Installation and Building The project uses a Makefile for building the source code and running tests. The build process requires the Intel Fortran Compiler (ifx). To build the test executable, run the following command in the root directory of the project: make This will compile all the source files and create an executable named test_runner.exe. To run the test suite, execute: make run_tests To clean up all build artifacts, run: make clean ⚓ Usage The modules are designed to be easily integrated into other Fortran projects. To use a specific routine, you need to include the corresponding module with a use statement. For example, to use the BulkDensityCalc subroutine: program my_model use kind_mod, only: dp use BulkDensityCalc_mod, only: BulkDensityCalc implicit none real(kind=dp) :: particle_density, porosity, bulk_density particle_density = 2650.0_dp porosity = 0.4_dp call BulkDensityCalc(particle_density, porosity, bulk_density) print *, "Calculated Bulk Density:", bulk_density end program my_model 👨🔬 Scientific Background and Implementation Notes The routines in this library are based on established models from the soil science literature. Each module's source file contains a reference to the primary literature source for the implemented algorithm. 📝 A Note on Exponentiation To ensure cross-compiler consistency and avoid potential quirks in how different compilers handle floating-point exponentiation, non-integer power calculations (i.e., x**y) have been implemented using the exp(y * log(x)) formulation. This is a standard practice in scientific computing to improve reproducibility. 📜 License This project is licensed under a custom non-commercial license. ✅ Free for personal, academic, and research use. ❌ Commercial use is strictly prohibited without a separate license. For commercial licensing inquiries, please contact me at ** s i a d s i m @ g m a i l . c o m **.
Reproducible Science, Soil Temperature, Soil Respiration, Nutrient Cycling, Fortran, Soil Water Dynamics, Infiltration, Soil Science, Scientific Computing, Environmental Modeling, Biogeochemistry, Soil Modeling
Reproducible Science, Soil Temperature, Soil Respiration, Nutrient Cycling, Fortran, Soil Water Dynamics, Infiltration, Soil Science, Scientific Computing, Environmental Modeling, Biogeochemistry, Soil Modeling
| selected citations These citations are derived from selected sources. This is an alternative to the "Influence" indicator, which also reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically). | 0 | |
| popularity This indicator reflects the "current" impact/attention (the "hype") of an article in the research community at large, based on the underlying citation network. | Average | |
| influence This indicator reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically). | Average | |
| impulse This indicator reflects the initial momentum of an article directly after its publication, based on the underlying citation network. | Average |
