source: CONFIG/publications/ICOLMDZORINCA_CO2_Transport_GMD_2023/INCA/src/INCA_SRC/satellite_out.F90 @ 6610

Last change on this file since 6610 was 6610, checked in by acosce, 10 months ago

INCA used for ICOLMDZORINCA_CO2_Transport_GMD_2023

File size: 6.4 KB
Line 
1!$Id: satellite_out.F90 163 2010-02-22 15:41:45Z acosce $
2!! =========================================================================
3!! INCA - INteraction with Chemistry and Aerosols
4!!
5!! Copyright Laboratoire des Sciences du Climat et de l'Environnement (LSCE)
6!!           Unite mixte CEA-CNRS-UVSQ
7!!
8!! Contributors to this INCA subroutine:
9!!
10!! Michael Schulz, LSCE, Michael.Schulz@cea.fr
11!! F.M. Breon, LSCE, Francois-Marie.Breon@cea.fr
12!! Olivier Boucher
13!! Nick Savage, University Cambridge
14!!
15!! Anne Cozic, LSCE, anne.cozic@cea.fr
16!! Yann Meurdesoif, LSCE, yann.meurdesoif@cea.fr
17!!
18!! This software is a computer program whose purpose is to simulate the
19!! atmospheric gas phase and aerosol composition. The model is designed to be
20!! used within a transport model or a general circulation model. This version
21!! of INCA was designed to be coupled to the LMDz GCM. LMDz-INCA accounts
22!! for emissions, transport (resolved and sub-grid scale), photochemical
23!! transformations, and scavenging (dry deposition and washout) of chemical
24!! species and aerosols interactively in the GCM. Several versions of the INCA
25!! model are currently used depending on the envisaged applications with the
26!! chemistry-climate model.
27!!
28!! This software is governed by the CeCILL  license under French law and
29!! abiding by the rules of distribution of free software.  You can  use,
30!! modify and/ or redistribute the software under the terms of the CeCILL
31!! license as circulated by CEA, CNRS and INRIA at the following URL
32!! "http://www.cecill.info".
33!!
34!! As a counterpart to the access to the source code and  rights to copy,
35!! modify and redistribute granted by the license, users are provided only
36!! with a limited warranty  and the software's author,  the holder of the
37!! economic rights,  and the successive licensors  have only  limited
38!! liability.
39!!
40!! In this respect, the user's attention is drawn to the risks associated
41!! with loading,  using,  modifying and/or developing or reproducing the
42!! software by the user in light of its specific status of free software,
43!! that may mean  that it is complicated to manipulate,  and  that  also
44!! therefore means  that it is reserved for developers  and  experienced
45!! professionals having in-depth computer knowledge. Users are therefore
46!! encouraged to load and test the software's suitability as regards their
47!! requirements in conditions enabling the security of their systems and/or
48!! data to be ensured and,  more generally, to use and operate it in the
49!! same conditions as regards security.
50!!
51!! The fact that you are presently reading this means that you have had
52!! knowledge of the CeCILL license and that you accept its terms.
53!! =========================================================================
54#include <inca_define.h>
55
56
57#ifdef AER
58SUBROUTINE SATELLITE_OUT(delt)
59
60  USE AEROSOL_METEO, only : zlat,zlon
61  USE INCA_DIM
62  USE TIME_MOD_INCA
63  USE PRINT_INCA
64
65  IMPLICIT NONE
66
67  REAL :: delt
68  INTEGER :: masque_polder(PLON)  ! masque polder
69  INTEGER :: i
70
71  IF ((year .GE. 1996) .AND. (month.GE. 11)) THEN
72      IF ((year .LE. 1997) .AND. (month .LE. 6)) THEN
73          CALL swathpolder(year,month,day,heure, &
74             delt,zlon,zlat,masque_polder)
75      ENDIF
76  ENDIF
77
78  DO i=1,PLON
79    IF ( masque_polder(i) .EQ. 1 ) THEN
80        WRITE(lunout,*) "polder output point, lon:", zlon(i),", lat: ",zlat(i)
81    ENDIF
82  ENDDO
83
84  RETURN
85END SUBROUTINE satellite_out
86
87
88SUBROUTINE swathpolder(annee,mois,jour,heure,pdtphys, &
89     rlon,rlat,masque)
90  USE inca_dim
91  IMPLICIT NONE
92
93  !--Auteurs : Francois-Marie Breon + Olivier Boucher
94
95  !-- adapted to be used in INCA aerosol module Michael Schulz
96
97  ! not needed?
98  ! #include "dimensions.h"
99  ! #include "../phylmd/dimphy.h"
100# include "YOMCST_I.h"
101
102  INTEGER :: annee, mois, jour 
103  REAL :: heure                      !--heure en jour
104  REAL :: pdtphys                    !--pas de temps en seconde
105  REAL :: rlon(1:PLON), rlat(1:PLON) !--longitude et latitude
106  INTEGER :: masque(1:PLON)
107
108  REAL :: J0              !--origine des temps pour les orbites ADEOS
109  PARAMETER (J0=183.91267)
110  REAL :: secinday
111  PARAMETER (secinday=86400.)
112  REAL :: duree_orb       !--Duree d une orbite ADEOS en jour
113  PARAMETER (duree_orb=6055.3715/secinday)
114  REAL :: deltalon        !--Decalage en longitude entre 2 orbites successives
115  PARAMETER (deltalon=41./585.*360.)
116  REAL :: demi_larg_eq    !--demi-largeur d'une orbite a l equateur
117  PARAMETER (demi_larg_eq=11.)
118  REAL :: incli, inclideg
119  PARAMETER (inclideg=98.59)
120  REAL :: RADEG, DTOR
121  REAL :: demi_periode
122  INTEGER :: jacum(1:12)
123  DATA jacum/0,31,59,90,120,151,181,212,243,273,304,334/
124  INTEGER :: an, orb, i, j
125  REAL :: timepolder, lon0, posnorm, lim_nord, lim_sud
126  REAL :: tempo, lon_cen, demi_larg
127  REAL :: lat_debut, lat_fin, lon_west, lon_east
128  REAL :: zlon            !--rlon mais remis entre 0 et 360
129  REAL :: deltat          !--plage de temps a considerer en jours 
130
131  deltat=pdtphys/secinday
132  demi_periode=deltat/2./duree_orb
133  RADEG=180./RPI
134  DTOR=RPI/180.
135  incli=inclideg*DTOR
136
137  an = MOD(annee, 100) 
138  timepolder=FLOAT((an-96)*365+jacum(mois)+jour)+heure
139  orb=INT((timepolder-J0)/duree_orb+0.5) 
140  lon0=360.-MOD(168.02+FLOAT(orb)*deltalon,360.)
141  posnorm=(timepolder-j0)/duree_orb-FLOAT(orb)
142  j=jacum(mois)+jour
143  lim_nord=60.5 + 25.*(1.-COS((FLOAT(J)+10.)/365.*2.*RPI))
144  lim_sud=-53.0 - 20.*(1.+COS(FLOAT(J)/365.*2*RPI))
145  !--lat de debut
146  lat_debut=MIN(MIN(90.,(-posnorm+demi_periode)*360.),lim_nord) 
147  !--lat de fin
148  lat_fin  =MAX(MAX(-90.,(-posnorm-demi_periode)*360.),lim_sud) 
149
150  DO i=1, PLON
151     masque(i)=0
152     tempo=ASIN( MAX(-1.,MIN(1., -SIN(rlat(i)*DTOR)/SIN(incli))))
153     lon_cen=(ATAN(TAN(tempo)*COS(incli))-duree_orb*tempo)*RADEG
154     demi_larg=demi_larg_eq/COS(rlat(i)*DTOR)
155     IF (ABS(SIN(rlat(i)*DTOR)/SIN(incli)).GE.1.0) demi_larg=200.0
156     IF (rlat(i).GE.lat_fin.AND.rlat(i).LE.lat_debut) THEN
157        IF (demi_larg.GE. 180.) THEN
158           masque(i)=1
159        ELSE 
160           lon_west = MOD(lon0+lon_cen-demi_larg+720., 360.)
161           lon_east = MOD(lon0+lon_cen+demi_larg,      360.)
162           zlon     = MOD(rlon(i)+360.,                360.)
163           IF (lon_west.LE.lon_east) THEN
164              IF (zlon.GE.lon_west.AND.zlon.LE.lon_east) masque(i)=1
165           ELSE               
166              IF (zlon.GE.lon_west.OR.zlon.LE.lon_east) masque(i)=1
167           ENDIF
168        ENDIF
169     ENDIF
170  ENDDO
171
172  RETURN
173END SUBROUTINE swathpolder
174#endif
175
176
Note: See TracBrowser for help on using the repository browser.