- Jan 2025
-
notebooksharing.space notebooksharing.spaceNotebook21
-
here is the kuroshio current, but the prevailing winds drive it further away from land/ the mainland US is blocked by the rocky mountains.
this is not completely true or from where do you have that? References are missing (so it is hard to verify your response).
The Kuroshio Current in the north Pacific does not move as far northward as the Gulf Stream and influences more the climate in eastern Asia/Japan than in Northern America. In addition, the Pacific ocean spreads over much more longitudes than the Antarctic Ocean.
It is true that the Rocky Mountains also shape the weather patterns but they are not the only explanation for larger differences between Northern Europe's and North America temperature differences.
-
Siberia and North America are blocked by mountain ranges like the Rocky and Ural Mountains, which trap cold Arctic air and lead to harsher winters.
Partially wrong or do you have a reference here? For Siberia: I would say that Siberia experiences extreme cold primarily because of its vast landmass, and a long distance from oceans (specifically a lot of land masses to the west). Maybe the Ural Mountains are also important. But as you do not give any references, it is hard to verify...
-
urope's geography, with few large mountain ranges, allows these winds to reach the region easily.
In generally true, but maybe also important to consider the orientation of the mountain ranges.
-
oincides with subtropical westerlies in both S and N hemispheres as well as with the location of most low pressure systems thus the wind is stronger there. around the itcz the wind speed is 0 in the S-N direction which makes sense as the trade winds meet there. and the eastern trade winds in the tropics NE/SE for S/N hemisphere respectively
where are the subtropical westerlies.. I guess you mean the westeries in the midlatitudes (30°-60°N/S)... from where to where are the trade winds (easterlies) (-30° to 30°)
what are the differences between southern and northern hemisphere? What happens at -60/-50° N -> much larger wind... why?
-
coincides with the location of the circumpolar low, the southern oceanhighs the equatorial trough and the hawaian+bermuda high and the iceland/aleutian low. These climatological highs and lows are connected to the cell model of global circulation. with a large amount of advection at the equator due to solar radiation and a large amount of subsidence at the subtropical high level as well as advection between the ferrell and polar cell.
what are the differences between southern and northern hemisphere?
-
B
Similar as in part 1 and 2: - the structure/layout of the answers is very poorly - no references - the answers are somehow incomplete and very hard to follow
-
it coincides with the location of the circumpolar low, the southern oceanhighs the equatorial trough and the hawaian+bermuda high and the iceland/aleutian low.
this is very qualitative... we expected an explanation of the lows and highs over the different latitudes... it is great to give examples, but it is unclear at which latitude e.g. the hawaian/bermudan high is or the icelandic/aleutian low. We expected you to refer to the figure that you made. partly related to question 2: Also where are the hadley, ferrel, polar cell, and where are these highs/lows roughly located (at which latitude?).
-
# Your answers here slp=ds.msl.mean(dim=['time', 'longitude'])*0.01 u10=ds.u10.mean(dim=['time', 'longitude']) v10=ds.v10.mean(dim=['time', 'longitude']) atmp=1013.25 zero_line=0 #plots plt.figure(figsize=(12, 6)) plt.plot(slp['latitude'], slp, label="SLP (hPa)", color='blue') plt.axhline(y=1013.25, color='red', linestyle='--', label="Standard Atmosphere (1013.25 hPa)") plt.title("Zonal and Temporal Average of SLP") plt.xlabel("Latitude") plt.ylabel("Pressure (hPa)") plt.legend() plt.grid() plt.show() plt.figure(figsize=(12, 6)) plt.plot(u10['latitude'], u10, label="u10 (m/s)", color='green') plt.axhline(y=0, color='black', linestyle='--', label="Zero Line") plt.title("Zonal and Temporal Average of u10") plt.xlabel("Latitude") plt.ylabel("Wind Speed (m/s)") plt.legend() plt.grid() plt.show() plt.figure(figsize=(12, 6)) plt.plot(v10['latitude'], v10, label="v10 (m/s)", color='orange') plt.axhline(y=0, color='black', linestyle='--', label="Zero Line") plt.title("Zonal and Temporal Average of v10") plt.xlabel("Latitude") plt.ylabel("Wind Speed (m/s)") plt.legend() plt.grid() plt.show()
Figures look good. Labels are included with nice labels. ;-)
one detail: u10/v10 can also be described as "zonal wind component at 10m" and "meridional wind component at 10 m"
-
Describe the location of the ITCZ in January and August. Without going into the details, explain (in one or two sentences) in January the ictz is further south because that is the area with the highest solar flux and august it moves further north Describe the precipitation seasonality in West Africa and in India. Name the phenomenon at play. in summer the ictz moves over both west africa and india and brings a strong rainy season called a monsoon season, west-african/ indian monsoon
same as for answers for part 1: make the question in bold or add a clear line break.
-
- What are the differences in the ITCZ location between land/ocean?
-
- Correct. Though when exactly happens that (around June-September). Any references?
-
-
# Your answers here tp_month_mean=ds.tp.groupby('time.month').mean(dim='time') tp_month_mean=tp_month_mean*1000 #plot levels = [0.5, 1, 2, 3, 4, 5, 7, 10, 15, 20, 40] cmap = 'YlGnBu' # Plot the map for January (month = 1) and August (month = 8) fig, axes = plt.subplots(1, 2, figsize=(14, 6)) january_precip = tp_month_mean.sel(month=1) august_precip = tp_month_mean.sel(month=8) # January Plot january_precip.plot.contourf(ax=axes[0], levels=levels, cmap=cmap, extend='max') axes[0].set_title('Average Daily Precipitation - January') # August Plot august_precip.plot.contourf(ax=axes[1], levels=levels, cmap=cmap, extend='max') axes[1].set_title('Average Daily Precipitation - August') # Adjust layout and show the plots plt.tight_layout() plt.show()
Ok, this looks a bit like art ;-) , but it is unfortunately very difficult to analyse these figures. What is missing? Robinson projection, coastlines and gridlines. Colorbar labels would also be great. The levels are, howver, correctly represented.
-
Look at the zonal temperature anomaly map. Explain why northern Europe and the North Atlantic region is significantly warmer than the same latitudes in North America or Russia. N
The formatting is not done very nicely for the reader. You can make the question in bold and the answer in normal font or answer with a bullet point list. Here, everything is in a bulk paragraph, which is not very inviting to read... Overall references to those statements that are not directly visible from your figures are missing.
-
Where is the temperature range largest? Explain why. Eastern siberia and Polar North-America surface albedo would probably play a large role in those environments since they are covered by snow during winter so would have a higher albedo, leading to cooler temperatiures, while on the other hand in summer, these landmasses are not covered by snow and can absorb much more solar radiation. both regions can be affected by polar jet streams as well, which could lead to very cold temperatures.
yes, the seasonal snow cover is one aspect. (that one is also linked to the Arctic conditions where the length of the day varies largely between the seasons).<br /> However, specifically in Eastern Siberia, the continentality of that region also plays a role.
-
s the annual variability of energy balance due to earths tilt
not really explaining the actual reason, i.e. in the tropics, the solar insolation is roughly constant over the year and the day length is also constant ... or/and in the tropics the sun is nearly overhead over the entire year...
-
hile at higher latitudes the difference is much larger.
you just repeat the question here, but do not directly answer it...
-
es at lo
sorry... but how do you expect someone to read that. ... You did not even start a new sentence... to switch between the question to an answer...
-
warm ocean currents
unclear from where the warm ocean currents come from...
-
Prevailing westerly winds carry warm, moist air from the Atlantic, helping to maintain milder winters.
this may be true though you don't see the wind patterns in the figure. If you have this information from somewhere else, you have to refer to the source!
-
, moderating the climate.
"moderate" is unclear -> better to clarify that you mean temperature increase over northern Europe and the North Atlantic...
-
t_month_mean=ds.t2m.groupby('time.month').mean() t_range=t_month_mean.max(dim="month")-t_month_mean.min(dim="month") t_range.plot()
same as the two figures above.
We also recommend to use e.g. the ccrs.Robinson projection as in the other figures. YOu can do that via:
ax = plt.axes(projection=ccrs.Robinson()) (t2_cycle.max(dim='month') - t2_cycle.min(dim='month')).plot(ax=ax, transform=ccrs.PlateCarree(), cbar_kwargs={'label':'$\overline{T
-
t_avg_dep = t2_tavg - t2_tavg.mean(dim='longitude') ax = plt.axes(projection=ccrs.Robinson()) t_avg_dep.plot.imshow(ax=ax, transform=ccrs.PlateCarree()) ax.coastlines(); ax.gridlines();
Same here, you plot the right thing. However, the meaning of "t2m" is unclear and the unit is not given. It would also be helpful to have a title or at least sth. written out as a markdown cell to explain what you plot (not just T*).
-
#temporal mean t2_tavg = ds.t2m.mean(dim='time') ax = plt.axes(projection=ccrs.Robinson()) t2_tavg.plot(ax=ax, transform=ccrs.PlateCarree()) ax.coastlines(); ax.gridlines();
you plot the temperature distribution. However, you did not convert to degree Celsius as requested nor use understandable labels!
-
-
notebooksharing.space notebooksharing.space
-
Cole_and_Constantine.ipynb
You forgot to upload a html file (but the .ipynb also worked for us to comment). So not really a problem! However, make sure to check the requirements carefully next time before uploading your exercises.
-
-
notebooksharing.space notebooksharing.space
-
, bringing the water masses from the ocean to West Africa and leading to a rain season there. During rain season in India there is a dry season in West Africa and vice versa.
This is not really correct: As the ITCZ is to the South, West Africa enters a dry season (there is no rainy season in west africa in winter...).
The West African Monsoon is driven by Atlantic Ocean air masses, not the Indian Ocean, and it peaks during summer not in winter. So, the statement about West Africa experiencing rain due to Indian Ocean air masses in winter is incorrect.
-
# calculating the monthly average temperature for each month
you compute it correctly, but it wasn't necessary to plot every month separately. If you want to check it for every month, I would recommend to just use a for loop, i.e.: for m in np.arange(1,12.1,1): TM_month= TM.sel(month=m)-273.15 .... This avoids repeating similar code...
-
t more ocean cover, leading to higher wind speeds, because there are less barriers.
Good!
-
headly
"Hadley"
-
The direction and strength of zonal and meridional winds are primarily determined by Earth's atmospheric circulation patterns, which are influenced by solar heating, the Coriolis effect, and the distribution of high and low-pressure systems.
good!
-
Question: Based on your knowledge about the general circulation of the atmosphere, explain the latitude location of the climatological high and low pressure systems of Earth.
Good answers with a reference. You could also have added the names of the cells (Hadley Cell, Ferrel Cell, Polar Cell), but I have just seen that you mention them later in question 2. So all fine :-)
-
The diagram shows that the low pressure area of the southern hemisphere is much more pronounced than the one of the northern hemisphere.
Good that you noted that, but why is this the case? Hint: Land/ocean distribution..
-
Surface winds¶ In [13]: #computing the temporal and longitudinal average wind components u_wind= ds_uvslp.u10.mean(dim=['time', 'longitude']) v_wind= ds_uvslp.v10.mean(dim=['time', 'longitude']) #plotting on a line plot u_wind.plot(label='temporal and zonal average of u wind component'); v_wind.plot(label='temporal and zonal average of v wind component') plt.axhline(0, label= '0 horizontal wind line', color='red') plt.legend(title='Wind speed [ms-1]') plt.ylabel('ms-1') plt.xlabel('latitude [°N]') plt.title('temporal and zonal average wind speed at 10m, ERA5 1979-2018'); # easterlies: negative values # westerlies: positive values
Overall good!
-
u_wind.plot(label='temporal and zonal average of u wind component'); v_wind.plot(label='temporal and zonal average of v wind component')
u-wind component -> also called zonal wind component v-wind component -> also called meridional wind component
-
ms-1
m/s or r'Wind speed [m s$^{-1}$]'
-
horizontal
it is not "horizontal wind". So I would just write "0 wind" or "no wind"
-
#the temporal and zonal average of sea-level pressure SLP= ds_uvslp.msl.mean(dim=['time', 'longitude'])/100 SLP.plot(label='temporal and zonal average of sealevel pressure'); plt.axhline(1013.25, label= 'standard atmosphere pressure (1013.25)', color='red') plt.legend(title='Pressure [hPa]') plt.ylabel('Pressure [hPa]') plt.xlabel('latitude [°N]') plt.grid(False) plt.title('The temporal and zonal average of sea level pressure, ERA5 1979-2018');
figure looks good.
-
Describe the precipitation seasonality in West Africa and in India. Name the phenomenon at play.
Good to mention here aswell the actual months (and not just winter or summer). E.g., both the Indian Monsoon and the West African Monsoon occur primarily between June and September (also good to mention the actual names (Indian/West African) monsoon)
-
n January, it moves south of the equator, extending over regions like South America, Southern Africa, and Northern Australia. By August, the ITCZ shifts northward, positioning itself between 5° and 15° north of the equator over the Atlantic and Pacific Oceans, and even further north over the landmasses of Africa and Asia (see blue band on maps)
Great that you distinguished between land and ocean regions. What is the reason for these differences? -> over oceans, the shift is more muted because water has a higher heat capacity and doesn't heat up or cool down as quickly as land.
-
# computing the average daily precipitation for each month of the year avg_pt = ds_tp.tp.groupby('time.month').mean(dim='time') #print(avg_pt) avg_pt_mm= avg_pt*1000 # converting the m/day scale to mm/day #print(avg_pt_mm) # January selection levels= np.array([0.5, 1, 2, 3, 4, 5, 7, 10, 15, 20, 40]) avg_pt_mm_Jan= avg_pt_mm.sel(month=1) # January plot ax= plt.axes(projection= ccrs.Robinson()) avg_pt_mm_Jan.plot.contourf(ax=ax, transform= ccrs.PlateCarree(), levels=levels, cmap= 'YlGnBu', extend='max',cbar_kwargs={'label':'Precipitation [mm/day]','ticks':levels}) ax.coastlines(); ax.gridlines(); ax.set_title('January average precipitation, ERA5 1979-2018');
Nicely done!
-
On the US west coast for example, the California current is a cold water current flowing southwards towards the equator. Sea surface temperatures are thus colder(https://www.fleetscience.org/activities-resources/pacific-coast-colder-atlantic-coast). Due to cold ocean temperatures, the westerly winds are also colder in comparison, because they have less energy input from the sea
You could also have mentioned the Kuroshio Current in the Pacific, which also transports warm water. However, it does not go that much northward and affects more Eastern Asia/Japan than North America.
-
The largest temperature range is found in the north easterly parts of Russia in Sibiria (see on the map). Eurasia is the largest landmass, which makes this part of Russia the most continental area on earth. Additionally, the high latitude is responsible for much sunlight in summer and low sunlight in winter, which further intensifies the variability of temperatures (https://www.britannica.com/place/Russia/Climate, https://www.ces.fau.edu/nasa/module-3/why-does-temperature-vary/seasons.php). For instance, Verkhoyansk has recorded temperature ranges from -68°C in winter to over +38°C in summer, marking one of the most significant annual temperature variations worldwide (https://en.wikipedia.org/wiki/Verkhoyansk).
correct, however, the influence of the seasonal snow cover (and its effect via largely varying albedo) is missing here.
-
(4184 JKg-1K-1
Either mention both storage capacities or none of them (would prefer not to mention it, as it is too much detail).
-
(https://pubmed.ncbi.nlm.nih.gov/25560606/)
Great that ypu added a reference, to make it even more "professional", you can link directly to the doi, and e.g. call it, if it is a paper name et al. (year)
-
Nort
North
-
compute the mean temperature over time T_mean_K= ds_t2m.t2m.mean(dim='time') T_mean_C= T_mean_K-273.15 # plot the mean temperature on a map ax = plt.axes(projection=ccrs.Robinson()) T_mean_C.plot(ax=ax, transform = ccrs.PlateCarree(),cmap= 'RdBu_r' ,vmin= -50, vmax= 30,levels=9, cbar_kwargs={'label':'°C'}) ax.coastlines(); ax.gridlines(); ax.set_title('Annual mean global 2m Temperature, ERA5 1979-2018'); #T_mean_C.min().values
Great title and label descriptions. I would have chosen a smaller temperature classification (5°C bins or a gradual transition). This helps to better see the differences between North America and Europe at the same latitude.
-
Anual
Annual
-
-
notebooksharing.space notebooksharing.space
-
The direction and strength of winds are determined by the pressure gradient force, Coriolis effect, and friction. The sea-level pressure plot helps illustrate these dynamics: Zonal Winds (u10: East-West Component) Easterlies (Trade Winds) at 0°–30°N/S: Air moves from the subtropical highs (30°) to the equatorial low (0°). The Coriolis effect deflects winds to the west, creating northeasterly trades in the Northern Hemisphere and southeasterly trades in the Southern Hemisphere. These winds are strong due to the consistent pressure gradient toward the equator. Westerlies at 30°–60°N/S: Air moves poleward from the subtropical highs toward the subpolar lows (60°). The Coriolis effect deflects winds to the east, creating the mid-latitude westerlies. These winds are particularly strong due to the steep pressure gradient and the formation of the polar front jet stream. Polar Easterlies at 60°–90°N/S: Cold air flows from the polar highs toward the subpolar lows. The Coriolis effect deflects these winds to the west, producing polar easterlies. Meridional Winds (v10: North-South Component) Weak Poleward Flow at 30°N/S: Sinking air at the subtropical highs tends to flow poleward toward the subpolar lows. This is generally weak at the surface but contributes to the westerlies at higher latitudes. Equatorward Flow Near the Poles: Cold, dense air sinks at the polar highs and flows equatorward toward the subpolar lows.
Generally well explained. However, the text strutcture looks very similar to typical ChatGPT text, but I cannot say that 100%. Just something to consider for the next time. At the end, for us, the most important part is that you understand what is written there... It is very difficult for us to "judge" though the text style is suspicious in combination with no references and no direct analysis of the plots that you made...
Again, it does not seem that you directly analyse the figure. You do not describe difference between southern and northern hemisphere. Why is e.g. the wind very large at around -50/-60°C S?
-
# Extract variables msl = ds['msl'] # Sea-level pressure (Pa) u10 = ds['u10'] # Zonal wind component (m/s) v10 = ds['v10'] # Meridional wind component (m/s) # 1. Compute the temporal and zonal mean of sea-level pressure msl_hpa = msl.mean(dim='time') / 100.0 # Convert from Pa to hPa msl_zonal_mean = msl_hpa.mean(dim='longitude') # Zonal average # 2. Compute the temporal and zonal mean of u10 and v10 u10_zonal_mean = u10.mean(dim='time').mean(dim='longitude') # Zonal average of u10 v10_zonal_mean = v10.mean(dim='time').mean(dim='longitude') # Zonal average of v10 # Define latitudes for the x-axis latitudes = ds['latitude'] # Plotting fig, axes = plt.subplots(3, 1, figsize=(10, 12), sharex=True) # Plot sea-level pressure axes[0].plot(latitudes, msl_zonal_mean, color='b', label='Zonal Mean SLP') axes[0].axhline(1013.25, color='r', linestyle='--', label='Standard Atmospheric Pressure (1013.25 hPa)') axes[0].set_title('Zonal and Temporal Mean of Sea-Level Pressure') axes[0].set_ylabel('Pressure (hPa)') axes[0].legend() axes[0].grid() # Plot u10 (zonal wind component) axes[1].plot(latitudes, u10_zonal_mean, color='g', label='Zonal Mean u10') axes[1].axhline(0, color='k', linestyle='--', label='Zero Line') axes[1].set_title('Zonal and Temporal Mean of Zonal Wind (u10)') axes[1].set_ylabel('Wind Speed (m/s)') axes[1].legend() axes[1].grid() # Plot v10 (meridional wind component) axes[2].plot(latitudes, v10_zonal_mean, color='m', label='Zonal Mean v10') axes[2].axhline(0, color='k', linestyle='--', label='Zero Line') axes[2].set_title('Zonal and Temporal Mean of Meridional Wind (v10)') axes[2].set_ylabel('Wind Speed (m/s)') axes[2].set_xlabel('Latitude') axes[2].legend() axes[2].grid() # Adjust layout plt.tight_layout() plt.show()
Figure looks great with very good labels and nice layout.
To make it even clearer what u10/v10 means, you could write "u-wind component at 10 m" (but this is a detail ;-) )
-
The currents in the Pacific are less intense, and the Pacific Ocean's larger size leads to more thermal inertia, which prevents localized warming similar to the Atlantic.
You could also have added the name of the Pacific Ocean current that transports heat northward -> kuroshio. This current does not go that much northward.
-
The Earth's general circulation of the atmosphere is responsible for the distinct latitudinal bands of high and low pressure: Equatorial Low (Near 0° latitude): The Intertropical Convergence Zone (ITCZ) lies near the equator, where intense solar heating causes air to rise. This creates a low-pressure zone due to the upward movement of air and its divergence aloft. Rising warm air leads to significant cloud formation and precipitation, characteristic of the tropical rain belts. Subtropical Highs (Around 30°N and 30°S): At around 30° latitude, descending air from the Hadley Cells causes regions of high pressure. This zone is known as the subtropical ridge and is associated with arid climates (e.g., the Sahara Desert, deserts of Australia) because the sinking air suppresses cloud formation. Subpolar Lows (Around 60°N and 60°S): Near 60° latitude, the cold polar air meets warmer mid-latitude air, creating the polar front. The warm air rises over the denser cold air, leading to low-pressure zones. This region is characterized by storm systems and significant precipitation, particularly in the polar front jet stream region. Polar Highs (Near 90°N and 90°S): At the poles, cold, dense air sinks, creating high-pressure zones. These regions are dry and stable due to the lack of vertical air motion and limited moisture.
Generally well explained. However, the text strutcture looks very similar to typical ChatGPT text, but I cannot say that 100%. Just something to consider for the next time.
Here we would have liked you to directly analyse the figure that you made. In that figure you see e.g. differences between the southern and northern hemisphere.
-
In January, the Intertropical Convergence Zone (ITCZ) is located south of the equator, over the southern hemisphere, particularly over northern parts of South America, southern Africa, and northern Australia. In August, the ITCZ shifts north of the equator, moving over regions like West Africa, India, and Southeast Asia, driven by the seasonal heating of the land in the northern hemisphere.
Correct, but what is the reason for the land/ocean distribution differences?
the reason is that over land, the ITCZ tends to shift further north or south depending on seasonal heating, while over oceans, the shift is more muted because water has a higher heat capacity and doesn't heat up or cool down as quickly as land.
-
West Africa: Precipitation peaks during the summer months (June–September) when the ITCZ shifts north, bringing monsoonal rains. This phenomenon is part of the West African Monsoon system. India: Precipitation seasonality is dominated by the Indian Summer Monsoon, where heavy rains occur from June to September due to the seasonal reversal of winds (southwesterly flow) that transport moisture from the Indian Ocean onto the Indian subcontinent. The ITCZ migration and the associated monsoon systems (West African Monsoon and Indian Summer Monsoon) are driven by seasonal changes in solar heating, which cause shifts in atmospheric circulation and the convergence of moist air.
Correct, but a reference is missing...
-
# Compute the monthly climatology (average precipitation for each month) precip_monthly_mean = tp_mm.groupby('time.month').mean() # Define the color levels and colormap levels = [0.5, 1, 2, 3, 4, 5, 7, 10, 15, 20, 40] cmap = 'YlGnBu' # Create a figure with two subplots (January and August) fig, axes = plt.subplots(1, 2, subplot_kw={'projection': ccrs.Robinson()}, figsize=(14, 6)) # January precipitation map ax = axes[0] january_precip = precip_monthly_mean.sel(month=1) im1 = january_precip.plot.contourf( ax=ax, transform=ccrs.PlateCarree(), levels=levels, cmap=cmap, cbar_kwargs={'shrink': 0.6, 'label': 'Precipitation (mm/day)'} ) ax.coastlines() ax.set_title('Average Daily Precipitation - January') # August precipitation map ax = axes[1] august_precip = precip_monthly_mean.sel(month=8) im2 = august_precip.plot.contourf( ax=ax, transform=ccrs.PlateCarree(), levels=levels, cmap=cmap, cbar_kwargs={'shrink': 0.6, 'label': 'Precipitation (mm/day)'} ) ax.coastlines() ax.set_title('Average Daily Precipitation - August') # Add a title for the whole figure plt.suptitle('Monthly Average Daily Precipitation (mm/day)', fontsize=16) # Adjust spacing plt.tight_layout() plt.show()
Looks great! Just one small detail is missing, the gridlines. This helps to later interpret the location of the ITCZ compared to the equator. You can add for that: ax.gridlines()
-
Questions: 1. Look at the zonal temperature anomaly map.
Question and answers nicely structured. However, references are unfortunately missing.
-
the North Atlantic are significantly warmer due to the North Atlantic Drift, an extension of the Gulf Stream. This ocean current carries warm water from the tropics towards Europe, moderating the clim
why does it go towards Europe and not towards Eastern America? --> westerlies!!
-
continentality
that is true,but it is specifically true if there are much land masses to the west (i.e. specifically the case in North-Eastern Siberia...)
-
In contrast, North America and Russia experience colder continental climates due to their distance from large water bodies, which provide thermal moderation.
Somehow true, though for North America, the reason is more what you explain in the next question.
-
The largest temperature ranges occur over continental interiors at high latitudes, such as Siberia, Canada, and parts of Central Asia.
You can see the pattern much better when you plot the "temperature range seasonality"... i.e. max(month) - min(month). But your overall answer is correct.
-
# Compute the temporal mean temperature t2m = ds['t2m'] t2m_c = t2m - 273.15 # Convert to Celsius T_mean = t2m_c.mean(dim='time') # Plot the global mean temperature fig = plt.figure(figsize=(12, 5)) ax = plt.axes(projection=ccrs.Robinson()) T_mean.plot(ax=ax, transform=ccrs.PlateCarree(), cbar_kwargs={'label': 'Mean Temperature (°C)'}) ax.coastlines() ax.gridlines() plt.title('Temporal Mean Temperature (°C)') plt.show()
Great description of labels, code and very good that you added a title!
-
# Compute the monthly climatology (average temperature for each month) T_monthly_mean = t2m_c.groupby('time.month').mean() # Plot the monthly average temperature maps fig, axes = plt.subplots(3, 4, subplot_kw={'projection': ccrs.Robinson()}, figsize=(15, 10)) # Loop over the 12 months and plot each month's mean temperature for i, ax in enumerate(axes.flat): # Select the temperature for month i+1 month_data = T_monthly_mean.isel(month=i) # Plot the 2D data im = month_data.plot.pcolormesh( ax=ax, transform=ccrs.PlateCarree(), cmap='coolwarm', add_colorbar=False ) ax.coastlines() ax.set_title(f'Month {i+1}') # Add a single vertical colorbar on the right-hand side cbar_ax = fig.add_axes([0.92, 0.15, 0.02, 0.7]) # [left, bottom, width, height] fig.colorbar(im, cax=cbar_ax, orientation='vertical', label='Temperature (°C)') # Adjust spacing between subplots plt.subplots_adjust(hspace=0.3, wspace=0.05, top=0.9, bottom=0.1, right=0.9) # Add a title and show the figure plt.suptitle('Monthly Average Temperature (°C)', fontsize=16) plt.show()
Great way to show the entire monthly average temperature time series. ;-)
-
Now plot the average monthly temperature range map, i.e. max(¯¯¯¯¯¯¯TM)max(TM¯)\max(\overline{T_{M}}) - min(¯¯¯¯¯¯¯TM)min(TM¯)\min(\overline{T_{M}}) (maximum and minimum over the month dimension).
You forgot to plot this here.
-
-
notebooksharing.space notebooksharing.spaceNotebook17
-
The major high-pressure systems are located around 30° N and S, which are the subtropical high-pressure belts. These areas are characterized by descending air that leads to dry and clear conditions. The major low-pressure systems are found around the equator (the Intertropical Convergence Zone, or ITCZ) and near 60° N and S, where warm air rises and cools, causing cloud formation and precipitation
Correct though some things are missing here (we did not expect you to mention all, but at least some of that..):
What are the differences between south and northern hemisphere in the pressure patterns? How are the different cells called (Hadley cell, ferrel cell, polar cell)? What happens in the polar regions?
-
helps) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42# Your answers here # Berechne den temporalen und zonalen Durchschnitt des Meeresspiegeldrucks (msl) slp = ds['msl'] / 100 # Umrechnung von Pa auf hPa slp_avg = slp.mean(dim='time').mean(dim='longitude') # Berechne den temporalen und zonalen Durchschnitt der Oberflächenwinde (u10, v10) u10 = ds['u10'] v10 = ds['v10'] u10_avg = u10.mean(dim='time').mean(dim='longitude') v10_avg = v10.mean(dim='time').mean(dim='longitude') # Erstelle die Plots fig, axs = plt.subplots(3, 1, figsize=(10, 15)) # Plot für den durchschnittlichen Meeresspiegeldruck axs[0].plot(slp_avg, label='Mean Sea-Level Pressure', color='blue') axs[0].axhline(y=1013, color='black', linestyle='--', label='Standard Pressure (1013 hPa)') axs[0].set_title('Zonal and Temporal Average of Sea-Level Pressure') axs[0].set_xlabel('Latitude') axs[0].set_ylabel('Pressure (hPa)') axs[0].legend() # Plot für den durchschnittlichen Wind in u-Richtung (zonal) axs[1].plot(u10_avg, label='Mean u10 Wind', color='green') axs[1].axhline(y=0, color='black', linestyle='--', label='Zero Line') axs[1].set_title('Zonal and Temporal Average of u10 Wind') axs[1].set_xlabel('Latitude') axs[1].set_ylabel('Wind Speed') axs[1].legend() # Plot für den durchschnittlichen Wind in v-Richtung (meridional) axs[2].plot(v10_avg, label='Mean v10 Wind', color='red') axs[2].axhline(y=0, color='black', linestyle='--', label='Zero Line') axs[2].set_title('Zonal and Temporal Average of v10 Wind') axs[2].set_xlabel('Latitude') axs[2].set_ylabel('Wind Speed (m/s)') axs[2].legend() # Layout und Darstellung der Plots plt.tight_layout() plt.show()
Attention: There is a big problem in the x-ticks! Your Latitude goes from 0 to 2XX... Interpreting and analysing these values is very difficult (in reality these are entries from 90°N to -90°S in 0.75° steps...)... Normally you should have seen that while answering to the questions...
The reason is that you just plotted slp_avg, u10_avg, without the correct x-values... You would have needed to plot the latitude values versus slp_avg, u10_avg. Or directly the "DataArray", e.g. via:
ds_zavg = ds.mean(dim=['time', 'longitude']) slp_zavg = ds_zavg.msl / 100 slp_zavg.plot()
or:
plt.plot(slp_zavg.latitude, slp_zavg.values)
-
coolwarm
As the temperature range has no center at "zero", it is a bit confusing to use a "diverging" colorscale. Use continuous color scales if you plot non-diverging estimates (such as temperature ranges). If you do not specify the "cmap", this is chosen automatically for you. For the former two figures, the cool-warm range is ok to use (specifcally good for the zonal anomaly).
-
Meridional winds (v10) are generally weaker but show significant north-south flow at the equator (ITCZ) and around the subtropical highs.
Your description of the winds near the equator as 'north-south flow' is not entirely accurate. In reality, the winds near the equator are the trade winds, which blow from the northeast in the northern hemisphere and from the southeast in the southern hemisphere. These winds converge at the ITCZ, but their flow is not strictly north-south. Or what do you mean with north-south?
-
he pressure gradients between high and low pressure systems.
The strength of the westerlies is also significantly influenced by the Coriolis force and the temperature gradients between the subtropics and polar regions (thermal wind balance).
Why do we have the strongest wind at around -50/-60°S ???
-
westerly at higher latitudes and easterly near the equator. The
What means "higher latitudes" -> it should be from 30 to 60°N Attention: Above 60°N/S -> the winds are easterlies again...
near the equator should be from -30°S to 30°N -> (trade winds)
What decides about the wind direction? --> coriolis force...
-
Questions:
references are missing and you do not refer to your figures (otherwise you would have either described it wrongly in the text or recognised your error in the x-ticks).
-
monsoon
In India it is called the "Indian Ocean Monsoon"
-
In West Africa, the rainy season occurs from May to October, driven by the movement of the ITCZ.
correct, though my sources say that the West African Monsoon is from June to September. As you have not given any references, this is hard to check ...
-
The ITCZ (Intertropical Convergence Zone) is located near the equator, where the trade winds from the Northern and Southern Hemispheres meet. In January, the ITCZ is closer to the Southern Hemisphere, while in August, it shifts northward, following the sun's position and the seasonal changes.
Correct. But there is also one speciality -> The ITCZ location also depends on whether it is over the ocean / or land...
-
# Your answers here # Konvertiere die Einheiten (m pro Tag -> mm pro Tag) precipitation = ds['tp'] * 1000 # Konvertiere von Meter auf Millimeter (1m = 1000mm) # Berechne den durchschnittlichen Niederschlag pro Monat monthly_precipitation = precipitation.groupby('time.month').mean(dim='time') # Monate Januar (1) und August (8) months = [1, 8] # Setze das Colormap für die Karte cmap = 'YlGnBu' # Levels für die Farbabstufung levels = [0.5, 1, 2, 3, 4, 5, 7, 10, 15, 20, 40] # Erstelle die Plots für Januar und August untereinander, mit der Robinson-Projektion fig, axs = plt.subplots(2, 1, figsize=(10, 12), subplot_kw={'projection': ccrs.Robinson()}) for i, month in enumerate(months): # Wähle die Achse für den jeweiligen Plot ax = axs[i] # Erstelle die Karte für den entsprechenden Monat data = monthly_precipitation.sel(month=month) # Plot der Niederschlagskarte data.plot(ax=ax, transform=ccrs.PlateCarree(), cmap=cmap, levels=levels, cbar_kwargs={'label': 'Precipitation (mm/day)'}) # Füge Küstenlinien und Gitterlinien hinzu ax.coastlines() ax.gridlines(draw_labels=True, linewidth=0.5, color='gray', linestyle='--') # Setze den Titel je nach Monat ax.set_title(f'Average Daily Precipitation in {["January", "August"][i]}') # Zeige die Plots plt.tight_layout() plt.show()
Looks good! ;-)
-
Northern Europe and the North Atlantic region are warmer because of the Gulf Stream, which brings warm water from the tropics to this area. This warm ocean current helps keep the temperature higher than in other regions at similar latitudes, like parts of North America or Russia where there are no such warm ocean currents.
wind direction (westerlies) is missing!
-
he temperature range is largest over land especially in deserts or continental areas, because there is less moisture to moderate the temperature. In places like deserts, the temperature can change drastically between day and night, and between summer and winter. Over oceans, the temperature changes more slowly, therefore this leading to a smaller range.
partly true. The idea was that you answer the question by analysing the figure that you created. References to these statements are missing. In the figure, you see that the temprature range is largest in North-east Siberia!!! Why? - high latitudes (large seasonal temprature variability), seasonally changing snow cover and with that large effects by changing albedo, continentality (specifically the large land masses to the west), (and humidity also plays a role..)
-
n places like deserts, the temperature can change drastically between day and night,
Deserts do have large daily temperature variations (hot days and cold nights) because of the lack of moisture and vegetation, which reduces heat retention at night. However, this is not the same as annual temperature range (difference between summer and winter temperatures).
The largest annual temperature ranges are found in continental interiors at high latitudes, like Siberia.
-
Questions: 1. Look at the zonal temperature anomaly map.
references are missing
-
The Northern Pacific Ocean does not have the same warming effect as the North Atlantic because it is affected by cold currents, such as the California Current. These cold currents cool the surrounding regions, making them colder compared to the North Atlantic where warm currents prevail.
There is also the Kuroshio current which transport warm water. However, it does not go that far northward...
-
# Setze die Dimensionen und Variablen
Great documentation, labelling of the code and great that you added titles. Though, the comments are in German ;-)
-
-
notebooksharing.space notebooksharing.spaceprojects17
-
In [13]: v10_t_avg = ds.v10.mean(dim='time') v10_avg = v10_t_avg.mean(dim= 'longitude').plot(label = 'v10') u10_t_avg = ds.u10.mean(dim='time') u10_avg = u10_t_avg.mean(dim= 'longitude').plot( label = 'u10') plt.xlabel('Latitude') plt.ylabel('Windspeed in m/s)') plt.title('Average windspeed in u and v-component (Time-Longitude Mean)') plt.axhline(y=0, color = 'red') plt.legend() plt.grid() plt.show()
Good! To make it even easier to understand you can add ... at "10 m", and eventually rename the labels in the legend. Also: the u-component is often called the "zonal wind component", the v-component is called the "meridional wind component".
-
In [4]: t2 = ds.t2m t2m_avg_cel = t2.mean(dim='time') -273.15 ax = plt.axes(projection=ccrs.Robinson()) t2m_avg_cel.plot(ax=ax, transform=ccrs.PlateCarree(), cmap='inferno', center=False, vmin=-40, vmax=20, levels=7, cbar_kwargs={'label': '°C'}) ax.set_title('Average annual 2m air temperature, ERA5 1979-2018') ax.coastlines(); ax.gridlines();
nice labels and title. I would prefer a 5°C binning or a continuous scale. But this depends a bit on the question you want to analyse with the figure. The color-scale may be a bit misleading. As the warmest temperatures are bright, a colormap going from blue to red may eventually be more intuitive..
Would have been great to have first the figures and then the answers to the questions. As you need the figures to answer the questions.
-
Questions:
Well explained.
(though adding a reference would have been great)
-
west
westerlies (just to clarify that the wind goes from west to east)
-
The Coriolis force is quite strong at these latitudes since it increases toward the poles. Additionally, there is far less landmass in these latitudes compared to their counterparts in the Northern Hemisphere, meaning there is less friction from landmasses to slow down the winds.
Good!
-
The subpolar low is stronger in the southern hemisphere due to less land surface and stronger temperature gradients. It arises where cold air from the polar cell mixes with warm air from the Ferell cell
Good!
-
there is a polar high in both hemispheres. T
A detail: But why do we have that high there? Because of the warm air that rised up and while travelling polewards cooled and became denser. As this air sinks at the poles due to its high density, it creates a high-pressure system. The cold temperatures at the poles further contribute to the high pressure by increasing the air's density.
-
msl_t_avg = ds.msl.mean(dim='time')/100 msl_avg = msl_t_avg.mean(dim= 'longitude').plot( label='Zonal Average Pressure') plt.axhline(y=1013, linewidth=2, linestyle='--', color='black', label='Standard Atmosphere Pressure [1013 hPa]') plt.legend() plt.xlabel('Latitude') plt.ylabel('Sea-Level Pressure (hPa)') plt.title('Average Sea-Level Pressure (Time-Longitude Mean)') plt.grid() plt.show()
Good!
-
from IPython.display import Image Image(filename=r'C:..\climate\data\WhatsApp Image 2025-01-08 at 19.18.13.jpeg')
Nice graphic. However, it only makes sense to add a graphic if you refer to it in the answer and if you mention from where you have it. I guess it does not come from WhatsApp ;-)
-
India is characterized by low average precipitation values (mostly below 2 mm per day) in January, whereas average precipitation values in summer can reach up to 15 mm per day. The reason for this significant difference is the monsoon. As the Inter-Tropical Convergence Zone (ITCZ) moves northward in summer, it changes the northeast monsoon, which brings dry air from Siberia, into the moist southwest monsoon. The southwest, or summer, monsoon brings warm and moist air from the ocean and is thus associated with heavy rainfall. West Africa experiences a pronounced precipitation seasonality, with dry Sahel conditions dominating in January (mostly below 2 mm per day) except for light rainfall along the southern coastal areas near the Gulf of Guinea. In August, the West African monsoon brings heavy rainfall, with the peak shifting northward into the Sahel while the Guinea coast also receives significant precipitation. This pattern is again driven by the seasonal migration of the ITCZ.
Good! In both cases, the monsoon is over several months. So it is good to mention the period (roughly June to September).
-
Describe the location of the ITCZ in January and August. Without going into the details, explain (in one or two sentences)
Good!
-
avg_daily_tp_mm = ds.tp.groupby('time.month').mean() * 1000 J_avg_daily_tp_mm = avg_daily_tp_mm.sel(month=1) A_avg_daily_tp_mm = avg_daily_tp_mm.sel(month=8) fig, (ax1, ax2) = plt.subplots(ncols=2, subplot_kw={'projection': ccrs.Robinson()}) # January J_avg_daily_tp_mm.plot(ax=ax1, transform=ccrs.PlateCarree(), cmap='YlGnBu', levels=[0.5, 1, 2, 3, 4, 5, 7, 10, 15, 20, 40], cbar_kwargs={'label': 'mm per day'}) # August A_avg_daily_tp_mm.plot(ax=ax2, transform=ccrs.PlateCarree(), cmap='YlGnBu', levels=[0.5, 1, 2, 3, 4, 5, 7, 10, 15, 20, 40], cbar_kwargs={'label': 'mm per day'}) ax1.set_title('Average Daily Precipitation in January, ERA5 1979-2018');ax1.coastlines();ax1.gridlines() ax2.set_title('Average Daily Precipitation in August, ERA5 1979-2018');ax2.coastlines();ax2.gridlines() plt.tight_layout() plt.show()
Great labels and titles. Nice way to show the subplots side by side. If you adapt the figure size, you could make the colorbar legend look less big (though this is a detail).
-
As shown in the plot, northeastern Siberia experiences the largest seasonal temperature variation. This can be explained by the factors mentioned in the two previous questions. Firstly, the region is located roughly at 52°N, meaning that incoming solar radiation exhibits a strong seasonal cycle. Additionally, Siberia is dominated by a continental climate, which minimizes the ocean's buffering effect on temperature. These factors make Siberia a prime region for large average monthly temperature variations. The region with the second-highest variability is located in the polar regions of northern Canada. This is caused by similar factors, although the influence of the continental climate might be slightly less pronounced.
Very good answer. Another aspect that you could add: seasonal snow cover which results in a larger seasonality due to the seasonal changes in the albedo!
-
Geosystems: An Introduction to Physical Geography
I don't know this source, is this a lecture? (make sure to mention the source at the end, not at the beginning)
-
The Northern Pacific Gyre is an ocean current quite similar to the Gulf Stream at first glance. However, it causes a less pronounced rise in temperature for the North Pacific area. One reason for this is that the current has a longer east-west extension, meaning that the flow does not cover much change in latitude, which is important for heat exchange.
Good explanation!
-
Gulfstream Westerly winds Russia continental climate(no ocean to the west) North america: ocean current strached zonaly, warm water travels longer in the north??? ROcky mountains
I think you forgot to remove some of your notes :-)
-
Since the golfstream transports water from low lattitiudes to high ones it transports a lot of heat to the north Atlantic region. Due to the pressence of the westerlys and eourpos location east of the Atlantic, this heat gets transportet to northern Europe. As a result northern Europe is significantlly warmer than the same latitudes in North America or Russia.
your answer is a bit long, one sentence from above plus this part here would have been sufficient. Also: you have a lot of typos in the next. Next time: Check the text at least once before submitting it!
-
-
notebooksharing.space notebooksharing.space
-
altitudes
Attention: "altitudes" -> Höhe is different to "latitudes" --> Breitengrad!!!
-
The ocean has a much higher heat capacity then land, it absorbs the heat during sommer and releases it during winter. North America and Russia do not have such a golf stream, they are more influenced by the Arctic land mass, which is very cold. That is the reason for the temperature differences. Explain why the Northern Pacific Ocean does not have a similar pattern. Answer: The Northern Pacific Ocean has no warm water stream like the Golf Stream. It is more influenced by cooler air masses and eceanic upwelling, especially along the costlines of Alaska and the Pacific Northwest. The cold ocean in combination with the less warming leads to colder temperatures in this region.
There is also the Kuroshio warm water current that transports warm water northward, but that one is less efficient. Why?
-
Look at the zonal temperature anomaly map.
references are missing. Quite some typos.
Advice: If you have problems with writing in English, I would suggest that you put your text somewhere to check the spelling. For example, in google docs or grammarly.
-
Answer:
We expected that you describe the direction of the wind, e.g. in the midlatitudes the winds are going from (south)west to (north) east (westerlies). The wind direction can be read out from the figures.
-
Zonal Winds (East-West) are parallel to the latitudes, they are strongest between the 30° and 60° latitude.
would be good to refer here to the fiugre that you plotted. The zonal winds are the "u10" component. When you look at the figure, you see that the u-wind component is much larger at the southern Hemisphere than at the Northern Hemisphere. Also the U-component has around a similar magnitude in the tropics compared to the northern mid-latitudes (30-60°N).
From where do you have that information?
-
Answer
Correct. Good would be to also name these three cells, and that is Hadley Cell, Ferrel Cell and Polar Cell!
And what explains the differences between the southern and northern mean sea-level pressure system?
-
# Mean SLP and converted to hPa mean_slp = ds_uvslp['msl'].mean(dim=['time', 'longitude']) / 100 # Mean u and v mean_u10 = ds_uvslp['u10'].mean(dim=['time', 'longitude']) mean_v10 = ds_uvslp['v10'].mean(dim=['time', 'longitude']) # Plot fig = plt.figure(figsize=(12, 15)) # Mean SLP Plot ax0 = fig.add_subplot(3, 1, 1) ax0.plot(mean_slp['latitude'], mean_slp, label="Mean SLP", color='blue') ax0.axhline(y=1013, color='grey', linestyle='--', label="Standard atmospheric pressure (1013 hPa)") ax0.set_title("3.1: Temporal and Zonal Average of Sea-Level Pressure") ax0.set_xlabel("Latitude") ax0.set_ylabel("SLP (hPa)") ax0.legend() # Mean u10 Plot ax1 = fig.add_subplot(3, 1, 2) ax1.plot(mean_u10['latitude'], mean_u10, label="Mean u10", color='green') ax1.axhline(y=0, color='grey', linestyle='--', label="Zero line") ax1.set_title("3.2.a: Temporal and Zonal Average of u10 (m/s)") ax1.set_xlabel("Latitude") ax1.set_ylabel("u10 (m/s)") ax1.legend() # Mean v10 Plot ax2 = fig.add_subplot(3, 1, 3) ax2.plot(mean_v10['latitude'], mean_v10, label="Mean v10", color='red') ax2.axhline(y=0, color='grey', linestyle='--', label="Zero line") ax2.set_title("3.2.b: Temporal and Zonal Average of v10 (m/s)") ax2.set_xlabel("Latitude") ax2.set_ylabel("v10 (m/s)") ax2.legend() plt.show()
Good! To make it easier to understand for the reader, I would replace u10 by zonal wind (u-) component at 10m and v10 by meridional wind (v-) component at 10m.
-
In [9]: # Plot fig, axes = plt.subplots(2, 1, figsize=(12, 10), subplot_kw={'projection': ccrs.PlateCarree()}) # January ax1 = axes[0] monthly_avg_precip.sel(month=1).plot.contourf(ax=ax1, levels=[0.5, 1, 2, 3, 4, 5, 7, 10, 15, 20, 40], cmap='YlGnBu') # August ax2 = axes[1] monthly_avg_precip.sel(month=8).plot.contourf(ax=ax2, levels=[0.5, 1, 2, 3, 4, 5, 7, 10, 15, 20, 40], cmap='YlGnBu') #set title ax1.set_title('2.1: Mean average precipitation per day in January (mm/day)') ax1.coastlines() ax2.set_title('2.2: Mean average precipitation per day in August (mm/day)') ax2.coastlines() plt.show()
Great label units and titles! Levels are also correctly shown. Though I would prefer "precipitation" over "tp" ;-)
gridlines and the Robinson projection are missing (same as in the figures above). Here, specifically the gridlines would be helpful to see how far north or south the equator the ITCZ lies...
Potential solution for the code: prcp_cycle = ds.tp.groupby('time.month').mean() * 1000 pm = prcp_cycle.sel(month=1) ax = plt.axes(projection=ccrs.Robinson()) pm.plot(ax=ax, transform=ccrs.PlateCarree(), cbar_kwargs={'label':'precipitation (mm day$^{-1}$)'}, levels=[0.5, 1, 2, 3, 4, 5, 7, 10, 15, 20, 40], cmap='YlGnBu') ax.set_title('$\overline{P_{Jan}}$') ax.coastlines(); ax.gridlines();
-
Describe the precipitation seasonality in West Africa and in India. Name the phenomenon at play.
references are missing
-
During the summer months(e.g. August), the monsoon brings heavy rains to West Africa and to India. In the winter months (e.g. January), the West of Africa and India are more dry.
Correct. The total West African Monsoon period is June to September, for the Indian Ocean Monsoon it is roughly the same period.
-
Answer: The Intertropical Convergance Zone is located in January closer to the Southern Hemisphere and in August the ITCZ is shifted northwards into the Northern Hemisphere.
True, but why are there differences between land and ocean areas? (you have not included gridlines on your plot, but actually the ITCZ is often not reaching the southern hemisphere)
-
urope and the North Atlantic regeion is significantly warmer because of the golf stream. The golf stream transports warm water form the tropes of the north Atlantic towards the nothern Europe.
prevailing wind direction is not mentioned
-
Answer: The temperature range is the largest ober the pols. The seasonal variation in sunlight is there the most extreme and therefore also has the largest temperature range.
it is true that high latitudes are one factor for the largest temperature range. However, other factors are e.g. the continentality, seasonal snow cover. Unfortunately you computed the wrong temperature range, so you did not identify North-East Siberia as the region with the largest temperature range. ...
-
Answer: The ocean heats/cools slower than land.
ok, that is very short. Maybe mention the different heat capacities.
-
altitudes
you mean latitudes, I guess?
-
onthly_avg_temp = ds_t2m['t2m'].groupby('time.month').mean(dim='time') monthly_temp_max = ds_t2m['t2m'].groupby('time.month').max(dim='time') monthly_temp_min = ds_t2m['t2m'].groupby('time.month').min(dim='time') temp_range = monthly_temp_max - monthly_temp_min mean_temp_range = temp_range.mean(dim='month') # Plot fig, ax = plt.subplots(figsize=(12, 5), subplot_kw={'projection': ccrs.PlateCarree()}) mean_temp_range.plot.contourf(ax=ax, cmap = 'YlOrBr', add_colorbar=True, cbar_kwargs={'label': 'Temperature Range (°C)'}) ax.coastlines() ax.set_title('1.3: Average monthly Temperature Range (°C)', fontsize=16) ax.set_xlabel('Longitude') ax.set_ylabel('Latitude') plt.show()
unfortunately you do not compute the correct estimate here.
You computed the mean interannual variability range instead of seasonal variability … This would have been the correct way:
t2_cycle = ds.t2m.groupby('time.month').mean() - 273.15 ax = plt.axes(projection=ccrs.Robinson()) (t2_cycle.max(dim='month') - t2_cycle.min(dim='month')).plot(ax=ax, transform=ccrs.PlateCarree(), cbar_kwargs={'label':'$\overline{T}$ [K]'}) ax.coastlines(); ax.gridlines();
-
mean_temp = ds_t2m['t2m'].mean(dim='time') #in Kelvin mean_temp_celcius = mean_temp - 273.15 # Plot fig, ax = plt.subplots(figsize=(12, 5), subplot_kw={'projection': ccrs.PlateCarree()}) mean_temp_celcius.plot(ax=ax, cmap='coolwarm', cbar_kwargs={'label': 'Temperature (°C)'}) ax.coastlines() ax.set_title('1.1: Temporal mean Temperature $\overline{T}$ (°C)') plt.show()
Nice titles and labels. However, it is better and important to use the Robinson projection as the Earth is not a plate ;-) same true for the other figures: e.g. by using this code here:
t2_tavg = ds.t2m.mean(dim='time') - 273.15 ax = plt.axes(projection=ccrs.Robinson()) t2_tavg.plot(ax=ax, transform=ccrs.PlateCarree(), cbar_kwargs={'label':'$\overline{T}$ [K]'}) ax.coastlines(); ax.gridlines();
-
-
notebooksharing.space notebooksharing.space
-
Meridional
important to mention here that these are the "v"-component. The meridional wind-component is generally weaker than the u-component.
Also important: these are just two component of the same wind, so it is rather "zonal wind component" and "meridional wind component" (and it is best to discuss both of them together)
-
The largest ranges are on continents at high latitudes due to the lack of ocean moderation and extreme seasonal changes in solar radiation.
true, but why is it specifically large in e.g. North-East Siberia (you do not mention that although that is quite visible from the plot).
other factors to add: continentality (large land masses to the west) and seasonal variability in the snow cover (which results in larger variability in the albedo and with that in the temperature range)
-
The Northern Pacific does not have such a strong stream like the golf stream and is significantly larger, so that it would take much stronger streams to heat up. [https://nicklutsko.github.io/blog/2020/01/07/What-Keeps-Europe-Warm-In-Winter]
you could have mentioned e.g. the Kuroshio current in the North Pacific and that this one does not stretch that far northward. But overall correct.
-
At the equator solar heating causes air to rise and creates low pressure zones. At around 30° these airmasses descend and form subtropical highs. At 60° warm subtropic air meets cold polar air and creates subpolar lows. At the poles the dense, cold air sinks and creates polar highs.
Correct. Good would be to also name these three cells, and that is Hadley Cell, Ferrel Cell and Polar Cell!
And what explains the differences between the southern and northern mean sea-level pressure system?
-
Zonal winds:
This is mostly correct, but very qualitative and not directly referring to what you visualised above.
For example, would be good to explain here that the "zonal" winds describe the "u-component". And that this component is positive for wind flowing from west to east... Why is the zonal (U)- wind component that large at -50/60°latitude?
-
The westerly jet streams at 30° and 60°.
Attention: the jet streams are an upper-level wind phenomenon (and not a surface-wind phenomenon)
-
u.plot(label = 'U-component of surface wind', color= 'orange'); v.plot(label = 'V-component of surface wind'); plt.axhline(y= 0, color= 'black'); plt.legend(loc='upper right'); plt.xlabel('Latitude'); plt.ylabel('Surface wind [m/s]'); plt.grid(); plt.title('Temporal and zonal averages of surface wind components');
Great! Good idea to plot the two components together!
-
slp.plot(label = 'mean sea level pressure', color= 'orange'); plt.axhline(y= 1013.25, xmin=0.045, xmax=0.955, label='standard atmosphere pressure'); plt.legend(loc='lower right'); plt.xlabel('Latitude'); plt.ylabel('Mean sealevel pressure [hPa]'); plt.grid(); plt.title('temporal and zonal average of sea-level pressure in comparison to standard pressure');
Looks good!
-
l
sea-level pressure
-
summer
Correct. However, it is also good to add the actual months where the monsoon occurs. E.g. June to September for the Indian Summer Monsoon.
-
induces
correct. (detail: it happens with some delay of 1-2 months, as sun is the furthest North in June 21st)
-
### plotting for January ax = plt.axes(projection=ccrs.Robinson()) p_m.sel(month=1).plot(ax=ax, transform=ccrs.PlateCarree(), cmap='YlGnBu', levels=[0.5, 1, 2, 3, 4, 5, 7, 10, 15, 20, 40], cbar_kwargs={'label': 'mm per day'}) ax.coastlines(); ax.gridlines(); ax.set_title('Average daily precipitation in January');
Great ;-)
-
Heat transport by the Gulf Stream, which is then transferred to the atmosphere and advected over western Europe. Seasonal heat storage by the ocean: the ocean absorbs heat in summer and release it in winter, warming downwind regions. Atmospheric heat transport, and quasi-stationary waves in the atmosphere.
no full sentences, a bit hard to read, not explained why the gulf stream transports heat (transports warm water from the equator...)
Unclear what message you want to convey with ... "atmospheric heat transport ..."
Prevailing wind direction is not mentioned (westerlies) is not mentioned.
-
In the tropics is a consistant solar energy radiation, minimal season variation and therefore stable day and night lengths.
- missed to mention the earth's tilt
-
Question 1:
would have been great to repeat the question here
-
### plotting the temperal average temperature t2_tavg = ds.t2m.mean(dim='time') -273.15 ax = plt.axes(projection=ccrs.Robinson()) t2_tavg.plot(ax=ax, transform=ccrs.PlateCarree(), cmap='coolwarm', center=False, vmin=-40, vmax=20, levels=10, cbar_kwargs={'label': '°C'}) ax.set_title('Average annual 2m air temperature, ERA5 1979-2018') ax.coastlines(); ax.gridlines();
nice labelling of the code. However, the levels are strangely defined. You would need to increase the amount of levels to have round numbers (e.g. for every 5°C) or just use a continuous scale. I would also prefer a colorscale that is centered at zero °C (not center=False)
-
-
notebooksharing.space notebooksharing.space
-
at the southpole
at the south pole itself, the wind is relatively weak due to the absence of significant pressure gradients... (except for katabatic flows near ice sheets, but these are not part o f the global circulation)
-
equator
I wouldn't say that the air comes from the equator as it is just the descending air from the equator-nearest part of the Hadley Cell (around 30°N/S) that interacts with the rising air from the polar cells
-
Answer
It would have been good to also mention the different "cell names". Hadley cell (until 30°), Ferrel cell (30°-60°) and polar cell (>60°)
-
https://earthscience.stackexchange.com/questions/43/why-is-europe-warmer-than-north-america-at-similar-latitudes https://www.americanscientist.org/article/the-source-of-europes-mild-climate https://www.carbonbrief.org/guest-post-why-does-land-warm-up-faster-than-the-oceans/
great that you added references though it is a bit unclear which reference you used for which question. Best is to always add them at the end of the special part of the answer.
-
#plt.rcParams['figure.figsize'] = (12, 5) # Default plot size
you have forgotten to uncomment this here. That is the reason for the strange looking titles. If you do not specific it here, you have to always specify it on every figure... via e.g. plt.figure(figsize=(12,5))
-
u_mean.plot(ax=axes[1], label='U-Wind(m/s)') axes[1].axhline(0, color='black', linestyle='--',label='No Wind') axes[1].legend() axes[1].set_title('Zonal Mean of U-Wind', fontsize=14, fontweight='bold') #V-Wind Plot v_mean.plot(ax=axes[2], label='V-Wind(m/s)') axes[2].axhline(0, color='black', linestyle='--',label='No Wind') axes[2].legend() axes[2].set_title('Zonal Mean of V-Wind', fontsize=14, fontweight='bold')
here the unit is [m/s] and it is best to add that to the y-label
To make it easier to understand for the reader, I would replace U-wind by zonal wind (u-) component at 10m and "V-Wind" by meridional wind (v-) component at 10m.
-
At 60°N/S especially S we have very high wind speed
Attention: the surface wind speeds (secifically the u-component) are only very high at around -50/-60° not at 60°N. Why? Because of the Antarctic Ocean (no land to reduce the wind speed....)
-
s due to the jet stream
Attention: the jet-stream is an upper-level phenomenon, however, you describe here the surface wind at 10-metre
-
Answer
Good!
-
U
better to call that zonal component
-
U
V (should be the v- component) -- > better to call that meridional wind
-
In general on the SH pressure is lower than on the NH because of the difference in sea:land ratio. When there is more ocean Low pressure systems can form and exist easier.
Good!
-
and
correct (just a detail for clarification: it expands because pressure decreases with altitude. This expansion causes the air to cool adiabatically. As the air cools, its ability to hold moisture decreases, leading to condensation and the formation of clouds and precipitation near the equator.)
But we did not expect you to add that ;-)
-
d(m
missing " " (space)
-
fig, axes = plt.subplots(nrows=3, ncols=1, figsize=(10, 10)) #MSL Plot SLP.plot(ax=axes[0], label='SLP (hPa)') axes[0].axhline(1013.25,color='r', linestyle='--', label='1 atm (1013.25)') axes[0].legend() axes[0].set_title('\nZonal Mean of Sea-Level Pressure', fontsize=14, fontweight='bold')
it looks good. But you forgot to update the ylabel -> it should be "hPa" instead of msl ;-)
-
In west Africa there is the seasonal effect of the 'West African Monsoon'. Because in NH summer there is southwest wind which blows all the humidity onto land leading to precipitation in west Africa. In Winter there is a dry norhteast wind resulting in dry conditions and therefore the ITCZ shifts more to the south there. India experiences the 'southern Asia summer monsoon' which is caused by the different heat capacities and the resulting season shift of the wind. In summer the wind blows from the ocean to the land bringing in the precipitation because lands heat up faster creating a Low. In winter the wind comes from the Northeast bringing dry conditions from inland.
more or less correct. Though it would be good to directly mention the months (e.g. June to September for the West African Monsoon). The answer also misses a bit to directly state what happens during the monsoon. The monsoon season is the wet season with intense and heavy precipitation...
-
The ITCZ in January is a more south than in August. This is because the ITCZ is following the sun's zenith. There are perturbations of a straight line because of the differences of land masses and oceans. The straight line would go through the Tropics either north(Aug) or south(jan) of the equator.
Correct. However, there is also a delay of one to two months (the sun is furthest north on e.g. July 21...). Also: there are more land masses on the northern parts of the globe, that is the reason why the ITCZ lies well to the north of the equator over Africa, Asia, and Central America...
-
levels= [0.5, 1, 2, 3, 4, 5, 7, 10, 15, 20, 40] fig, axes = plt.subplots(2, 1, figsize=(15, 10), subplot_kw={'projection': ccrs.Robinson()}) fig.suptitle('Average Daily Precipitation \n',fontsize=15, fontweight='bold') # January jan = pre_mthly_mm.sel(month=1) jan.plot(ax=axes[0], cmap='YlGnBu', transform=ccrs.PlateCarree(),cbar_kwargs={'label': 'Precipitation(mm)'}) axes[0].coastlines(); axes[0].gridlines() axes[0].set_title('January') #August aug= pre_mthly_mm.sel(month=8) aug.plot(ax=axes[1],cmap='YlGnBu', transform=ccrs.PlateCarree(), cbar_kwargs={'label':'Precipitation(mm)'}) axes[1].coastlines(); axes[1].gridlines() axes[1].set_title('August');
you define the levels as requested, but you do not use them to plot the figure. The diferences are better visible when actually showing distinct levels as requested.
Example code: prcp_cycle = ds.tp.groupby('time.month').mean() * 1000 pm = prcp_cycle.sel(month=1) ax = plt.axes(projection=ccrs.Robinson()) pm.plot(ax=ax, transform=ccrs.PlateCarree(), cbar_kwargs={'label':'precipitation (mm day$^{-1}$)'}, levels=[0.5, 1, 2, 3, 4, 5, 7, 10, 15, 20, 40], cmap='YlGnBu') ax.set_title('$\overline{P_{Jan}}$') ax.coastlines(); ax.gridlines();
In addition, precipitation unit is "mm per day" ( not just mm as you labelled it)
-
The largest Temp range is located in Siberia/North-East Russia. THis is because of the continentality, i.e. there is no significant ocean close by(especially not westwards) where warm marine winds could heat up the land. In winter there is very few sunlight and as we know land loses energy way faster than water so it can get up to -60°C. Whereas in summer there is way more sunlight and bc of the small heat capacity, only few energy is needed to heat up the land. Also in winter there is the "siberian high" which is inducing clear sky so there is a lot of radiative cooling due to the nights being way longer than the days
true, in addition, we also have the high latitude which allows for larger seasonal variability and the seasonal snow cover variability...
-
The winds over the Northern Pacific carry air from the pacific ocean westward onto the western coasts of North America. These winds, however, do not penetrate very far inland because of the Rocky Mountains, which block the warm maritime air and limit its influence on the interior of the continent. Although similar, the Kuroshio Current in the Pacific does not extend as far north and carries less heat to high latitudes. The result of this weaker northward transport of warm water is that the Northern Pacific does not moderate temperatures in the same way the North Atlantic does.
good explanation
-
T2_m_dif= T2_mthly.max(dim='month')-T2_mthly.min(dim='month') ax = plt.axes(projection=ccrs.Robinson()) T2_m_dif.plot(ax=ax, transform=ccrs.PlateCarree(),cbar_kwargs={'label': 'Temperature Range (°C)'}) ax.coastlines(); ax.gridlines() plt.title('Annual Temperature Range\n',fontsize=15, fontweight='bold');
This one ist the right figure that we expected ;-)
-
In [3]: T2_temp= t2.mean(dim='time')-273.15 ax = plt.axes(projection=ccrs.Robinson()) T2_temp.plot(ax=ax, transform=ccrs.PlateCarree(),cbar_kwargs={'label': '2m Temp(°C)'}) ax.coastlines(); ax.gridlines() plt.title('Average 2 Meter Temperature from 1979-2018 \n', fontsize=16, fontweight='bold');
the layout of the figure is strange and the title text is not completely readable. Maybe it only is due to the html? Best is to specify the size of the figure at the beginning or with every figure via e.g. plt.figure(figsize=(12,4))
You have titles and a label. But better would be to replace 2m Temp(°C) by "2m Temperature (°C)"
-
-
notebooksharing.space notebooksharing.space
-
Zonal winds are predominantly west-to-east in the mid-latitudes due to the Coriolis effect and strong pressure gradients between subtropical highs and subpolar lows. In the tropics, easterly trade winds dominate, driven by the pressure gradient between the subtropical highs and the equatorial low (ITCZ). Meridional winds are generally weaker, occurring where air moves poleward or equatorward, such as in the Hadley and Polar cells.
Good. As you explained already well in question 1 the locatoin of the cells, it is ok that you do not mention here again where the different cells begin/end.
-
ph, it becomes clear that the areas with the strongest wind are the same areas, where the pressure-gradient is the largest (For Example at lat=-50).
Great!
-
In the extra tropical convergence zone (ETCZ) the high solar radiation causes a rise of moist, warm air, which leads to a low near the equator. A pronounced subtropical-high (around 30° latitude in both hemispheres) next to ETCZ is caused by sinking air of the Hadley cell. Furthermore, a subpolar-low (Around 60° latitude in both hemispheres) is caused when warm air from the mid-latitudes meets cold polar air, creating a region of strong temperature contrast (Ferrel-Cell is thermally indirect cell). The subpolar-low is a lot stronger on SH because of a stronger temperature gradient and less land surface. Finally, a polar-high near the poles is prevalent, because cold, dense air sinks over the poles, creating regions of high pressure (Polar-Cell).
Great!
-
E
I
-
extra
Intertropical ;-) (not extra)
-
In [13]: ### Exercise 3.2: # Computing the temporal and zonal averages of windspeed for east/west and north/south direction: u_zonal_avg = ds3.u10.mean(dim=['time','longitude']) v_zonal_avg = ds3.v10.mean(dim=['time','longitude']) # Creating the plot including the line for 0 wind speed plt.plot(ds3.latitude, u_zonal_avg, linewidth=2, color='darkgreen', label='Zonal Average Wind u (West/East)') plt.plot(ds3.latitude, v_zonal_avg, linewidth=2, color='purple', label='Zonal Average Wind v (North/South)') plt.axhline(linewidth=2, color='black',linestyle='--', label = 'Reference Line at 0') # Adding Labels and a legend: plt.title('Temporal and Zonal Average Wind Speed 10m over Ground (ERA5 1979-2018)') plt.xlabel('Latitude') plt.ylabel('Average Wind [m/s]') plt.legend() plt.show()
Great!
-
In [12]: ### Exercise 3.1: # Calculating the temporal and zonal average of sea-level pressure: p_zonal_avg = ds3.msl.mean(dim=['time','longitude']) p_zonal_avg = p_zonal_avg / 100 # Converting from [Pa] to [hPa] # Creating the line-plot: plt.plot(ds3.latitude, p_zonal_avg, linewidth=2, label='Zonal Average Pressure') plt.axhline(y=1013, linewidth=2, linestyle='--', color='black', label='Standard Atmosphere Pressure [1013 hPa]') # Adding lables and a legend: plt.title('Temporal and Zonal Average Sea-level Pressure (ERA5 1979-2018)') plt.xlabel('latitude') plt.ylabel('Mean Sea-level Pressure [hPa]') plt.legend() plt.show()
Great!
-
25-27 fronm Chapter 2
I guess you mean here the lecture slides? Remember to clarify that normally.
-
Firstly, the seasonality of the precipitation is caused by the shift oft the ITCZ over the year. In August the ITCZ is futher north over India and West Africa, so there is a lot of Precipitation in this region. In January the ITCZ is further south and so India and West Africa have less precipitation. Additionally, as discussed in the lecture a phenomena called monsoon (Indian Summer Monsoon or West African Monsoon respectively) which is mainly caused by the different heat capacities between ocean and land and the resulting wind direction, is induced by this shift of the ITCZ. The result is a rainy season in Summer and a dry season in Winter for these two regions.
Correct. You could also specify the months where the monsoon occurs (i.e.. June to September), but this is more of a detail.
-
In General the ITCZ can always be found near the equator in the tropics. In August the ITCZ is quite a bit further north than in Jannuary. A really distinct difference in the position of the ITCZ can befound over south-east-asia, where the ITCZ is north of the equator in August and south of it in January. The ITCZ shifts seasonally due to the Earth's axial tilt, causing variations in solar heating, which, in turn influences the position of the zone of maximum convection.
Correct! But what is the reason for the different land/ocean distribution of the ITCZ?
-
### Exercise 2.2: # Defining levels and colormap: levels = [0.5, 1, 2, 3, 4, 5, 7, 10, 15, 20, 40] colormap = "YlGnBu" # Creating a figure with 2 subplots: fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(16,9), subplot_kw={'projection': ccrs.Robinson()}) im1 = monthly_avg_pre.sel(month=1).plot(ax=ax1, transform=ccrs.PlateCarree(), cmap=colormap, vmin=0, vmax=40, levels=levels, add_colorbar=False) ax1.coastlines() ax1.gridlines() ax1.set_title("January") im2 = monthly_avg_pre.sel(month=8).plot(ax=ax2, transform=ccrs.PlateCarree(), cmap=colormap, vmin=0, vmax=40, levels=levels, add_colorbar=False) ax2.coastlines() ax2.gridlines() ax2.set_title("August") # Adding a shared colorbar and a title to the plot: cbar = fig.colorbar( im1, ax=[ax1, ax2], orientation='vertical', fraction=0.02, # Adjusting width of the colorbar pad=0.03, # Adjusting the space between colorbar and plots label='Average Daily Precipitation [mm/d]') fig.suptitle("Monthly Average Precipitation (ERA5 1979-2018)", x=0.7, size=12) plt.show()
Looks great! Though I would prefer mm day-1 (instead of mm/d). But this is a detail. The legend that is shared for both subplots is nicely visualised!
-
This is again related to the ocean currents in the respective region. We have already discussed the influence of the gulf-stream above, where really warm water from near the equator eventualy finds its way towards northern europe. In the northern Pacific ocean there are also some ocean currents, but none that are this pronounced and impactful, also because the Pacific is much bigger. Moreover, the prevalent current in this region transports the water just from east to west, without any major change in latitude and hence the water is not that warm.
maybe good to mention here e.g. the Kuroshio current. But the overall answer is correct.
-
The largest temperature range can typically be found over areas in high latitudes with a lot of landsurface in it's surroundings (especially to the west). If this is the case, we have only small damping-effects of the oceans and the differences between the seasons are significant. To name a few, exemplary spots are siberia and north-east canada, where a continental climate is prevalent. Overall, temperatures on the northern hemisphere fluctuate more than on the southern hemisphere, since large parts are covered of landmass.
Great answer. One missing point is a bit the seasonal snow cover (and with that the albedo effect).
-
(especially to the west)
that's true, but maybe explain why it is important that these landmasses are to the west ... prevailing wind direction?
-
1.) Look at the zonal temperature anomaly map: Explain why northern Europe and the North Atlantic region is significantly warmer than the same latitudes in North America or Russia:
Nice structure of the answers with a clear statement of the references ;-)
-
Stream
would have been great to add that the gulf stream transports warm water from the tropics.
-
# Calculating the average Temperature in °C: t2m = ds1.t2m.mean(dim='time') avg_t2m = t2m - 273.15 # Converting from [K] into [°C] # Defining the map projection (how does the earths sphere get depicted on a 2-dimensional map): ax = plt.axes(projection=ccrs.Robinson()) # Plotting the variable T onto ax: avg_t2m.plot(ax=ax, transform=ccrs.PlateCarree(), cmap='plasma', vmin=-40, vmax=30, cbar_kwargs={'label': 'Temperature [°C]'}) #Note: The keyword "transform" tells the function in which projection the data is stored. # Adding gridlines and coastlines to the plot ax.coastlines(); ax.gridlines(); ax.set_title("Average annual 2m air temperature (ERA5 1979-2018)") plt.show()
Nicely done! Great code commenting!
However, if you add vmin and vmax, make sure to justify, double-check which values to choose...
-
### Exercise 1.3: # Computing the average temperature for each month: monthly_avg_T = ds1.t2m.groupby('time.month').mean(dim='time') monthly_avg_T = monthly_avg_T - 273.15 # Converting from [K] in [°C] # Calculating the temperature range between the coldest and the warmest month on average: T_range = monthly_avg_T.max(dim='month') - monthly_avg_T.min(dim='month') # Constructing the plot: ax = plt.axes(projection=ccrs.Robinson()) T_range.plot(ax=ax, transform=ccrs.PlateCarree(), cmap='Oranges', vmin=0, vmax=60, levels=7, center=False, cbar_kwargs={'label': 'Temperature Range [°C]'}) ax.coastlines(); ax.gridlines(); ax.set_title("Temperature range of the average monthly Temperature (ERA5 1979-2018)") plt.show()
Great!
-
vmin=-20, vmax=20,
It can be sometimes a good idea to add these minimum/maximum values. But it may also hide patterns. So, if you do that, it would be good to check the maximum/minimum values and justify why you decide to use that approach.
-
# Doing the same plot again with discrete levels for better readability: ax = plt.axes(projection=ccrs.Robinson()) avg_t2m.plot(ax=ax, transform=ccrs.PlateCarree(), cmap='plasma', vmin=-40, vmax=30, levels=8, cbar_kwargs={'label': 'Temperature [°C]'}) ax.coastlines(); ax.gridlines(); ax.set_title("Average annual 2m air temperature (ERA5 1979-2018)") plt.show()
Great idea to check both options
-
- Jan 2024
-
notebooksharing.space notebooksharing.space
-
About the zonal winds: Starting from the equator until +30 and -30 degrees we know there are trade winds present (u-component below zero meaning going from east to west). Above 30 degrees (NH and SH) we have the westerlies, which are also reflected in the plot (u-component above zero meaning going from west to east). About the meridional winds: Close to the equator we can see that the v-component is close to zero. Starting there going northwards the v-component is negative because of the south component of the trade winds. The same occurs vice versa going from the equator towards south, where we can see positive values for the v-component, meaning the winds go from south to north, which is also because of the trade winds. Above 30 (NH and SH) we have the westerlies which are better seen in the v-component on the southern hemisphere showing negative values again meaning going from south to north. (For the NH the westerlies have positive values but here they are barely visible.)
connection to sea-level pressure plot is missing , what is the reason for the different wind component directions?
WHat is the difference between south and north?
nicer to create two separate blocks then one large paragraph
-
What can be seen in the pressure is the low pressure system around the equator -> the ITCZ (intense solar heating -> warm air rises). What we also know is the polar lows the most intense low is at around latitude -60 until -70 degrees. At around 30 degrees north and south we can see a higher pressure as the average: here are the subtropical highs where air is descending.
differences between north and south?
-
Answers:
references are missing
-
slp_mean=(dd.v10.mean(dim='time').mean(dim='longitude'))
same comments as for sea-level pressure figure
specifically the ylabel unit is missing (wind speed (m/s) )
-
slp_mean=(dd.u10.mean(dim='time').mean(dim='longitude'))
same comments as for sea-level pressure figure
specifically the ylabel unit is missing (wind speed (m/s) )
-
In [13]: slp_mean = (dd.msl.mean(dim='time').mean(dim='longitude'))/100 - 1013.25 slp_mean.plot(label='MSL') slp_mean = dd.u10.mean(dim='time').mean(dim='longitude') slp_mean.plot(label='U') slp_mean = dd.v10.mean(dim='time').mean(dim='longitude') slp_mean.plot(label='V') plt.legend() plt.axhline(y=0, color='black') plt.savefig('part3')
While it is nice to have all components compared together, you would have needed a second y-axis. Now you compare different units against each other and it is unclear which unit the y-axis has (just having the label 'v10' is wrong).
Just comparing the two wind components together is easier (as both have the same unit ('wind speed (m/s)' )
-
In [10]: slp_mean=(dd.msl.mean(dim='time').mean(dim='longitude'))/100 slp_mean.plot() plt.title('Temporal and zonal average of sea-level pressure') plt.axhline(y=1013.25)
you forgot to add a proper ylabel, e.g. plt.ylabel('Pressure (hPa)')
also a legend could explain the differences between the zero-line and the pressure line
using dots for the horizontal line would have also made it clearer:
plt.axhline(y=1013.24, ls='--', label='Standard atmosphere pressure')
-
-
notebooksharing.space notebooksharing.space
-
Questions:
references are missing!
-
Zonal winds move along east west. They arise at the equator due to warm rising air at the ITCZ generating lows resulting into east west trade winds. In the subtropics descending air from the hadley cell forms subtropical highs contributing to trade winds. In mid-latitudes westerlies prevail due to ferrell cell circulation. Meridional winds move along north south. More significant flow occurs, especially in regions with strong pressure gradients, such as the polar front. In polar regions meridional flow is influenced by the polar easterlies and westerlies. These winds arise from diffrences in sea-level pressure, shaped by solar heating and influenced by the Coriolis effect induced by the Earth's rotation.
would have been nice to mention differences between northern and southern hemisphere, differences in wind speed between zonal and meridiional winds
-
As we can see at -30° and 30° we have high pressure systems wich are known as the subtropical highs (between hadley cell and ferrell cell) At -60° and 60° we can see low pressure systems (the one at -60° is way stronger because there is not that much landmass in the south) wich are known as the subpolar lows (between ferrell cell and polar cell) At the poles we usually have high pressure systems wich are very weak
you forgot to mention the low at the equator. Also, why is there a low at the equator?
-
#temporal average for u10 and v10
see comment above for sea level pressutre component
-
#temporal average temporal_average = (ds_winds_and_msl['msl'].mean('time'))/100 #zonal average zonal_average = ( ds_winds_and_msl['msl'].mean(['longitude','time']))/100 y1 = temporal_average y2 = zonal_average x = ds_winds_and_msl['latitude'] plt.plot(x,y1,color = 'Blue') plt.plot(x,y2,color = 'Red') plt.title('Zonal average (Red) and Temporal average (Blue) of sea level pressure') plt.ylabel('Pressure in hPa') plt.xlabel('Latitude') plt.axhline(1013.25,color='Green', linestyle='--', label = 'Standard atmospher pressure (hPa)') # Add the value on the y-axis plt.text(x.min()-10, 1013.25, f'{1013.25}', va='center', ha='right', color='Green') plt.legend(loc = 'lower right') plt.show()
interesting way of showing both, only temporally averaged sea level pressure and the zonally and temporally averaged sea level pressure. It can be a bit confusing and for a more important report you might have wanted to e.g. decrease the transparency of the blue lines (using e.g., alpha = 0.3).
In addition, labels for the blue and red lines are missing in the legend. You mention it in the title but actually it belongs rather into a legend. The title is a bit unclear, because the red line is the "zonally and temporally averaged line", while the blue line is just the temporally averaged line.
Same is true for the wind component plots
-
-
notebooksharing.space notebooksharing.space
-
Answer:
real references are missing, there are quite a lot of typos, would have been great if you would have gone a bit more into the details of the answers, however you gave some important details in your short answers :-)
-
l='sea-lvl-pressure')
write it out: "sea-level pressure"
-
ax2.set_ylabel('Speed (m/s)') # we already handled the x-label with ax1
Wind speed (m/s) is better
-
ds = ds.rename({'u10':'Zonal Winds', 'v10':'Meridional Winds'}) # Compute the temporal and zonal average of sea-level pressure avg_slp = ds['msl'].mean(dim=['time', 'longitude']) # Convert it to hPa avg_slp_hpa = avg_slp / 100 fig, ax1 = plt.subplots(figsize=(10, 6)) color = 'tab:red' ax1.axhline(y=1013.25, color='r', linestyle='--', label='standard atmosphere pressure') # standard atmosphere pressure ax1.set_xlabel('Latitude') ax1.set_ylabel('Pressure (hPa)', color=color) ax1.plot(avg_slp_hpa['latitude'], avg_slp_hpa, color=color, label='sea-lvl-pressure') # specify latitude as x-axis ax1.tick_params(axis='y', labelcolor=color) ax2 = ax1.twinx() # instantiate a second axes that shares the same x-axis colors = ['blue', 'lightblue'] variables = ['Zonal Winds', 'Meridional Winds'] ax2.set_ylabel('Speed (m/s)') # we already handled the x-label with ax1 ax2.axhline(y=0, color='b', linestyle='--', linewidth=1, label='0-line') #ax1.axvline(x=) for var, color in zip(variables, colors): avg_var = ds[var].mean(dim=['time', 'longitude']) ax2.plot(avg_var['latitude'], avg_var, color=color, label=var) # specify latitude as x-axis ax2.tick_params(axis='y', labelcolor=color) # Adjust the y-axis limits so that s_msl corresponds to 0 ax1.set_ylim(bottom=983, top=1043.5) ax2.set_ylim(bottom=-8, top=8) fig.tight_layout() # otherwise the right y-label is slightly clipped plt.title('Temporal and Zonal Average of Sea-Level Pressure and Wind Speeds') # Add legends ax1.legend(loc='upper left') ax2.legend(loc='upper right') plt.savefig('msl.png') plt.show()
Nice effort to plot all into one figure. For an important report (like Bachelor thesis), it probably would have been a bit too "crowded", but I agree that it is nice for comparing directly pressure and wind systems. TO clarify which linke corresponds to which yaxis, you could probably write a legend title with "Wind speed (right yaxis)" and "Pressure (left yaxis)".
-
-
notebooksharing.space notebooksharing.space
-
The general circulation of the Earth's atmosphere includes the equatorial low-pressure zone near the equator, subtropical high-pressure zones around 20-30 degrees latitude, and polar low-pressure zones near the poles. These patterns are attributed to the distribution of solar radiation. Zonal winds (east-west) on Earth are influenced by pressure differences between the equator and mid-latitudes, creating Trade Winds near the equator and prevailing westerlies in mid-latitudes. Meridional winds (north-south) result from the Hadley and Ferrel Cell circulations, causing air to move poleward and equatorward. Near the poles, polar easterlies flow equatorward. These wind patterns are driven by the distribution of sea-level pressure, influenced by solar heating, and are affected by the Coriolis effect due to Earth's rotation.
direct references are missing, a little bit missing are the differences between southern and northern hemisphere and that the meridional (v-components) are overall weaker than the zonal (u-components)
-
ax2.set_ylabel('Speed (m/s)')
Better to write here "wind speed"
-
# Compute the temporal and zonal average of sea-level pressure a_slp = ds_wind['msl'].mean(dim=['time', 'longitude']) # Convert it to hPa a_slp_hpa = a_slp / 100 fig, ax1 = plt.subplots(figsize=(10, 6)) # Plot sea-level pressure color = 'tab:red' ax1.axhline(y=1013.25, color='r', linestyle='--', label='Standard Atmosphere Pressure') ax1.set_xlabel('Latitude') ax1.set_ylabel('Pressure (hPa)', color=color) ax1.plot(a_slp_hpa['latitude'], a_slp_hpa, color=color, label='Sea Level Pressure') ax1.tick_params(axis='y', labelcolor=color) ax2 = ax1.twinx() # Plot wind speeds colors = ['blue', 'lightblue'] variables = ['u10', 'v10'] ax2.set_ylabel('Speed (m/s)') ax2.axhline(y=0, color='b', linestyle='--', linewidth=1, label='0-line') for var, color in zip(variables, colors): a_var = ds_wind[var].mean(dim=['time', 'longitude']) ax2.plot(a_var['latitude'], a_var, color=color, label=f'{var} Wind Speed') ax1.set_ylim(bottom=a_slp_hpa.min(), top=a_slp_hpa.max()) ax2.set_ylim(bottom=-8, top=8) ax1.grid(True) ax2.grid(True) ax1.legend(loc='upper left') ax2.legend(loc='upper right') plt.title('temporal and zonal average of sea-level pressure and wind speeds') fig.tight_layout() plt.show()
Nice effort to plot all into one figure. For an important report (like Bachelor thesis), it probably would have been a bit too "crowded", but I agree that it is nice for comparing directly pressure and wind systems. TO clarify which linke corresponds to which yaxis, you could probably write a legend title with "Wind speed (right yaxis)" and "Pressure (left yaxis)".
-
-
notebooksharing.space notebooksharing.space
-
Questions:
References are missing!
-
The strongest winds are the westerlies, which equals the strong low pressure around the Antartica and also the northerly wind coming from the subtropical high system zone. Little bit south of the equator the wind is coming from south and a bit north of the equator from north. The zonal winds are coming from the East in the tropics due to the Coriolis force. This are the trade winds.
you describe it correctly, but you could have added the relationship to sea-level pressure, or e.g. that meridional winds (North<->South) are overall less intense than zonal winds.
-
From south to north: the first and deepest low pressure system is the sub-polar low, the subtropical high at around 30° follows and then at the equator is the low pressure system of the ITCZ. On the northern hemisphere it is the other way round with weaker intensities because of more landmass.
this is correct but you could have gone a bit more into the details, why is there low pressure at the equator and at sub-polar regions?
-
sterlies for example). In [11]: slp = dw.msl.mean(dim=['time', 'longitude']) / 100 slp.plot(label='slp') plt.axhline(y=1013.25, c='red', label='standard atmosphere pressure') plt.legend(loc='lower right') plt.ylabel('sea-level pressure [hPa]') plt.title('The temporal and zonal average of sea-level pressure (slp)');
Great!
-
'slp
it is nicer to just write it out (i.e., "sea-level pressure"), but this is a small detail
-
avg_u10.plot(label='u-component') avg_v10.plot(label='v-component')
if you wanted to be even more correct you could have written: zonal (u-component) and meridional (v-component)
-
plt.ylabel('wind speed [ms**-1]')
if you do instead: 'm s$^{-1}$' the layou hould look correctly.
-
-
notebooksharing.space notebooksharing.space
-
summary, the sea-level pressure plot helps identify the positions of high and low-pressure systems, and the wind component plots provide insights into the direction and strength of zonal and meridional winds across latitudes.
you do a nice summary here, but it stays very general and you don't do a connection between the two aspects.
For both questions, references are missing!
-
Direction and strength of zonal and meridional winds:
would also have been nice if you say what a positive meridional wind means (means wind going northward) and what a positive zonal wind means (means wind going eastward)
-
Zonal Winds (East-West): The zonal winds (represented by u10u10u_{10}) exhibit a pattern from east to west and west to east at different latitudes. The plot helps in visualizing the dominant wind direction. Near the equator, easterly trade winds prevail, while at higher latitudes, westerlies dominate.
would have been nice if you described it a bit more in detail, e.g. what are the differences between southern and northern hemisphere and what is the connection with the sea level pressure???
-
-
notebooksharing.space notebooksharing.space
-
Answers:
Great Answers, perfect!!!
-
v-component
also called "meridional wind"
-
u component of the wind
also called ("zonal wind")
-