Volume-09 Issue 10, October-2025 ISSN: 2456-9348 Impact Factor: 8.232 International Journal of Engineering Technology Research Management (IJETRM) https://ijetrm.com/ IJETRM (http://ijetrm.com/) [178] A PYTHON-BASED SOFTWARE FRAMEWORK FOR CLIMATE-DRIVEN DETERIORATION MODELING OF REINFORCED CONCRETE BRIDGES: APPLICATION TO THE IMO RIVER BRIDGE, NIGERIA Oladapo A. Morakinyo 1 Nnamdi P. Ogbonna2, 1,2 Lecturer, Civil Engineering Department, Federal Polytechnic Nekede, Owerri, Nigeria
[email protected] ABSTRACT Reinforced concrete (RC) bridges in coastal and humid tropical regions are highly vulnerable to climate-induced deterioration, primarily due to chloride ingress and carbonation. This paper presents a Python-based software framework designed to integrate satellite-based climatic data and deterioration models for assessing the service life of RC bridges. The framework automates the retrieval of meteorological variables—including rainfall, temperature, humidity, and wind speed—via the NASA POWER database and applies chloride ingress and carbonation depth models to simulate degradation trends. Using the Imo River Bridge in southeastern Nigeria as a case study, the study demonstrates how climate-driven deterioration can be quantified programmatically, thereby supporting predictive maintenance planning. Results reveal increasing vulnerability to chloride penetration and carbonation under projected climatic conditions. The developed framework contributes to the emerging field of climate-resilient structural engineering by providing an open, adaptable tool for practitioners and researchers. Keywords: Reinforced concrete bridges, climate data, deterioration models, chloride ingress, carbonation, Python software, Nigeria INTRODUCTION Bridges are critical components of transportation infrastructure, yet they face significant challenges from environmental exposure. In tropical and coastal environments, climatic factors such as rainfall, temperature fluctuations, humidity, and marine salinity accelerate deterioration processes in reinforced concrete (RC) structures [1]. The Imo River Bridge, located along the Port Harcourt–Eket corridor in southeastern Nigeria, is a typical RC bridge exposed to aggressive climatic and environmental conditions. Globally, studies have shown that climate change intensifies the frequency and severity of environmental stressors on infrastructure [2]. For RC bridges, the primary deterioration mechanisms include chloride ingress and carbonation, which lead to corrosion of reinforcing steel, cracking, and reduced structural capacity [3]. However, limited research has focused on applying meteorological datasets and computational frameworks to predict deterioration in sub-Saharan Africa. This study addresses this gap by developing a Python-based program that fetches climate data from NASA POWER and applies deterioration models to RC bridges. The case of the Imo River Bridge is used to demonstrate how software-driven approaches can improve predictive maintenance and inform resilience strategies. LITERATURE REVIEW RC bridges are prone to environmental deterioration due to their exposure to aggressive climatic conditions. Chloride ingress, particularly in marine and humid zones, is a critical factor in steel reinforcement corrosion [4]. Similarly, carbonation occurs when atmospheric CO₂ diffuses into concrete, reducing alkalinity and destabilizing the passive layer around steel [5]. Both processes are strongly influenced by meteorological parameters such as rainfall, humidity, and temperature [6].
Volume-09 Issue 10, October-2025 ISSN: 2456-9348 Impact Factor: 8.232 International Journal of Engineering Technology Research Management (IJETRM) https://ijetrm.com/ IJETRM (http://ijetrm.com/) [179] In Nigeria, few studies have applied climate data in deterioration modeling of bridges. For instance, Onundi et al. [7] emphasized the lack of region-specific deterioration data in sub-Saharan Africa. Internationally, scholars have used probabilistic and deterministic models to evaluate chloride penetration [8] and carbonation depth [5]. With the increasing availability of satellite climate data, researchers have begun integrating meteorological datasets with structural health models [9]. Despite these advancements, a research gap exists in linking open-access climate data sources with practical deterioration modeling tools in African contexts. This study contributes to filling this gap by providing a Python-based framework tailored to climate-driven deterioration analysis of RC bridges. METHODOLOGY The methodology involves three major steps: Data Acquisition o Daily and monthly climate data (rainfall, temperature, humidity, wind speed) were retrieved using NASA POWER API for the coordinates of the Imo River Bridge (Latitude: 4.6886°N, Longitude: 7.3156°E). o The dataset covered historical and recent climatic records. Software Framework Development o A Python-based GUI was developed to automate climate data retrieval. o The framework computes deterioration progression using established models. Below is a GUI-based Python application that allows a user to enter coordinates (latitude & longitude), select a date range, and then fetch meteorological data (rainfall, temperature, humidity, etc.) from NASA POWER API. It was desiged using Tkinter for GUI and requests + pandas for data handling. import tkinter as tk from tkinter import ttk, messagebox, filedialog import requests import pandas as pd from datetime import datetime # NASA POWER API base URL API_URL = "https://power.larc.nasa.gov/api/temporal/daily/point" # Function to fetch data from NASA POWER API def fetch_data(): try: lat = float(lat_entry.get()) lon = float(lon_entry.get()) start_date = start_entry.get().replace("-", "") end_date = end_entry.get().replace("-", "") parameters = ["PRECTOTCORR", "T2M", "T2M_MIN", "T2M_MAX", "RH2M", "WS2M"] params_str = ",".join(parameters)
Volume-09 Issue 10, October-2025 ISSN: 2456-9348 Impact Factor: 8.232 International Journal of Engineering Technology Research Management (IJETRM) https://ijetrm.com/ IJETRM (http://ijetrm.com/) [180] url = ( f"{API_URL}?parameters={params_str}" f"&community=RE&longitude={lon}&latitude={lat}" f"&start={start_date}&end={end_date}&format=JSON" ) response = requests.get(url) if response.status_code != 200: messagebox.showerror("Error", f"API request failed: {response.status_code}") return data = response.json()["properties"]["parameter"] # Convert dictionary to DataFrame df = pd.DataFrame(data) df.index = pd.to_datetime(df.index) # Save to CSV file_path = filedialog.asksaveasfilename( defaultextension=".csv", filetypes=[("CSV files", "*.csv")] ) if file_path: df.to_csv(file_path) messagebox.showinfo("Success", f"Data saved to {file_path}") except Exception as e: messagebox.showerror("Error", str(e)) # GUI Setup root = tk.Tk() root.title("NASA POWER Climate Data Fetcher") root.geometry("450x300") # Latitude tk.Label(root, text="Latitude:").grid(row=0, column=0, padx=10, pady=5, sticky="w") lat_entry = tk.Entry(root) lat_entry.grid(row=0, column=1, padx=10, pady=5) # Longitude
Volume-09 Issue 10, October-2025 ISSN: 2456-9348 Impact Factor: 8.232 International Journal of Engineering Technology Research Management (IJETRM) https://ijetrm.com/ IJETRM (http://ijetrm.com/) [181] tk.Label(root, text="Longitude:").grid(row=1, column=0, padx=10, pady=5, sticky="w") lon_entry = tk.Entry(root) lon_entry.grid(row=1, column=1, padx=10, pady=5) # Start Date tk.Label(root, text="Start Date (YYYY-MM-DD):").grid(row=2, column=0, padx=10, pady=5, sticky="w") start_entry = tk.Entry(root) start_entry.grid(row=2, column=1, padx=10, pady=5) # End Date tk.Label(root, text="End Date (YYYY-MM-DD):").grid(row=3, column=0, padx=10, pady=5, sticky="w") end_entry = tk.Entry(root) end_entry.grid(row=3, column=1, padx=10, pady=5) # Fetch Button fetch_btn = ttk.Button(root, text="Fetch Data", command=fetch_data) fetch_btn.grid(row=4, column=0, columnspan=2, pady=20) # Run GUI root.mainloop() Deterioration Models Chloride Ingress: where is chloride penetration depth (mm), is a climate-adjusted diffusion constant, and t is time (years). Carbonation Depth: where is carbonation depth (mm), and depends on CO₂ concentration, humidity, and rainfall effects. import pandas as pd import matplotlib.pyplot as plt # === Step 1: Load the dataset === # Replace filename with the name of your CSV file filename = "rainfall data.csv" df = pd.read_csv(filename)
Volume-09 Issue 10, October-2025 ISSN: 2456-9348 Impact Factor: 8.232 International Journal of Engineering Technology Research Management (IJETRM) https://ijetrm.com/ IJETRM (http://ijetrm.com/) [182] # === Step 2: Prepare data === # Rename the first column to DATE and set as datetime index df = df.rename(columns={'Unnamed: 0': 'DATE'}) df['DATE'] = pd.to_datetime(df['DATE']) df = df.set_index('DATE') # Extract variables rainfall = df['PRECTOTCORR'] # Rainfall (mm/day) temp_mean = df['T2M'] # Mean Temperature (°C) temp_min = df['T2M_MIN'] # Min Temperature (°C) temp_max = df['T2M_MAX'] # Max Temperature (°C) humidity = df['RH2M'] # Relative Humidity (%) wind = df['WS2M'] # Wind speed (m/s) # === Step 3: Generate plots === # 1. Rainfall Trend plt.figure(figsize=(10, 6)) rainfall.resample('M').sum().plot() plt.title("Monthly Rainfall Trend (mm)") plt.xlabel("Year") plt.ylabel("Rainfall (mm)") plt.grid(True) plt.savefig("rainfall_trend.png", dpi=300) plt.close() # 2. Temperature Trends plt.figure(figsize=(10, 6)) temp_mean.resample('M').mean().plot(label='Mean Temp') temp_min.resample('M').mean().plot(label='Min Temp') temp_max.resample('M').mean().plot(label='Max Temp')
Volume-09 Issue 10, October-2025 ISSN: 2456-9348 Impact Factor: 8.232 International Journal of Engineering Technology Research Management (IJETRM) https://ijetrm.com/ IJETRM (http://ijetrm.com/) [183] plt.title("Monthly Temperature Trends (°C)") plt.xlabel("Year") plt.ylabel("Temperature (°C)") plt.legend() plt.grid(True) plt.savefig("temperature_trend.png", dpi=300) plt.close() # 3. Humidity Trend plt.figure(figsize=(10, 6)) humidity.resample('M').mean().plot() plt.title("Monthly Relative Humidity Trend (%)") plt.xlabel("Year") plt.ylabel("Relative Humidity (%)") plt.grid(True) plt.savefig("humidity_trend.png", dpi=300) plt.close() # 4. Wind Speed Trend plt.figure(figsize=(10, 6)) wind.resample('M').mean().plot() plt.title("Monthly Wind Speed Trend (m/s)") plt.xlabel("Year") plt.ylabel("Wind Speed (m/s)") plt.grid(True) plt.savefig("wind_trend.png", dpi=300) plt.close() print(" Graphs saved as: rainfall_trend.png, temperature_trend.png, humidity_trend.png, wind_trend.png") The Python script shown above, is a complete climate data analysis and deterioration modeling workflow for reinforced concrete bridges. Let us break it down step by step Step 1: Load dataset filename = "rainfall data.csv" df = pd.read_csv(filename)
Volume-09 Issue 10, October-2025 ISSN: 2456-9348 Impact Factor: 8.232 International Journal of Engineering Technology Research Management (IJETRM) https://ijetrm.com/ IJETRM (http://ijetrm.com/) [184] # Fix date column df = df.rename(columns={'Unnamed: 0': 'DATE'}) df['DATE'] = pd.to_datetime(df['DATE']) df = df.set_index('DATE') • Reads the CSV file exported from NASA POWER (with rainfall, temperature, humidity, wind data). • Renames the first column to DATE and sets it as the index in proper datetime format. Extracted variables: • rainfall → Daily rainfall (mm/day). • temp_mean, temp_min, temp_max → Temperature stats. • humidity → Relative humidity (%). • wind → Wind speed (m/s) Step 2: Monthly and Annual Aggregates monthly_data = df.resample('M').mean() monthly_data['Rainfall_mm'] = rainfall.resample('M').sum() annual_data = df.resample('Y').mean() annual_data['Rainfall_mm'] = rainfall.resample('Y').sum() monthly_data.to_csv("monthly_climate_summary.csv") annual_data.to_csv("annual_climate_summary.csv") • Groups the data into monthly and annual averages. • Rainfall is summed (not averaged) because it is cumulative. • Saves two CSVs: monthly_climate_summary.csv and annual_climate_summary.csv. Step 3: Climate Trend Graphs def save_plot(series, title, ylabel, filename, kind="line", legend=True): ... • Defines a helper function to plot and save climate variables. • Generates PNG trend plots for: o Rainfall (monthly totals). o Temperature (mean, min, max). o Humidity (monthly average). o Wind speed (monthly average). These graphs help visualize climate variability and long-term trends.
Volume-09 Issue 10, October-2025 ISSN: 2456-9348 Impact Factor: 8.232 International Journal of Engineering Technology Research Management (IJETRM) https://ijetrm.com/ IJETRM (http://ijetrm.com/) [185] Step 4: Deterioration Models Two deterioration mechanisms are simulated: (a) Chloride Ingress (Fick’s Second Law) Cs = 5.0 # Surface chloride concentration Dcl = 1e-12 # Diffusion coefficient x = 0.05 # Rebar cover depth (50 mm) years = np.arange(1, 101) # up to 100 years t = years * 365 * 24 * 3600 Cxt = [Cs * (1 - math.erf(x / (2 * math.sqrt(Dcl * ti)))) for ti in t] • Models chloride penetration into concrete cover over 100 years. • Uses error function (erf) solution of Fick’s law. • Critical chloride threshold (0.4%) is marked on the plot. • Output: chloride_ingress.png. (b) Carbonation Depth (√t Model) k = 4e-3 # carbonation coefficient xc = k * np.sqrt(years) • Models carbonation depth as proportional to √t. • Assumes tropical, humid environment with an adjusted coefficient. • Critical cover depth (50 mm) is marked. • Output: carbonation_depth.png. Final Output The script produces: • Two summary CSV files: o monthly_climate_summary.csv o annual_climate_summary.csv • Five PNG graphs: o rainfall_trend.png o temperature_trend.png o humidity_trend.png o wind_trend.png o chloride_ingress.png o carbonation_depth.png This code connects climate data to structural deterioration by first analyzing rainfall, temperature, humidity, and wind trends, then using that information to simulate chloride ingress and carbonation, which are the main deterioration mechanisms in reinforced concrete bridges in humid/tropical regions. 2. Case Study Application
Volume-09 Issue 10, October-2025 ISSN: 2456-9348 Impact Factor: 8.232 International Journal of Engineering Technology Research Management (IJETRM) https://ijetrm.com/ IJETRM (http://ijetrm.com/) [186] o The Imo River Bridge was selected due to its strategic importance and exposure to marine and humid conditions. o Retrieved climatic data were applied to estimate deterioration rates. RESULTS AND DISCUSSION Climate Trends Analysis of NASA POWER data revealed the following: • Rainfall: Annual averages exceeded 2500 mm, with intense rainy seasons between May and October. • Temperature: Mean annual temperature ranged between 26–28°C, with minor seasonal fluctuations. • Humidity: Relative humidity consistently exceeded 75%, a condition that accelerates both chloride ingress and carbonation. • Wind Speed: Moderate wind speeds facilitated marine aerosol transport inland, adding to chloride exposure. Figure 1: Monthly Rainfall trend Figure 2: Annual Rainfall trend