Skip to content

Add spatially heterogeneous soil colour maps for NoahMP (based on feature/monan-757-NF)#19

Open
mpaiao wants to merge 23 commits into
monanadmin:feature/monan_2.0.0from
mpaiao:757nf-plus-soil-colour
Open

Add spatially heterogeneous soil colour maps for NoahMP (based on feature/monan-757-NF)#19
mpaiao wants to merge 23 commits into
monanadmin:feature/monan_2.0.0from
mpaiao:757nf-plus-soil-colour

Conversation

@mpaiao

@mpaiao mpaiao commented Jan 5, 2026

Copy link
Copy Markdown

Pull Request Description

This pull request supersedes PR #18 as it is based on branch feature/monan-757-NF.

Updates in this pull request include (1) replacement of the original soil colour categories from NoahMP with those from CLM-5 and (2) soil colour initialisation in NoahMP based on input maps. These changes addresses the issue that native NoahMP simulations have too little variation in reflectivity across sparsely vegetated regions known to have marked variation in albedo (e.g., Sahara, Namibian desert).

Most changes follow the steps to initialise soil texture in NoahMP, and were needed to ensure each grid cell sets the reflectivity parameter based on the input data. This pull request does not provide any data itself: if these data sets are not provided, the code will fall back to default (i.e., globally homogeneous soil colour index). By default, this option is disabled.

For users not interested in running with heterogeneous soil colour, no action is needed. Otherwise, they must follow these steps:

  1. Generate the data set in the MPAS-compatible format and place the files in the same path where the other input data sets for static initialisation data sets are located (i.e., geog_sub_path), under a path named clm_soilcolour_21class_30s. Scripts that read in CLM-5 data and translate them to NoahMP format are available at this git repository. Or if running MONAN on Jaci, make sure to point to a path where this is already available.
  2. In file namelist.init_atmosphere, edit namelist data_sources to include the following:
        config_soilcol_data = 'MODIFIED_RAD_CLM_NOAH'
    (if not provided, the code will use the default value, i.e. config_soilcol_data = 'DEFAULT_RAD_NOAH')
  3. Generate the new set of static fields, then make sure that the same option for config_soilcol_data is used during the model execution. If using scripts_CD-CT, make sure that both namelist.init_atmosphere.TEMPLATE and namelist.init_atmosphere.STATIC have this configuration, and make sure that the script overwrites the static files under step 2.
  4. Make sure that you are using the same parameter table NoahmpTable.TBL as provided in the source code (/path/to/MONAN-Model/src/core_atmosphere/physics/physics_noahmp/parameters/NoahmpTable.TBL).

Collaborators

@aomanzi @marcelopaivaramos @carlosrenatosouza2 @pkubota @marcelo-santini

Type of Change

  • Bug fix
  • Hot fix
  • New feature
  • Improvement to existing functionality
  • Code refactoring
  • Code optimization
  • Other: ______

Testing and Quality

  • Code was written following MONAN’s DTN-01 (Coding Standard)
  • Compilation and execution tests of the model were executed
  • Test with the debug flag was executed
  • Results are reproducible with the default configuration

Scientific Impact

This implementation should allow for better spatial representation of surface reflectivity at global scales. This is simply a rebase of PR #18 onto feature/monan-757-NF. The results are consistent with the previous pull request. The differences in albedo (defined in the bulk form, i.e., ratio of average upwelling solar irradiance and downwelling solar irradiance, both integrated over a 48-hour period) between this pull request and the baseline version (feature/monan-757-NF).

albbulk_base_soil_colour_NoahMP_2025092200 albbulk_test_soil_colour_NoahMP_2025092200 albbulk_diff_soil_colour_NoahMP_2025092200

mpaiao added 8 commits January 5, 2026 07:41
This is the first commit to implement geographically variable soil colour initialisation
in MONAN. First, the original Noah-MP table of albedo thresholds was replaced by the
CLM-5, and the code was edited so the soil colour class is no longer hardcoded.
…and replaces the

original classes in NoahMP (8 classes) with those defined in CLM-5 (20 classes).

This has not been tested yet, so it is likely the first of a few commits until the new
capability is fully functional.
@mpaiao mpaiao changed the title 757nf plus soil colour Add spatially heterogeneous soil colour maps for NoahMP (based on feature/monan-757-NF) Jan 5, 2026
@mpaiao

mpaiao commented Jan 10, 2026

Copy link
Copy Markdown
Author

I finally managed to get the postprocessing to work, and I confirm that this new pull request is qualitatively producing the same results as #18 (I didn't pursue bit-for-bit compatibility as the baseline is different in any case). I will mark this PR as ready for review and close #18.

@mpaiao mpaiao marked this pull request as ready for review January 10, 2026 13:30
@joaomas joaomas changed the base branch from feature/monan-757-NF to feature/monan_2.0.0 May 7, 2026 14:16
@netosylvio netosylvio changed the base branch from feature/monan_2.0.0 to develop May 11, 2026 18:35
@netosylvio netosylvio changed the base branch from develop to feature/monan_2.0.0 May 11, 2026 18:36
@joaomas joaomas requested a review from netosylvio May 26, 2026 13:30

@netosylvio netosylvio left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Marcos, conforme definimos em conjunto na reunião de hoje (03/06/26), segue as seguintes necessidades:

  • Alteração no Pull Request visando isolar e manter a autonomia de execução tanto do noahmp original quanto do noahmp alterado com soilcolour_30s (para o MONAN), podendo via namelist.atmosphere.TEMPLATE ativar ou não essa opção.
  • Caso o usuario opte por ativar essa opção no namelist (acrescentando a linha config_lsm_scheme = 'sf_noahmp_monan' por exemplo) nesse caso o modelo utilizaria os arquivos de soilcolour_30s com a tabela NoahmpTable.TBL alterada para 21 categorias de cor de solo.
  • Caso o usuário não altere nada, o MONAN segue sua execução normal utilizando os arquivos de entrada default.

Obrigado
GCC

mpaiao added 4 commits July 2, 2026 13:11
… colour directory

is not found. This __should__ allow for the code to proceed without failing.
…outine. It seems the

code is overwriting the default value.
Now it must always be "MODIFIED_RAD_CLM_NOAH".
@mpaiao

mpaiao commented Jul 3, 2026

Copy link
Copy Markdown
Author

[English version below]

Oi @netosylvio, eu atualizei o Pull Request. Fiz um pouco diferente do que havíamos discutido, seguindo uma sugestão do @marcelo-santini, que achei mais elegante. Ao invés de duplicar o NoahmpTable.TBL, eu simplesmente adicionei três novos namelists ao existente, usando a mesma lógica que já existe para o caso da vegetação (há duas tabelas, uma baseada no IGBP/MODIS e outra, default, no USGS).

A diferença de lógica entre a vegetação e cor do solo é que, no caso da cor do solo, se o(a) usuário(a) não configurar o MONAN explicitamente para usar cor de solo heterogênea, o código vai usar apenas os namelists que já existiam, e o código vai rodar também com cor de solo homogênea que já existia no NoahMP para o domínio todo.

Eu testei as duas configurações na Jaci, e ambas estão funcionando como esperado. E atualizei o comentário inicial para explicar melhor estas atualizações.

Obrigado pelo feedback, e desculpe-me pela demora em ver isto!


Hi @netosylvio, I updated this Pull Request. I refactored it slightly differently from our previous discussions, following a suggestion from @marcelo-santini that I think is neater. Instead of duplicating NoahmpTable.TBL, I simply added three more namelists to NoahmpTable.TBL, using the same logic that is already in place for vegetation (there are two vegetation tables, one based on IGBP/MODIS and another, the default, based on USGS).

The difference between the vegetation and soil colour logics is that, for soil colour, the code will fall back to defaults in case the user does not explicitly requests the new heterogeneous soil colour maps. In this case, the code will just search for the namelists that already existed in NoahmpTable.TBL, and run the model with a single soil colour class based on the original NoahMP for the entire domain.

I tested both settings on Jaci, and both seem to be working as expected. I updated my opening post to explain how to enable the spatially heterogeneous soil albedo parameters.

Thanks for the feedback, and apologies for taking long to get back to this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants