= Configuration ICOLMDZOR-LAM (TGCC, IDRIS) = [[PageOutline]] == Extraction de la configuration == {{{svn co https://forge.ipsl.jussieu.fr/igcmg/svn/modipsl/trunk modipsl ; cd modipsl/util ; ./model ICOLMDZOR_v7_LAM.1}}} Les composants suivants composent la configuration: * DYNAMICO : trunk2master, b18ad822 * ICOSA_LMDZ : aquaplanet/ICOSA_LMDZ, rev 455 * LMDZ : LMDZ6/branches/IPSL-CM6A-MR, rev 3855 * ORCHIDEE : branches/ORCHIDEE_Quest/ORCHIDEE, rev 7086 Il est possible d'utiliser une configuration avec des révisions des composantes plus à jour : {{{svn co https://forge.ipsl.jussieu.fr/igcmg/svn/modipsl/trunk modipsl ; cd modipsl/util ; ./model ICOLMDZOR_v7_LAM_work}}} Les composants suivants composent cette configuration: * DYNAMICO master, 34d2c048 * ICOSA_LMDZ, aquaplanet/ICOSA_LMDZ , rev 457 * LMDZ6, trunk, rev 4305 * ORCHIDEE, branches/ORCHIDEE_2_2, rev 7820 == Compilation de la configuration == {{{cd config/ICOLMDZOR_v7 ; ./compile_icolmdzor.sh}}} Note : sur Jean-Zay, pensez à vous mettre sur la frontale pp pour compiler via {{{ssh login@jean-zay-pp1.idris.fr}}} == Exécution == Les 6 expériences disponibles avec 2 types de forçages possibles * sorties générées par une simulation de type amip * données ERA5 : plus d'informations là: https://gitlab.in2p3.fr/ipsl/projets/dynamico/dynamico/-/tree/trunk2master/TEST_CASE/LAM_ERA5 Ces 6 expériences sont disponibles avec les configurations ICOLMDZ et ICOLMDZOR (avec ORCHIDEE). Les expériences tournent par défaut sur la zone France : * '''ICOLMDZ/CREATE_amip''' (ou ICOLMDZOR/CREATE_amip) * Génération de l'état initial et fichier limit global * Utilisation du run_dynamico.def : PARAM/run_dynamico_global_France.def * Transformée de Schmidt : schmidt_lon=3, schmidt_lat=47, schmidt_factor=4 * {{{cd config/ICOLMDZOR_v7 ; cp EXPERIMENTS/ICOLMDZ/CREATE_amip/config.card . }}} * ou si avec ORCHIDEE : {{{cd config/ICOLMDZOR_v7 ; cp EXPERIMENTS/ICOLMDZOR/CREATE_amip/config.card . }}} * A modifier si besoin dans config.card : !JobName=... * puis {{{../../libIGCM/ins_job ; cd JobName ; ccc_msub (ou sbatch) Job_JobName}}} * '''ICOLMDZ/amip''' (ou ICOLMDZOR/amip) * Génération du fichier de forcage nudging_forcing.nc nécéssaire pour tourner la simulation LAM. * Utilisation du run_dynamico.def : PARAM/run_dynamico_global_France.def * Transformée de Schmidt : schmidt_lon=3, schmidt_lat=47, schmidt_factor=4 * Utilisation des fichier start.nc, startphy.nc et limit.nc générés par l'expérience CREATE_amip. * {{{cd config/ICOLMDZOR_v7 ; cp EXPERIMENTS/ICOLMDZ/amip/config.card . }}} * ou si avec ORCHIDEE : {{{cd config/ICOLMDZOR_v7 ; cp EXPERIMENTS/ICOLMDZOR/amip/config.card . }}} * A modifier config.card : !JobName=..., !CreateName=le nom donné à la simulation CREATE_amip * {{{../../libIGCM/ins_job ; cd JobName ; ccc_msub (ou sbatch) Job_JobName}}}}}} * '''ICOLMDZ/CREATE_amip_LAM''' (ou ICOLMDZOR/CREATE_amip_LAM) * Génération de l'état initial et fichier limit sur l'aire. * Utilisation du run_dynamico.def : PARAM/run_dynamico_lam_forcing_France.def * Utilisation du fichier start généré par l'expérience CREATE_amip globale (start = start_file_interp). * Utilisation du fichier nudging_forcing.nc généré par l'expérience amip globale. * {{{cd config/ICOLMDZOR_v7 ; cp EXPERIMENTS/ICOLMDZ/CREATE_amip_LAM/config.card . }}} * ou si avec ORCHIDEE : {{{cd config/ICOLMDZOR_v7 ; cp EXPERIMENTS/ICOLMDZOR/CREATE_amip_LAM/config.card . }}} * A modifier dans config.card : * !JobName= nom de la simulation * !CreateName=le nom donné à la simulation CREATE_amip * !ForcingName= le nom donné à la simulation amip globale * !ForcingDate= date contenue dans le nom du fichier nudging_forcing.nc généré par la simulation amip globale. * {{{../../libIGCM/ins_job ; cd JobName ; ccc_msub (ou sbatch) Job_JobName}}} * Sur Irene, pensez à augmenter la mémoire disponible par process : {{{#MSUB -c 4}}} dans l'entête du Job. * '''ICOLMDZ/amip_LAM''' (ou ICOLMDZOR/amip_LAM) * Les forçages utilisés sont issus d'une simulation amip globale. * Simulation LAM qui utilise le fichier de forçage nudging_forcing.nc, issu d'une simulation amip globale. * Utilisation du run_dynamico.def : PARAM/run_dynamico_lam_forcing_France.def * Utilisation des fichier start.nc, startphy.nc et limit.nc générés par l'expérience CREATE_amip_LAM. * {{{cd config/ICOLMDZOR_v7 ; cp EXPERIMENTS/ICOLMDZ/amip_LAM/config.card . }}} * ou si avec ORCHIDEE : {{{cd config/ICOLMDZOR_v7 ; cp EXPERIMENTS/ICOLMDZOR/amip_LAM/config.card . }}} * A modifier dans config.card : * !JobName= nom de la simulation * !CreateName=le nom donné à la simulation CREATE_amip_LAM * !ForcingName= le nom donné à la simulation amip globale * !ForcingDate= date contenue dans le nom du fichier nudging_forcing.nc généré par la simulation amip globale. * {{{../../libIGCM/ins_job ; cd JobName ; ccc_msub (ou sbatch) Job_JobName}}}}}} * Sur Irene, pensez à augmenter la mémoire disponible par process : {{{#MSUB -c 4}}} dans l'entête du Job. * '''ICOLMDZ/CREATE_amip_ERA5_LAM''' (ou ICOLMDZOR/CREATE_amip_ERA5_LAM) * Génération de l'état initial et fichier limit sur l'aire. * Utilisation du run_dynamico.def : PARAM/run_dynamico_lam_ERA5_France.def * Utilisation du fichier ERA5 comme fichier nudging_forcing.nc. Le fichier ERA5_062000.nc utilisé par défaut est stocké sur les comptes communs. * {{{cd config/ICOLMDZOR_v7 ; cp EXPERIMENTS/ICOLMDZ/CREATE_amip_ERA5_LAM/config.card . }}} * ou si avec ORCHIDEE : {{{cd config/ICOLMDZOR_v7 ; cp EXPERIMENTS/ICOLMDZOR/CREATE_amip_ERA5_LAM/config.card . }}} * A modifier dans config.card : * !JobName= nom de la simulation * {{{../../libIGCM/ins_job ; cd JobName ; ccc_msub (ou sbatch) Job_JobName}}} * Sur Irene, pensez à augmenter la mémoire disponible par process : {{{#MSUB -c 4}}} dans l'entête du Job. * '''ICOLMDZ/amip_ERA5_LAM''' (ou ICOLMDZOR/amip_ERA5_LAM) * Les forçages utilisés proviennent des données ERA5. * Simulation LAM qui utilise le fichier de forçage ERA5. * Utilisation du run_dynamico.def : PARAM/run_dynamico_lam_ERA5_France.def * Utilisation des fichier start.nc, startphy.nc et limit.nc générés par l'expérience CREATE_amip_ERA5_LAM. * {{{cd config/ICOLMDZOR_v7 ; cp EXPERIMENTS/ICOLMDZ/amip_ERA5_LAM/config.card . }}} * ou si avec ORCHIDEE : {{{cd config/ICOLMDZOR_v7 ; cp EXPERIMENTS/ICOLMDZOR/amip_ERA5_LAM/config.card . }}} * A modifier dans config.card : * !JobName= nom de la simulation * !ForcingName= le nom donné au fichier de foçage (defaut : ERA5). * !ForcingDate= date contenue dans le nom du fichier ERA utilisé (defaut 062000). * {{{../../libIGCM/ins_job ; cd JobName ; ccc_msub (ou sbatch) Job_JobName}}}}}} * Sur Irene, pensez à augmenter la mémoire disponible par process : {{{#MSUB -c 4}}} dans l'entête du Job. == Vue d'ensemble == [[Image(wiki:ICOLMDZ-LAM:ICOLMDZ-LAM.png, 720px)]] == Parametres importants du run_dynamico.def pour configurer le LAM (zone et resolution) == * '''metric_type''' = icosa_area ==> definition de la métrique du maillage ; choix possible : icosa_global (default) pour le global / icosa_area pour le LAM * '''area_center_lon''' = 3 ==> pour le LAM : longitude (degrés) du centre du LAM (centre hexagone) * '''area_center_lat''' = 47 ==> pour le LAM : latitude (degrés) du centre du LAM (centre hexagone) * '''area_radius''' = 800 ==> pour le LAM : rayon du lam en Km (centre -> sommet hexagone) # ------------------------------- Transformee de Schmidt--------------------------------- * ''#schmidt_lon=3 ==> transformée de schmidt : longitude du centre d'origine'' * ''#schmidt_lat=47 ==> transformée de schmidt : latitude du centre d'origine'' * ''#schmidt_factor=4 ==> transformée de schmidt : facteur d'échelle de la transformée'' #---------------- Guidage ---------------- * '''guided_type''' = nudging ==> type de guidage ; choix possible : pas de guidage (default), guidage, création des fichiers de forçage pour une zone spécifique * '''itau_nudging''' = 120 ==> fréquence de guidage en pas de temps correspondant à la fréquence de lecture des données dans les fichiers de forçage * nudging_zone = area ==> zone sur laquelle on guide : choix possible : guidage sur le global, zone de guidage type longitude/latitude, zone de guidage circulaire (centre et rayon), zone définie par le bord du LAM * '''nudging_stiffness'''=8 ==> taille de la zone de transition (en nombre de maille) entre la partie non-guidé et la zone guidée * ''# nudging_lon_start ==> pour nudging_zone=lonlat ou guided_type=nudging_forcing : définition de la zone longitude-latitude : longitude du bord ouest'' * ''# nudging_lat_start ==> pour nudging_zone=lonlat ou guided_type=nudging_forcing : définition de la zone longitude-latitude : latitude du bord sud'' * ''# nudging_lon_end ==> pour nudging_zone=lonlat ou guided_type=nudging_forcing : définition de la zone longitude-latitude : longitude du bord est'' * ''# nudging_lat_end ==> pour nudging_zone=lonlat ou guided_type=nudging_forcing : définition de la zone longitude-latitude : latitude du bord nord'' * ''# nudging_freq=3600 ==> pour guided_type=nudging_forcing : fréquence en seconde du fichier de forçage généré'' * ''# nudging_lon_delta=0.25 ==> pour guided_type=nudging_forcing : résolution en longitude du fichier de forçage généré'' * ''# nudging_lat_delta=0.25 ==> pour guided_type=nudging_forcing : résolution en latitude du fichier de forçage généré'' * ''# nudging_lon_center = 3 ==> pour nudging_zone=circular : définition de la zone circulaire à guider : longitude du centre'' * ''# nudging_lat_center = 47 ==> pour nudging_zone=circular : définition de la zone circulaire à guider : latitude du centre'' * ''# nudging_radius = 800 ==> pour nudging_zone=circular : définition de la zone circulaire à guider : rayon en Km'' * ''# guide_PS = y ==> guidage de la pression ; choix possible or , config LAM default , other default '' * ''# guide_T = y ==> guidage de la temperature ; choix possible or , config LAM default , other default '' * ''# guide_U = y ==> guidage des vents ; choix possible or , config LAM default , other default '' * ''# guide_Q =y ==> guidage des traceurs ; choix possible or , config LAM default , other default '' * '''PS_relax_out'''=3600 ==> temps de relaxation (seconds) de la zone extérieure (frontière pour le LAM) pour la pression ; default == 1 pas de temps dynamique * '''T_relax_out'''=3600 ==> temps de relaxation (seconds) de la zone extérieure (frontière pour le LAM) pour la température ; default == 1 pas de temps dynamique * '''U_relax_out'''=3600 ==> temps de relaxation (seconds) de la zone extérieure (frontière pour le LAM) pour les vents ; default == 1 pas de temps dynamique * '''Q_relax_out'''=3600 ==> temps de relaxation (seconds) de la zone extérieure (frontière pour le LAM) pour les traceurs ; default == 1 pas de temps dynamique * ''#PS_relax_in=3600 ==> temps de relaxation (seconds) de la zone intérieure pour la pression ; valeur possible : valeur > 0 ou -1 => temps de relaxtion infini (default) * ''#T_relax_in=3600 ==> temps de relaxation (seconds) de la zone intérieure pour la température ; valeur possible : valeur > 0 ou -1 => temps de relaxtion infini (default) * ''#U_relax_in=3600 ==> temps de relaxation (seconds) de la zone intérieure pour les vents ; valeur possible : valeur > 0 ou -1 => temps de relaxtion infini (default) * ''#Q_relax_in=3600 ==> temps de relaxation (seconds) de la zone intérieure pour les traceurs ; valeur possible : valeur > 0 ou -1 => temps de relaxtion infini (default) * '''nudging_vertical_levels''' = pressure ==> guidage des champs 3D ; valeurs possibles : (default) les champs de guidage sont en niveau de pression, les champs de guidage sont en niveau modèle et nécessitent un champ de pression pour interpoler verticalement * '''nbp'''=40 ==> résolution horizontale, taille d'une tuile-losange de nbp*nbp mailles (default=40). 10 tuiles pour le global, 3 tuiles pour le LAM {{{ # nbp pour le global # nbp 20 40 80 160 # T-edge length (km) 500 250 120 60 }}} * '''llm''' = 79 ==> nombre de niveaux verticaux * '''nqtot'''=4 ==> nombre de traceus * '''nsplit_i'''=4 ==> découpage en sous-losange pour le parallélisme (direction i) : nb total de sous-losange == 10*nsplit_i*nsplit_j pour le global, 3*nsplit_i*nsplit_j pour le LAMà distribuer pour les tâches MPI * '''nsplit_j'''=4 ==> découpage en sous-losange pour le parallélisme (direction j) : nb total de sous-losange == 10*nsplit_i*nsplit_j pour le global, 3*nsplit_i*nsplit_j pour le LAMà distribuer pour les tâches MPI * '''omp_level_size'''=1 ==> nombre de tâches openmp sur la verticale * '''read_metric''' = n ==> lecture de la métrique du maillage dans le start.nc (default=n) * '''optim_it'''= 0 ==> optimisation du maillage en nombre d'itérations * '''dt''' = 30. ==> pas de temps de la dynamique en secondes, adapter en fonction de la résolution horizontale pour satisfaire les critères CFL * '''run_length''' = 86400 ==> durée de la simulation en secondes # ---------------------------------- Dissipation --------------------------------- # à adapter en fonction de la résolution * '''tau_graddiv''' = 3600 * '''nitergdiv''' = 1 * '''tau_gradrot''' = 21600 * '''nitergrot'''=2 * '''tau_divgrad'''=10800 * '''niterdivgrad'''=2 # -------------------------------- Physics ------------------------------------- * '''physics'''=phys_external ==> type de physique : valeurs possibles : pas de physique (default), physique externe (nécessite un driver), , ... * '''itau_physics'''=30 ==> fréquence d'appel à la physique en pas de temps # Following parameters are changed by options set in dynamico.card * '''create_etat0_limit''' = no ; creation de l'état initial et des condition limites pour LMDZ non structuré (indépendant de dynamico) * '''etat0''' = start_file => type de démarage : valeurs possibles : démarre du fichier de restart start.nc, démarre d'un fichier de restart à une résolution différente, démarre à partir de fichier de forçage * '''etat0_database_type''' = ERA5_forcing ==> pour etat0=etat0_database, type de forçage. Valeurs possibles : forçage standard type LMDZ, forçage à partir de fichier ERA5 (cohérence pour le LAM condition initiale - forçage aux frontières) == Format du fichier de forçage de type ERA5 == * Lien vers le dump du fichier : [attachment:dump_forcage_ERA5.txt] == Definition d'une nouvelle zone : exemple sur la zone Antarctique == * Résolution sur la zone (1°). * Fréquence de forçage 6h * Domaine centré sur le point (longitude 0°, latitude -90°) * Rayon du domaine Rlam = 4000km * 30 jours de simulation === Paramètres du run_dynamico.def pour la génération des forçages (run global zoomée 1° sur l'antarctique ) === {{{ * metric_type = icosa_global * schmidt_lon=0 * schmidt_lat=-90 * schmidt_factor=2 * nbp=40 * guided_type = nudging_forcing * nudging_lon_start =-180 * nudging_lat_start = -90 * nudging_lon_end = 180 * nudging_lat_end = -60 * nudging_freq = 21600 * nudging_lon_delta=0.25 * nudging_lat_delta=0.25 * nudging_radius = 4000 * dt = 225 * run_length = 2592000 # (30j) * tau_graddiv = 1800 * nitergdiv = 1 * tau_gradrot = 10800 * nitergrot=2 * tau_divgrad=5400 * niterdivgrad=2 * itau_physiq = 4 # création état initial (géré par modipsl) etat0 = database create_etat0_limit=y # exécution du run (géré par modipsl) etat0=database create_etat0_limit=n }}} === Paramètres du run_dynamico.def pour l'éxécution du LAM (run LAM 1° sur l'antarctique ==> nbp=40) === {{{ * metric_type = icosa_area * area_center_lon = 0 * area_center_lat = -90 * area_radius = 4000 * nbp=40 * dt = 225 * run_length = 2592000 # (30j) * tau_graddiv = 1800 * nitergdiv = 1 * tau_gradrot = 10800 * nitergrot=2 * tau_divgrad=5400 * niterdivgrad=2 * itau_physiq = 4 * guided_type = nudging * itau_nudging = 96 # 6h * nudging_zone = area * nudging_stiffness=8 * PS_relax_out = 21600 * T_relax_out = 21600 * U_relax_out = 21600 * Q_relax_out = 21600 * nudging_vertical_levels = model * itau_physics = 4 # création état initial (géré par modipsl) etat0 = database create_etat0_limit=y # exécution du run (géré par modipsl) etat0=database create_etat0_limit=n }}} === Adaptation du fichier XML nudging_dynamico.xml (modeles/DYNAMICO/xml/nudging_dynamico.xml) === * Ajustement de la fréquence de lecture en rapport avec la fréquence du fichier de forçage [[BR]] [[BR]] [[BR]] [[BR]] [[BR]] [[BR]] [[BR]] [[BR]] [[BR]] [[BR]] [[BR]] [[BR]] [[BR]] === Adaptation du fichier XML PARAM/context_lmdz.xml (et PARAM/context_orchidee.xml )=== * Zone à interpoler de la grille ico vers la grille régulière (sorties hist*.nc) [[BR]] ''''''[[BR]] [[BR]] == Utilisation outil graphique VTK_Mapper pour visualiser les champs sur la grille icosaédrique * Information disponible là: https://github.com/PBrockmann/VTK_Mapper == Partage d'information : howto,... == * Faire une simulation LAM forcée par ERA5 (Léa) : [attachment:LAM-ERA5.pdf] * Mise en place de la configuration LAM transect AWACA (Valentin) : https://docs.google.com/document/d/1CMl5ZJ5t19WsLiZkcHjqblNLlZXRz2Kisk0VD0kWnXA/edit * Rapport de stage P Conesa : "Simulations du climat avec le modèle à aire limitée DYNAMICO-LMDZ" : [attachment:Rapport_de_stage_P_Conesa.pdf]