diff --git a/src/MNH/ini_aircraft.f90 b/src/MNH/ini_aircraft.f90 index af8ecdaaf5f4a2a43848e0c98d81e7b3151d0dfe..f6355579aacf5acbcfbc30dd1da482835ea925ec 100644 --- a/src/MNH/ini_aircraft.f90 +++ b/src/MNH/ini_aircraft.f90 @@ -3,6 +3,18 @@ !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- +MODULE MODE_INI_AIRCRAFT + +IMPLICIT NONE + +PRIVATE + +PUBLIC :: INI_AIRCRAFT + +INTEGER, PARAMETER :: NMAXLINELGT = 256 + +CONTAINS + ! ####################### SUBROUTINE INI_AIRCRAFT ! ####################### @@ -62,8 +74,8 @@ !! 9) the time step for data storage. !! default is 60s !! -!! 10) the name or title describing the balloon (8 characters) -!! default is the balloon type (6 characters) + the balloon numbers (2 characters) +!! 10) the name or title describing the aircraft (8 characters) +!! default is the aircraft type (6 characters) + the aircraft numbers (2 characters) !! !! !! EXTERNAL @@ -84,2087 +96,160 @@ !! Original 15/05/2000 !! Sept2009, A. Boilley add initialisation of aircraft altitude by Z ! P. Wautelet 06/2022: reorganize flyers +! P. Wautelet 19/08/2022: provide aircraft characteristics in namelist and CSV file instead of hardcoded ! -------------------------------------------------------------------------- -! +! !* 0. DECLARATIONS ! ------------ ! USE MODD_AIRCRAFT_BALLOON +USE MODD_CONF, ONLY: NMODEL_NEST => NMODEL +USE MODD_PARAMETERS, ONLY: XNEGUNDEF USE MODE_MSG +USE MODN_AIRCRAFTS + IMPLICIT NONE -! -! -!* 0.1 declarations of arguments -! -! -!------------------------------------------------------------------------------- -! -! 0.2 declaration of local variables -! -! -!---------------------------------------------------------------------------- -NAIRCRAFTS = 0 + +INTEGER :: JI ALLOCATE( TAIRCRAFTS(NAIRCRAFTS) ) -IF ( NAIRCRAFTS < 1 ) RETURN -! -!* 1. Aircraft number 1 -! ----------------- -#if 0 -! -!* model number -! -TAIRCRAFTS(1)%NMODEL = 0 -! -!* model switch -! -TAIRCRAFTS(1)%CMODEL = 'FIX' -! -!* aircraft type -! -TAIRCRAFTS(1)%CTYPE = 'AIRCRA' -! -!* aircraft flight name -! -TAIRCRAFTS(1)%CTITLE = 'DIMO19A' -! -!* time step for storage -! -TAIRCRAFTS(1)%TFLYER_TIME%XTSTEP = 60. -! -!* take-off date and time -! -TAIRCRAFTS(1)%TLAUNCH%nyear = 2007 -TAIRCRAFTS(1)%TLAUNCH%nmonth = 04 -TAIRCRAFTS(1)%TLAUNCH%nday = 19 -TAIRCRAFTS(1)%TLAUNCH%xtime = 32280. -! -!* number of flight segments -! -TAIRCRAFTS(1)%NSEG = 168 -! -!* initalisation of flag for pressure (T) or Z(F) for aicraft altitude -! -TAIRCRAFTS(1)%LALTDEF = .TRUE. +!Treat aircraft data read in namelist +DO JI = 1, NAIRCRAFTS + IF ( CTITLE(JI) == '' ) THEN + WRITE( CTITLE(JI), FMT = '( A, I3.3) ') TRIM( CTYPE(JI) ), JI + + WRITE( CMNHMSG(1), FMT = '( A, I4 )' ) 'no title given to aircraft number ', JI + CMNHMSG(2) = 'title set to ' // TRIM( CTITLE(JI) ) + CALL PRINT_MSG( NVERB_INFO, 'GEN', 'INI_AIRCRAFT' ) + END IF + TAIRCRAFTS(JI)%CTITLE = CTITLE(JI) + + IF ( CMODEL(JI) == 'FIX' ) THEN + IF ( NMODEL(JI) < 1 .OR. NMODEL(JI) > NMODEL_NEST ) THEN + CMNHMSG(1) = 'invalid NMODEL aircraft ' // TRIM( CTITLE(JI) ) + CMNHMSG(2) = 'NMODEL must be between 1 and the last nested model number' + CALL PRINT_MSG( NVERB_ERROR, 'GEN', 'INI_AIRCRAFT' ) + NMODEL(JI) = 1 + END IF + ELSE IF ( CMODEL(JI) == 'MOB' ) THEN + IF ( NMODEL(JI) /= 0 .AND. NMODEL(JI) /= 1 ) THEN + CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'INI_AIRCRAFT', & + 'NMODEL is set to 1 at start for a CMODEL="MOB" aircraft (aircraft ' // TRIM( CTITLE(JI) ) // ')' ) + END IF + NMODEL(JI) = 1 + ELSE + CMNHMSG(1) = 'invalid CMODEL (' // TRIM( CMODEL(JI) ) // ') for aircraft ' // TRIM( CTITLE(JI) ) + CMNHMSG(2) = 'CMODEL must be FIX or MOB (default="FIX")' + CALL PRINT_MSG( NVERB_ERROR, 'GEN', 'INI_AIRCRAFT' ) + CMODEL(JI) = 'FIX' + NMODEL(JI) = 1 + END IF + TAIRCRAFTS(JI)%CMODEL = CMODEL(JI) + TAIRCRAFTS(JI)%NMODEL = NMODEL(JI) + + TAIRCRAFTS(JI)%CTYPE = CTYPE(JI) + + IF ( .NOT. TLAUNCH(JI)%CHECK( TRIM( CTITLE(JI) ) ) ) & + CALL PRINT_MSG( NVERB_ERROR, 'GEN', 'INI_AIRCRAFT', & + 'problem with TLAUNCH (not set or incorrect values) for aircraft ' // TRIM( CTITLE(JI) ) ) + TAIRCRAFTS(JI)%TLAUNCH = TLAUNCH(JI) + + IF ( XTSTEP(JI) == XNEGUNDEF ) THEN + CALL PRINT_MSG( NVERB_INFO, 'GEN', 'INI_AIRCRAFT', & + 'data storage frequency not provided for aircraft ' // TRIM( CTITLE(JI) ) // ' => set to 60s' ) + XTSTEP(JI) = 60. + ELSE IF ( XTSTEP(JI) <=0. ) THEN + CALL PRINT_MSG( NVERB_ERROR, 'GEN', 'INI_AIRCRAFT', 'invalid data storage frequency for aircraft ' // TRIM( CTITLE(JI) ) ) + XTSTEP(JI) = 60. + END IF + TAIRCRAFTS(JI)%TFLYER_TIME%XTSTEP = XTSTEP(JI) + + IF ( NPOS(JI) < 1 ) THEN + CALL PRINT_MSG( NVERB_ERROR, 'GEN', 'INI_AIRCRAFT', 'NPOS should be at least 1 for aircraft ' // TRIM( CTITLE(JI) ) ) + END IF + TAIRCRAFTS(JI)%NSEG = NPOS(JI)-1 + + TAIRCRAFTS(JI)%LALTDEF = LALTDEF(JI) + + IF ( CFILE(JI) == '' ) & + CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_AIRCRAFT', 'name of CSV file with trajectory not provided for aircraft ' & + // TRIM( CTITLE(JI) ) ) + + ! Allocate trajectory data + ALLOCATE( TAIRCRAFTS(JI)%XSEGTIME(TAIRCRAFTS(JI)%NSEG ) ); TAIRCRAFTS(JI)%XSEGTIME(:) = XNEGUNDEF + ALLOCATE( TAIRCRAFTS(JI)%XSEGLAT (TAIRCRAFTS(JI)%NSEG+1) ); TAIRCRAFTS(JI)%XSEGLAT(:) = XNEGUNDEF + ALLOCATE( TAIRCRAFTS(JI)%XSEGLON (TAIRCRAFTS(JI)%NSEG+1) ); TAIRCRAFTS(JI)%XSEGLON(:) = XNEGUNDEF + IF ( TAIRCRAFTS(JI)%LALTDEF ) THEN + ALLOCATE( TAIRCRAFTS(JI)%XSEGP (TAIRCRAFTS(JI)%NSEG+1) ); TAIRCRAFTS(JI)%XSEGP(:) = XNEGUNDEF + ELSE + ALLOCATE( TAIRCRAFTS(JI)%XSEGZ (TAIRCRAFTS(JI)%NSEG+1) ); TAIRCRAFTS(JI)%XSEGZ(:) = XNEGUNDEF + END IF + + ! Read CSV data (trajectory) + CALL AIRCRAFT_CSV_READ( TAIRCRAFTS(JI), CFILE(JI) ) + +END DO + +IF ( NAIRCRAFTS > 0 ) CALL AIRCRAFTS_NML_DEALLOCATE() ! -!* allocation of the arrays -! -ALLOCATE(TAIRCRAFTS(1)%XSEGTIME(TAIRCRAFTS(1)%NSEG )) -ALLOCATE(TAIRCRAFTS(1)%XSEGLAT (TAIRCRAFTS(1)%NSEG+1)) -ALLOCATE(TAIRCRAFTS(1)%XSEGLON (TAIRCRAFTS(1)%NSEG+1)) -! -!* duration of the segments (seconds) -! -TAIRCRAFTS(1)%XSEGTIME = (/ 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60 /) -! -!* latitudes of the segments ends (1st point is takeoff, last point is landing) -! (decimal degrees) -! -TAIRCRAFTS(1)%XSEGLAT = (/ 44.39971, 44.40095, 44.40040, 44.39919, 44.39657,& - 44.39339, 44.38749, 44.37916, 44.37464, 44.37021,& - 44.37045, 44.37059, 44.37443, 44.37222, 44.35214,& - 44.36092, 44.38175, 44.40122, 44.41992, 44.43539,& - 44.45071, 44.46737, 44.48038, 44.47368, 44.46140,& - 44.45519, 44.46365, 44.46959, 44.47475, 44.48028,& - 44.47210, 44.46509, 44.46825, 44.47021, 44.48252,& - 44.50106, 44.52266, 44.54233, 44.55776, 44.56624,& - 44.57126, 44.57083, 44.57098, 44.57155, 44.56524,& - 44.56006, 44.56914, 44.57413, 44.57368, 44.56907,& - 44.56207, 44.55547, 44.54991, 44.54553, 44.54143,& - 44.53734, 44.53293, 44.52783, 44.52403, 44.52920,& - 44.54065, 44.54570, 44.54875, 44.55127, 44.55372,& - 44.56859, 44.58518, 44.56456, 44.53939, 44.54009,& - 44.56265, 44.58650, 44.60879, 44.61819, 44.61754,& - 44.61660, 44.62217, 44.61920, 44.61041, 44.60369,& - 44.60041, 44.60191, 44.60322, 44.58885, 44.56374,& - 44.54355, 44.52951, 44.50729, 44.48498, 44.46095,& - 44.43832, 44.42894, 44.41980, 44.40837, 44.38897,& - 44.36689, 44.35023, 44.33820, 44.33409, 44.33662,& - 44.33859, 44.33223, 44.32123, 44.32175, 44.32951,& - 44.33953, 44.35040, 44.36167, 44.37196, 44.37869,& - 44.38493, 44.39208, 44.40101, 44.40943, 44.42089,& - 44.44113, 44.46887, 44.49583, 44.51708, 44.53618,& - 44.54475, 44.55005, 44.55511, 44.56009, 44.56446,& - 44.56590, 44.56728, 44.56972, 44.57093, 44.57225,& - 44.57260, 44.57197, 44.57016, 44.56544, 44.55235,& - 44.53552, 44.54387, 44.55054, 44.56146, 44.56070,& - 44.54054, 44.52130, 44.50292, 44.48638, 44.47290,& - 44.45529, 44.43734, 44.41889, 44.39770, 44.37671,& - 44.35838, 44.35707, 44.36639, 44.37534, 44.37753,& - 44.37753, 44.37986, 44.38700, 44.39457, 44.39753,& - 44.40017, 44.40076, 44.39730, 44.39181, 44.39756,& - 44.39935, 44.39868, 44.39727, 44.39696 /) -! -!* longitudes of the segments ends (1st point is takeoff, last point is landing) -! (decimal degrees) -! -TAIRCRAFTS(1)%XSEGLON = (/0.75561, 0.73090, 0.70157, 0.66896, 0.63468,& - 0.60107, 0.56909, 0.53738, 0.50474, 0.47315,& - 0.44092, 0.40665, 0.37725, 0.35171, 0.33016,& - 0.31340, 0.29638, 0.27594, 0.25293, 0.22663,& - 0.19920, 0.17395, 0.15872, 0.17700, 0.19870,& - 0.21796, 0.20584, 0.18416, 0.16200, 0.16042,& - 0.18704, 0.20952, 0.19838, 0.17702, 0.15936,& - 0.13843, 0.11309, 0.08309, 0.04845, 0.00948,& --0.03097,-0.07187,-0.11372,-0.15500,-0.19571,& --0.23476,-0.26490,-0.29027,-0.31521,-0.33867,& --0.36085,-0.38222,-0.40476,-0.42847,-0.45149,& --0.47413,-0.49675,-0.51926,-0.54853,-0.58352,& --0.61936,-0.65967,-0.70151,-0.74369,-0.78626,& --0.82035,-0.82679,-0.81080,-0.80093,-0.81855,& --0.83421,-0.84543,-0.85947,-0.88928,-0.92270,& --0.95642,-0.98774,-1.01802,-1.05282,-1.08807,& --1.12390,-1.15847,-1.19287,-1.22142,-1.24147,& --1.26289,-1.28825,-1.28869,-1.27067,-1.25984,& --1.25447,-1.22868,-1.19892,-1.16909,-1.14878,& --1.13185,-1.10636,-1.07398,-1.03438,-1.00077,& --0.97309,-0.94428,-0.91011,-0.87900,-0.85405,& --0.83235,-0.81217,-0.79231,-0.77125,-0.74612,& --0.71985,-0.69334,-0.66698,-0.64049,-0.61627,& --0.59738,-0.58007,-0.55652,-0.52248,-0.48603,& --0.44405,-0.39964,-0.35780,-0.32620,-0.29894,& --0.27061,-0.24144,-0.21229,-0.18267,-0.15256,& --0.12223,-0.09116,-0.05346,-0.00969, 0.03348,& - 0.07270, 0.07334, 0.03393, 0.00021, 0.01935,& - 0.05295, 0.08646, 0.11585, 0.14321, 0.17288,& - 0.20083, 0.22825, 0.25199, 0.27166, 0.29386,& - 0.31926, 0.35232, 0.38587, 0.41831, 0.45384,& - 0.49099, 0.52731, 0.56261, 0.59614, 0.63308,& - 0.67001, 0.70471, 0.73740, 0.76830, 0.76841,& - 0.75848, 0.76209, 0.76315, 0.76335 /) -! -!* pressure of the segments ends (1st point is takeoff, last point is landing) -! (pascals) -! -IF (TAIRCRAFTS(1)%LALTDEF) THEN - ALLOCATE(TAIRCRAFTS(1)%XSEGP (TAIRCRAFTS(1)%NSEG+1)) - TAIRCRAFTS(1)%XSEGP = 100. * (/1003.6, 990.8, 988.1, 988.5, 989.3,& - 988.9, 989.6, 989.9, 990.3, 989.2,& - 990.8, 993.9, 987.7, 987.2, 992.0,& - 995.2, 993.9, 994.0, 994.3, 993.9,& - 993.9, 992.6, 981.6, 968.0, 954.6,& - 942.5, 929.8, 917.8, 904.2, 891.8,& - 879.5, 867.9, 857.0, 846.5, 840.0,& - 844.9, 857.8, 873.5, 889.7, 905.3,& - 921.5, 937.8, 953.9, 963.7, 978.8,& - 993.0, 984.1, 970.4, 955.6, 943.1,& - 930.3, 916.8, 904.4, 891.6, 878.6,& - 866.2, 854.3, 846.2, 851.2, 863.0,& - 878.3, 895.0, 912.3, 929.7, 944.7,& - 959.2, 967.2, 977.6, 981.9, 981.1,& - 982.1, 981.9, 984.4, 984.2, 983.6,& - 982.1, 978.6, 980.5, 982.1, 983.1,& - 984.2, 984.5, 983.6, 996.0,1003.8,& -1004.2,1001.4,1000.5,1002.3,1005.9,& -1000.9, 992.8, 989.7, 987.1, 985.1,& - 984.3, 982.4, 986.7, 999.1, 994.8,& - 984.1, 985.1, 997.0, 988.2, 975.0,& - 963.0, 949.0, 937.4, 925.3, 912.6,& - 898.8, 886.1, 873.6, 860.8, 848.3,& - 850.2, 863.4, 880.2, 898.0, 916.3,& - 932.8, 949.7, 959.7, 947.5, 933.3,& - 920.8, 907.4, 894.0, 881.4, 869.0,& - 858.0, 848.9, 852.2, 863.2, 880.0,& - 895.3, 909.6, 926.1, 942.0, 958.6,& - 977.3, 993.0, 995.6, 995.0, 993.0,& - 996.2, 995.1, 994.2, 993.4, 993.6,& - 992.0, 991.3, 993.2, 991.6, 993.1,& - 992.7, 992.0, 992.0, 989.4, 991.2,& - 989.5, 981.8, 977.8, 983.3,1001.9,& -1007.0,1006.8,1006.8, 1006.8 /) -ELSE - ALLOCATE(TAIRCRAFTS(1)%XSEGZ (TAIRCRAFTS(1)%NSEG+1)) -TAIRCRAFTS(1)%XSEGZ = (/8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000 /) -ENDIF -! -IF ( NAIRCRAFTS < 2 ) RETURN -#else -CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_AIRCRAFT', 'aircraft characteristics are commented' ) -#endif !---------------------------------------------------------------------------- ! -!* 1. Aircraft number 2 -! ----------------- -#if 0 -! -!* model number -! -TAIRCRAFTS(2)%NMODEL = 0 -! -!* model switch ! -TAIRCRAFTS(2)%CMODEL = 'FIX' -! -!* aircraft type -! -TAIRCRAFTS(2)%CTYPE = 'AIRCRA' +END SUBROUTINE INI_AIRCRAFT -!* aircraft flight name -! -TAIRCRAFTS(2)%CTITLE = 'DIMO19B' -! -!* time step for storage -! -TAIRCRAFTS(2)%TFLYER_TIME%XTSTEP = 60. -! -!* take-off date and time -! -TAIRCRAFTS(2)%TLAUNCH%nyear = 2007 -TAIRCRAFTS(2)%TLAUNCH%nmonth = 04 -TAIRCRAFTS(2)%TLAUNCH%nday = 19 -TAIRCRAFTS(2)%TLAUNCH%xtime = 48060. -! -!* number of flight segments -! -TAIRCRAFTS(2)%NSEG = 198 -! -!* initalisation of flag for pressure (T) or Z(F) for aicraft altitude -! -TAIRCRAFTS(2)%LALTDEF = .TRUE. -! -!* allocation of the arrays -! -ALLOCATE(TAIRCRAFTS(2)%XSEGTIME(TAIRCRAFTS(2)%NSEG )) -ALLOCATE(TAIRCRAFTS(2)%XSEGLAT (TAIRCRAFTS(2)%NSEG+1)) -ALLOCATE(TAIRCRAFTS(2)%XSEGLON (TAIRCRAFTS(2)%NSEG+1)) -! -!* duration of the segments (seconds) -! -TAIRCRAFTS(2)%XSEGTIME = (/60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60 /) -! -!* latitudes of the segments ends (1st point is takeoff, last point is landing) -! (decimal degrees) -! -TAIRCRAFTS(2)%XSEGLAT = (/ 44.39819, 44.39967, 44.40104, 44.40074, 44.40085,& - 44.39843, 44.39619, 44.39141, 44.38353, 44.37732,& - 44.37508, 44.37609, 44.37377, 44.36764, 44.36083,& - 44.35442, 44.37187, 44.39327, 44.41394, 44.43280,& - 44.44887, 44.46759, 44.47026, 44.45759, 44.46716,& - 44.48098, 44.49223, 44.48031, 44.46436, 44.46050,& - 44.46611, 44.47339, 44.47535, 44.46444, 44.46467,& - 44.47678, 44.49333, 44.50428, 44.51275, 44.52244,& - 44.53453, 44.54696, 44.55673, 44.56092, 44.56132,& - 44.56116, 44.56225, 44.56290, 44.56055, 44.55233,& - 44.54409, 44.53433, 44.52137, 44.50897, 44.49627,& - 44.48420, 44.47599, 44.46897, 44.46110, 44.45206,& - 44.44454, 44.43702, 44.42862, 44.41992, 44.40707,& - 44.38769, 44.36858, 44.34945, 44.32974, 44.30938,& - 44.28888, 44.26943, 44.27339, 44.29464, 44.32345,& - 44.35428, 44.38620, 44.41810, 44.43924, 44.42371,& - 44.40729, 44.39663, 44.39174, 44.38035, 44.35685,& - 44.35082, 44.37277, 44.37210, 44.37059, 44.37076,& - 44.36948, 44.35924, 44.34744, 44.34207, 44.33859,& - 44.33485, 44.32219, 44.30517, 44.28314, 44.25674,& - 44.23110, 44.20517, 44.18849, 44.18723, 44.18804,& - 44.18820, 44.18341, 44.16808, 44.14988, 44.12651,& - 44.09887, 44.10007, 44.13022, 44.15963, 44.16313,& - 44.14156, 44.11520, 44.08806, 44.06374, 44.05124,& - 44.04458, 44.04106, 44.04035, 44.04010, 44.03897,& - 44.03530, 44.03939, 44.05114, 44.06269, 44.07460,& - 44.08650, 44.09131, 44.08050, 44.09213, 44.10666,& - 44.12659, 44.14738, 44.16590, 44.18314, 44.19906,& - 44.21885, 44.24219, 44.26652, 44.29116, 44.31433,& - 44.33735, 44.36057, 44.37947, 44.39634, 44.41202,& - 44.42718, 44.44310, 44.45702, 44.46577, 44.47367,& - 44.47522, 44.48508, 44.49589, 44.50652, 44.51467,& - 44.52342, 44.53589, 44.54841, 44.55751, 44.55326,& - 44.54398, 44.53334, 44.52054, 44.50654, 44.49421,& - 44.48487, 44.47112, 44.45230, 44.43285, 44.41224,& - 44.39065, 44.36929, 44.35484, 44.35927, 44.36936,& - 44.37609, 44.37666, 44.37590, 44.38037, 44.38779,& - 44.39413, 44.39740, 44.40002, 44.40032, 44.39755,& - 44.39226, 44.39494, 44.39910, 44.39862, 44.39719,& - 44.39691, 44.39692, 44.39689, 44.39694 /) -! -!* longitudes of the segments ends (1st point is takeoff, last point is landing) -! (decimal degrees) -! -TAIRCRAFTS(2)%XSEGLON = (/0.76323, 0.75549, 0.73212, 0.70405, 0.67289,& - 0.64082, 0.60831, 0.57717, 0.54697, 0.51578,& - 0.48245, 0.45056, 0.41783, 0.38851, 0.36046,& - 0.32828, 0.30353, 0.28176, 0.25886, 0.23647,& - 0.21031, 0.18783, 0.19138, 0.20574, 0.19556,& - 0.17902, 0.17207, 0.18561, 0.20057, 0.21096,& - 0.19209, 0.17406, 0.18880, 0.21157, 0.20492,& - 0.17724, 0.14803, 0.11416, 0.07884, 0.04294,& - 0.00754,-0.02836,-0.06645,-0.10613,-0.14594,& --0.18382,-0.21191,-0.23806,-0.26153,-0.28229,& --0.30235,-0.32461,-0.35502,-0.38888,-0.42649,& --0.46658,-0.49951,-0.52354,-0.54620,-0.56911,& --0.59210,-0.61530,-0.63781,-0.66103,-0.68000,& --0.68664,-0.68859,-0.68904,-0.68633,-0.68257,& --0.67785,-0.67856,-0.68504,-0.67421,-0.65909,& --0.64292,-0.62468,-0.60554,-0.60962,-0.64284,& --0.68049,-0.72153,-0.76308,-0.79993,-0.82295,& --0.80244,-0.79925,-0.83586,-0.87284,-0.90717,& --0.93954,-0.96673,-0.99345,-1.02688,-1.06013,& --1.09311,-1.12010,-1.14430,-1.15772,-1.15729,& --1.15461,-1.15633,-1.17298,-1.19786,-1.22215,& --1.24575,-1.26738,-1.27606,-1.27726,-1.28392,& --1.29406,-1.29028,-1.29255,-1.28781,-1.27630,& --1.29478,-1.30461,-1.31179,-1.30894,-1.28378,& --1.25748,-1.23181,-1.20656,-1.17989,-1.15381,& --1.12789,-1.10402,-1.08189,-1.05854,-1.03571,& --1.01321,-0.98957,-0.98981,-0.98826,-0.96629,& --0.94082,-0.91032,-0.87556,-0.83647,-0.79522,& --0.75987,-0.73047,-0.70212,-0.67419,-0.64559,& --0.61580,-0.58662,-0.56599,-0.55283,-0.53912,& --0.52493,-0.51192,-0.49392,-0.47041,-0.45111,& --0.43705,-0.41091,-0.38491,-0.35776,-0.32809,& --0.29403,-0.25181,-0.20625,-0.15899,-0.11076,& --0.06454,-0.01989, 0.02357, 0.06550, 0.10835,& - 0.15086, 0.18573, 0.21197, 0.23662, 0.25944,& - 0.28144, 0.30338, 0.32757, 0.35913, 0.39246,& - 0.42650, 0.46119, 0.49538, 0.52941, 0.56250,& - 0.59510, 0.63037, 0.66574, 0.69774, 0.72973,& - 0.75999, 0.77280, 0.75992, 0.76224, 0.76317,& - 0.76352, 0.76357, 0.76358, 0.76349 /) -! -!* pressure of the segments ends (1st point is takeoff, last point is landing) -! (pascals) -! -IF (TAIRCRAFTS(2)%LALTDEF) THEN - ALLOCATE(TAIRCRAFTS(2)%XSEGP (TAIRCRAFTS(2)%NSEG+1)) -TAIRCRAFTS(2)%XSEGP = 100. * (/1001.,1001.0, 989.2, 987.5, 987.5,& - 987.9, 989.1, 990.2, 989.3, 988.6,& - 989.8, 989.6, 991.0, 986.1, 980.7,& - 986.5, 991.9, 991.5, 993.0, 992.1,& - 991.3, 991.8, 982.3, 972.0, 960.0,& - 950.5, 938.4, 924.8, 911.7, 899.5,& - 886.9, 876.2, 864.0, 849.9, 843.7,& - 852.1, 861.8, 871.3, 880.8, 891.3,& - 901.5, 913.5, 926.8, 940.6, 952.3,& - 952.9, 938.6, 921.6, 907.2, 898.2,& - 884.6, 880.2, 892.0, 902.0, 916.1,& - 931.1, 926.4, 909.7, 897.0, 891.0,& - 880.8, 868.3, 861.0, 851.4, 842.2,& - 833.7, 823.2, 809.5, 799.0, 789.0,& - 778.7, 768.7, 759.3, 761.1, 774.5,& - 789.5, 809.8, 829.7, 841.2, 856.2,& - 871.5, 886.9, 904.8, 923.0, 937.5,& - 952.0, 965.7, 980.8, 985.2, 988.0,& - 987.3, 985.8, 986.6, 989.8, 990.7,& - 991.4, 990.5, 989.1, 988.2, 988.0,& - 984.7, 985.0, 977.8, 964.8, 952.8,& - 941.3, 929.7, 918.2, 909.4, 915.3,& - 928.5, 943.0, 961.3, 978.0, 989.2,& - 992.9, 994.5, 994.4, 987.9, 974.2,& - 960.6, 946.6, 933.5, 920.8, 908.2,& - 895.7, 883.6, 872.7, 861.4, 850.0,& - 837.7, 825.8, 814.0, 803.1, 796.9,& - 803.0, 812.6, 824.4, 841.8, 859.3,& - 876.9, 893.8, 910.1, 928.2, 942.5,& - 962.5, 978.7, 964.3, 951.7, 937.5,& - 921.1, 906.0, 891.0, 879.2, 862.9,& - 847.7, 836.1, 826.2, 814.5, 802.0,& - 806.3, 820.0, 836.0, 853.4, 870.7,& - 889.7, 909.7, 929.1, 950.2, 971.8,& - 988.8, 993.3, 992.3, 991.9, 991.4,& - 992.0, 991.7, 988.2, 986.2, 989.9,& - 990.5, 991.2, 989.3, 988.5, 988.2,& - 986.8, 986.4, 987.0, 981.0, 975.5,& - 975.8, 993.9,1004.1,1004.1,1004.1,& -1004.1,1004.1,1004.1,1004.1 /) -ELSE - ALLOCATE(TAIRCRAFTS(2)%XSEGZ (TAIRCRAFTS(2)%NSEG+1)) - TAIRCRAFTS(2)%XSEGZ = (/8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000 /) -ENDIF -! -IF ( NAIRCRAFTS < 3 ) RETURN -#else -CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_AIRCRAFT', 'aircraft characteristics are commented' ) -#endif -!---------------------------------------------------------------------------- -! -!* 1. Aircraft number 3 -! ----------------- -#if 0 -! -!* model number -! -TAIRCRAFTS(3)%NMODEL = 0 -! -!* model switch -! -TAIRCRAFTS(3)%CMODEL = 'FIX' -! -!* aircraft type -! -TAIRCRAFTS(3)%CTYPE = 'AIRCRA' -!* aircraft flight name -! -TAIRCRAFTS(3)%CTITLE = 'SAAL19A' -! -!* time step for storage -! -TAIRCRAFTS(3)%TFLYER_TIME%XTSTEP = 30. -! -!* take-off date and time -! -TAIRCRAFTS(3)%TLAUNCH%nyear = 2007 -TAIRCRAFTS(3)%TLAUNCH%nmonth = 04 -TAIRCRAFTS(3)%TLAUNCH%nday = 19 -TAIRCRAFTS(3)%TLAUNCH%xtime = 45369 -! -!* number of flight segments -! -TAIRCRAFTS(3)%NSEG = 39 -! -!* initalisation of flag for pressure (T) or Z(F) for aicraft altitude -! -TAIRCRAFTS(3)%LALTDEF = .TRUE. -! -!* allocation of the arrays -! -ALLOCATE(TAIRCRAFTS(3)%XSEGTIME(TAIRCRAFTS(3)%NSEG )) -ALLOCATE(TAIRCRAFTS(3)%XSEGLAT (TAIRCRAFTS(3)%NSEG+1)) -ALLOCATE(TAIRCRAFTS(3)%XSEGLON (TAIRCRAFTS(3)%NSEG+1)) -! -!* duration of the segments (seconds) -! -TAIRCRAFTS(3)%XSEGTIME = (/ 15, 16, 16, 18, 17, 17,& - 22, 25, 19, 19, 22, 27,& - 28, 27, 29, 32, 30, 24,& - 169, 18, 15, 18, 17, 16,& - 16, 14, 14, 18, 17, 15,& - 14, 14, 19, 20, 16, 15,& - 14, 16, 21 /) - -! -!* latitudes of the segments ends (1st point is takeoff, last point is landing) -! (decimal degrees) -! -TAIRCRAFTS(3)%XSEGLAT = (/ 44.14451, 44.14084, 44.14068, 44.14479, 44.14884,& - 44.14843, 44.14437, 44.14127, 44.14574, 44.14858,& - 44.14655, 44.14130, 44.14384, 44.14738, 44.14158,& - 44.14245, 44.14607, 44.14023, 44.14227, 44.15136,& - 44.14792, 44.14352, 44.13874, 44.13904, 44.14350,& - 44.14701, 44.14614, 44.14223, 44.14001, 44.14320,& - 44.14671, 44.14661, 44.14324, 44.14091, 44.14492,& - 44.14721, 44.14510, 44.14152, 44.14219, 44.14698 /) -! -!* longitudes of the segments ends (1st point is takeoff, last point is landing) -! (decimal degrees) -! -TAIRCRAFTS(3)%XSEGLON = (/0.95322, 0.95562, 0.96155, 0.96490, 0.96186,& - 0.95576, 0.95421, 0.96105, 0.96593, 0.96076,& - 0.95485, 0.95618, 0.96341, 0.95769, 0.95681,& - 0.96585, 0.96073, 0.96158, 0.97041, 0.96299,& - 0.95662, 0.95481, 0.95871, 0.96586, 0.96804,& - 0.96407, 0.95952, 0.95957, 0.96608, 0.97088,& - 0.96825, 0.96292, 0.96078, 0.96622, 0.96953,& - 0.96476, 0.96053, 0.96218, 0.96765, 0.96600 /) -! -!* pressure of the segments ends (1st point is takeoff, last point is landing) -! (pascals) -! -IF (TAIRCRAFTS(3)%LALTDEF) THEN - ALLOCATE(TAIRCRAFTS(3)%XSEGP (TAIRCRAFTS(3)%NSEG+1)) -TAIRCRAFTS(3)%XSEGP = 100. * (/ 992.5, 987.4, 982.1, 976.4, 969.3,& - 964.3, 958.4, 952.9, 947.5, 942.8,& - 936.5, 930.8, 925.6, 919.8, 914.6,& - 909.2, 903.6, 898.0, 893.0, 881.8,& - 887.3, 892.5, 897.8, 903.1, 908.6,& - 914.1, 919.2, 924.9, 929.5, 935.2,& - 940.4, 946.6, 951.8, 957.8, 963.1,& - 969.1, 974.1, 980.0, 986.0, 993.0 /) -ELSE - ALLOCATE(TAIRCRAFTS(3)%XSEGZ (TAIRCRAFTS(3)%NSEG+1)) - TAIRCRAFTS(3)%XSEGZ = (/8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000 /) -ENDIF -! -IF ( NAIRCRAFTS < 4 ) RETURN -#else -CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_AIRCRAFT', 'aircraft characteristics are commented' ) -#endif -!---------------------------------------------------------------------------- -! -!* 1. Aircraft number 4 -! ----------------- -#if 0 -! -!* model number -! -TAIRCRAFTS(4)%NMODEL = 0 -! -!* model switch -! -TAIRCRAFTS(4)%CMODEL = 'FIX' -! -!* aircraft type -! -TAIRCRAFTS(4)%CTYPE = 'AIRCRA' +SUBROUTINE AIRCRAFT_CSV_READ( TPAIRCRAFT, HFILE ) -!* aircraft flight name -! -TAIRCRAFTS(4)%CTITLE = 'SAAL19B' -! -!* time step for storage -! -TAIRCRAFTS(4)%TFLYER_TIME%XTSTEP = 30. -! -!* take-off date and time -! -TAIRCRAFTS(4)%TLAUNCH%nyear = 2007 -TAIRCRAFTS(4)%TLAUNCH%nmonth = 04 -TAIRCRAFTS(4)%TLAUNCH%nday = 19 -TAIRCRAFTS(4)%TLAUNCH%xtime = 60392. -! -!* number of flight segments -! -TAIRCRAFTS(4)%NSEG = 39 -! -!* initalisation of flag for pressure (T) or Z(F) for aicraft altitude -! -TAIRCRAFTS(4)%LALTDEF = .TRUE. -! -!* allocation of the arrays -! -ALLOCATE(TAIRCRAFTS(4)%XSEGTIME(TAIRCRAFTS(4)%NSEG )) -ALLOCATE(TAIRCRAFTS(4)%XSEGLAT (TAIRCRAFTS(4)%NSEG+1)) -ALLOCATE(TAIRCRAFTS(4)%XSEGLON (TAIRCRAFTS(4)%NSEG+1)) -! -!* duration of the segments (seconds) -! -TAIRCRAFTS(4)%XSEGTIME = (/ 36, 18, 18, 21, 24, 23,& - 20, 20, 25, 27, 21, 25,& - 27, 23, 21, 23, 25, 21,& - 27, 190, 17, 17, 18, 17,& - 18, 17, 15, 18, 22, 17,& - 16, 18, 22, 22, 19, 20,& - 21, 23, 22 /) -! -!* latitudes of the segments ends (1st point is takeoff, last point is landing) -! (decimal degrees) -! -TAIRCRAFTS(4)%XSEGLAT = (/ 44.14025, 44.13824, 44.14291, 44.14575, 44.14321,& - 44.13749, 44.13853, 44.14373, 44.14530, 44.13921,& - 44.13773, 44.14285, 44.13974, 44.13622, 44.14093,& - 44.14375, 44.13868, 44.13771, 44.14272, 44.14156,& - 44.14130, 44.14335, 44.14031, 44.13480, 44.13150,& - 44.13157, 44.13507, 44.13921, 44.14201, 44.13823,& - 44.13479, 44.13668, 44.14132, 44.14112, 44.13621,& - 44.13775, 44.14254, 44.14194, 44.13669, 44.13837 /) - ! -!* longitudes of the segments ends (1st point is takeoff, last point is landing) -! (decimal degrees) -! -TAIRCRAFTS(4)%XSEGLON = (/ 0.94868, 0.95712, 0.95820, 0.95265, 0.94556,& - 0.94730, 0.95518, 0.95559, 0.94882, 0.94656,& - 0.95488, 0.95463, 0.94889, 0.95589, 0.95988,& - 0.95389, 0.95076, 0.95834, 0.95888, 0.95095,& - 0.95897, 0.95259, 0.94684, 0.94743, 0.95294,& - 0.96042, 0.96527, 0.96527, 0.95949, 0.95413,& - 0.95842, 0.96350, 0.96231, 0.95483, 0.95597,& - 0.96187, 0.96037, 0.95264, 0.95278, 0.95857 /) -! -!* pressure of the segments ends (1st point is takeoff, last point is landing) -! (pascals) -! -IF (TAIRCRAFTS(4)%LALTDEF) THEN - ALLOCATE(TAIRCRAFTS(4)%XSEGP (TAIRCRAFTS(4)%NSEG+1)) -TAIRCRAFTS(4)%XSEGP = 100. * (/ 992.3, 985.4, 979.9, 974.2, 969.2,& - 962.8, 957.7, 952.1, 946.3, 940.5,& - 935.3, 930.4, 924.0, 918.9, 913.4,& - 907.8, 902.8, 897.1, 892.2, 886.3,& - 881.6, 886.6, 891.9, 897.0, 902.3,& - 907.9, 912.8, 918.3, 924.0, 929.0,& - 934.6, 940.3, 946.0, 951.4, 956.5,& - 962.8, 968.1, 973.7, 979.3, 984.9 /) - ELSE - ALLOCATE(TAIRCRAFTS(4)%XSEGZ (TAIRCRAFTS(4)%NSEG+1)) - TAIRCRAFTS(4)%XSEGZ = (/8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000/) -ENDIF -! -IF ( NAIRCRAFTS < 5 ) RETURN -#else -CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_AIRCRAFT', 'aircraft characteristics are commented' ) -#endif -!---------------------------------------------------------------------------- -! -!* 1. Aircraft number 5 -! ----------------- -#if 0 -! -!* model number -! -TAIRCRAFTS(5)%NMODEL = 0 -! -!* model switch -! -TAIRCRAFTS(5)%CMODEL = 'FIX' -! -!* aircraft type -! -TAIRCRAFTS(5)%CTYPE = 'AIRCRA' +USE MODD_AIRCRAFT_BALLOON, ONLY: TAIRCRAFTDATA -!* aircraft flight name -! -TAIRCRAFTS(5)%CTITLE = 'SAIB19A' -! -!* time step for storage -! -TAIRCRAFTS(5)%TFLYER_TIME%XTSTEP = 30. -! -!* take-off date and time -! -TAIRCRAFTS(5)%TLAUNCH%nyear = 2007 -TAIRCRAFTS(5)%TLAUNCH%nmonth = 04 -TAIRCRAFTS(5)%TLAUNCH%nday = 19 -TAIRCRAFTS(5)%TLAUNCH%xtime = 43380. -! -!* number of flight segments -! -TAIRCRAFTS(5)%NSEG = 176 -! -!* initalisation of flag for pressure (T) or Z(F) for aicraft altitude -! -TAIRCRAFTS(5)%LALTDEF = .TRUE. -! -!* allocation of the arrays -! -ALLOCATE(TAIRCRAFTS(5)%XSEGTIME(TAIRCRAFTS(5)%NSEG )) -ALLOCATE(TAIRCRAFTS(5)%XSEGLAT (TAIRCRAFTS(5)%NSEG+1)) -ALLOCATE(TAIRCRAFTS(5)%XSEGLON (TAIRCRAFTS(5)%NSEG+1)) -! -!* duration of the segments (seconds) -! -TAIRCRAFTS(5)%XSEGTIME = (/ 28, 28, 29, 29, 29, 28,& - 28, 28, 29, 26, 28, 27,& - 28, 27, 28, 27, 25, 27,& - 27, 26, 24, 25, 26, 26,& - 24, 25, 27, 27, 25, 27,& - 27, 28, 27, 28, 27, 27,& - 28, 28, 27, 28, 28, 28,& - 28, 28, 28, 27, 28, 26,& - 27, 27, 27, 26, 25, 25,& - 27, 27, 26, 25, 28, 28,& - 28, 27, 29, 27, 27, 28,& - 29, 27, 27, 27, 27, 26,& - 26, 26, 26, 25, 26, 26,& - 26, 27, 26, 25, 26, 25,& - 26, 25, 25, 25, 26, 25,& - 24, 25, 25, 25, 25, 24,& - 26, 26, 25, 25, 25, 26,& - 24, 23, 23, 24, 25, 22,& - 21, 24, 25, 24, 24, 24,& - 24, 24, 26, 26, 24, 26,& - 26, 25, 25, 27, 25, 25,& - 25, 25, 24, 24, 25, 24,& - 25, 24, 24, 24, 24, 25,& - 24, 24, 23, 25, 25, 24,& - 23, 25, 27, 26, 24, 25,& - 27, 27, 26, 26, 26, 25,& - 25, 26, 25, 25, 25, 25,& - 25, 26, 26, 25, 25, 25,& - 26, 26, 25, 25, 25, 25,& - 25, 25 /) +USE MODE_MSG -! -!* latitudes of the segments ends (1st point is takeoff, last point is landing) -! (decimal degrees) -! -TAIRCRAFTS(5)%XSEGLAT = (/44.38992, 44.38830, 44.38713, 44.38609, 44.38512,& - 44.38420, 44.38336, 44.38248, 44.38151, 44.38046,& - 44.37942, 44.37835, 44.37729, 44.37630, 44.37530,& - 44.37407, 44.37156, 44.36766, 44.36184, 44.35421,& - 44.34673, 44.33986, 44.33271, 44.32536, 44.31800,& - 44.31084, 44.30350, 44.29764, 44.29618, 44.29837,& - 44.30431, 44.31233, 44.32061, 44.32872, 44.33691,& - 44.34478, 44.35284, 44.36091, 44.36894, 44.37666,& - 44.38478, 44.39273, 44.40079, 44.40907, 44.41711,& - 44.42513, 44.43278, 44.44096, 44.44872, 44.45604,& - 44.46205, 44.46722, 44.47121, 44.47528, 44.47961,& - 44.48401, 44.48833, 44.49243, 44.49633, 44.50052,& - 44.50473, 44.50888, 44.51291, 44.51712, 44.52108,& - 44.52521, 44.52945, 44.53390, 44.53808, 44.54208,& - 44.54610, 44.55014, 44.55407, 44.55854, 44.56353,& - 44.56913, 44.57520, 44.58130, 44.58722, 44.59335,& - 44.59960, 44.60600, 44.61232, 44.61881, 44.62519,& - 44.63163, 44.63794, 44.64420, 44.65037, 44.65659,& - 44.66282, 44.66911, 44.67549, 44.68206, 44.68845,& - 44.69469, 44.70078, 44.70619, 44.70841, 44.70754,& - 44.70336, 44.69652, 44.68935, 44.68254, 44.67577,& - 44.66869, 44.66101, 44.65345, 44.64679, 44.64044,& - 44.63337, 44.62587, 44.61864, 44.61169, 44.60483,& - 44.59803, 44.59103, 44.58360, 44.57622, 44.56934,& - 44.56229, 44.55523, 44.54845, 44.54173, 44.53448,& - 44.52751, 44.52062, 44.51361, 44.50655, 44.49974,& - 44.49290, 44.48547, 44.47823, 44.47103, 44.46391,& - 44.45718, 44.45013, 44.44316, 44.43579, 44.42883,& - 44.42169, 44.41486, 44.40771, 44.40028, 44.39341,& - 44.38669, 44.37949, 44.37202, 44.36499, 44.35838,& - 44.35147, 44.34417, 44.33688, 44.32985, 44.32279,& - 44.31593, 44.30918, 44.30215, 44.29464, 44.28732,& - 44.27999, 44.27291, 44.26616, 44.25944, 44.25235,& - 44.24517, 44.23800, 44.23081, 44.22393, 44.21662,& - 44.20946, 44.20266, 44.19582, 44.18895, 44.18196,& - 44.17498, 44.16789 /) +IMPLICIT NONE -! -!* longitudes of the segments ends (1st point is takeoff, last point is landing) -! (decimal degrees) -! -TAIRCRAFTS(5)%XSEGLON = (/ 0.60996, 0.59790, 0.58554, 0.57296, 0.56046,& - 0.54813, 0.53613, 0.52410, 0.51125, 0.49815,& - 0.48593, 0.47312, 0.46084, 0.44829, 0.43635,& - 0.42374, 0.41321, 0.40397, 0.39536, 0.38761,& - 0.37986, 0.37280, 0.36554, 0.35794, 0.35061,& - 0.34350, 0.33612, 0.32785, 0.32066, 0.31451,& - 0.30861, 0.30376, 0.29840, 0.29296, 0.28726,& - 0.28162, 0.27583, 0.26994, 0.26423, 0.25891,& - 0.25323, 0.24778, 0.24212, 0.23624, 0.23064,& - 0.22502, 0.21967, 0.21392, 0.20841, 0.20143,& - 0.19328, 0.18381, 0.17339, 0.16261, 0.15162,& - 0.14002, 0.12849, 0.11740, 0.10678, 0.09554,& - 0.08426, 0.07307, 0.06239, 0.05099, 0.04032,& - 0.02923, 0.01810, 0.00646,-0.00451,-0.01539,& --0.02655,-0.03777,-0.04874,-0.05951,-0.06992,& --0.08001,-0.08912,-0.09831,-0.10747,-0.11645,& --0.12552,-0.13428,-0.14260,-0.15142,-0.16039,& --0.16949,-0.17857,-0.18770,-0.19650,-0.20544,& --0.21419,-0.22292,-0.23212,-0.24134,-0.25051,& --0.25963,-0.26837,-0.27772,-0.28662,-0.29513,& --0.30338,-0.31122,-0.31934,-0.32710,-0.33460,& --0.34242,-0.35080,-0.35914,-0.36639,-0.37351,& --0.38158,-0.38999,-0.39802,-0.40577,-0.41337,& --0.42071,-0.42825,-0.43635,-0.44428,-0.45168,& --0.45980,-0.46756,-0.47507,-0.48266,-0.49060,& --0.49836,-0.50612,-0.51447,-0.52244,-0.53007,& --0.53764,-0.54520,-0.55282,-0.56051,-0.56820,& --0.57580,-0.58375,-0.59147,-0.59952,-0.60706,& --0.61472,-0.62227,-0.63041,-0.63860,-0.64631,& --0.65352,-0.66121,-0.66938,-0.67724,-0.68459,& --0.69224,-0.70005,-0.70780,-0.71548,-0.72306,& --0.73052,-0.73777,-0.74522,-0.75335,-0.76142,& --0.76949,-0.77717,-0.78452,-0.79186,-0.79943,& --0.80743,-0.81530,-0.82307,-0.83074,-0.83852,& --0.84620,-0.85372,-0.86115,-0.86912,-0.87743,& --0.88529,-0.89333 /) -! -! -!* pressure of the segments ends (1st point is takeoff, last point is landing) -! (pascals) -! -IF (TAIRCRAFTS(5)%LALTDEF) THEN - ALLOCATE(TAIRCRAFTS(5)%XSEGP (TAIRCRAFTS(5)%NSEG+1)) -TAIRCRAFTS(5)%XSEGP = 100. * (/ 995.7, 998.1, 998.7, 998.8, 999.1,& - 999.3, 999.9,1000.4,1000.7,1000.6,& -1000.8,1000.8,1000.6,1000.5,1000.1,& - 999.7, 999.2, 999.2, 999.6,1000.5,& -1001.4,1001.6,1001.7,1001.6,1001.7,& -1001.9,1002.1,1001.9,1001.8,1001.7,& -1001.6,1001.7,1001.5,1001.2,1000.9,& -1000.7,1001.1,1001.5,1001.5,1001.5,& -1001.5,1001.5,1001.9,1002.2,1002.5,& -1002.7,1002.4,1001.9,1002.0,1001.9,& -1002.1,1002.7,1002.6,1002.7,1003.0,& -1003.2,1003.2,1003.3,1003.3,1003.2,& -1003.3,1003.4,1003.5,1003.0,1002.0,& -1000.8, 999.2, 998.3, 998.4, 998.3,& - 998.9, 999.5,1000.4,1001.9,1002.8,& -1003.3,1003.1,1001.2, 998.9, 996.9,& - 995.1, 994.9, 995.4, 995.5, 996.1,& - 996.5, 996.7, 996.8, 996.5, 996.2,& - 996.3, 997.2, 997.8, 998.6, 998.8,& - 997.9, 997.7, 996.8, 995.6, 994.7,& - 994.1, 993.8, 994.1, 995.1, 996.4,& - 999.0,1001.4,1002.9,1003.4,1002.7,& -1002.2,1001.8,1001.5,1001.2,1000.5,& -1000.0, 999.6, 998.4, 997.8, 997.3,& - 996.4, 996.5, 996.9, 996.9, 997.0,& - 997.1, 996.7, 996.9, 997.1, 997.2,& - 997.2, 997.0, 996.6, 996.0, 995.4,& - 994.9, 995.3, 996.0, 996.8, 997.4,& - 997.5, 997.6, 997.8, 998.0, 998.2,& - 998.3, 998.5, 998.6, 998.6, 998.6,& - 998.3, 998.0, 998.1, 998.2, 998.1,& - 997.9, 997.9, 997.5, 997.9, 998.4,& - 998.2, 997.4, 996.7, 996.1, 995.5,& - 996.0, 996.3, 996.2, 996.3, 996.0,& - 995.4, 995.4, 995.3, 994.8, 994.5,& - 994.1, 994.4 /) - ELSE - ALLOCATE(TAIRCRAFTS(5)%XSEGZ (TAIRCRAFTS(5)%NSEG+1)) - TAIRCRAFTS(5)%XSEGZ = (/8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000/) -ENDIF -! -IF ( NAIRCRAFTS < 6 ) RETURN -#else -CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_AIRCRAFT', 'aircraft characteristics are commented' ) -#endif -!---------------------------------------------------------------------------- -! -!* 1. Aircraft number 6 -! ----------------- -! -#if 0 -!* model number -! -TAIRCRAFTS(6)%NMODEL = 0 -! -!* model switch -! -TAIRCRAFTS(6)%CMODEL = 'FIX' -! -!* aircraft type -! -TAIRCRAFTS(6)%CTYPE = 'AIRCRA' +TYPE(TAIRCRAFTDATA), INTENT(INOUT) :: TPAIRCRAFT +CHARACTER(LEN=*), INTENT(IN) :: HFILE !Name of the CSV file with the aircraft trajectory -!* aircraft flight name -! -TAIRCRAFTS(6)%CTITLE = 'SAIB19B' -! -!* time step for storage -! -TAIRCRAFTS(6)%TFLYER_TIME%XTSTEP = 30. -! -!* take-off date and time -! -TAIRCRAFTS(6)%TLAUNCH%nyear = 2007 -TAIRCRAFTS(6)%TLAUNCH%nmonth = 04 -TAIRCRAFTS(6)%TLAUNCH%nday = 19 -TAIRCRAFTS(6)%TLAUNCH%xtime = 55992. -! -!* number of flight segments -! -TAIRCRAFTS(6)%NSEG = 179 -! -!* initalisation of flag for pressure (T) or Z(F) for aicraft altitude -! -TAIRCRAFTS(6)%LALTDEF = .TRUE. -! -!* allocation of the arrays -! -ALLOCATE(TAIRCRAFTS(6)%XSEGTIME(TAIRCRAFTS(6)%NSEG )) -ALLOCATE(TAIRCRAFTS(6)%XSEGLAT (TAIRCRAFTS(6)%NSEG+1)) -ALLOCATE(TAIRCRAFTS(6)%XSEGLON (TAIRCRAFTS(6)%NSEG+1)) -! -!* duration of the segments (seconds) -! -TAIRCRAFTS(6)%XSEGTIME = (/ 27, 25, 26, 25, 25, 25,& - 25, 27, 28, 25, 26, 25,& - 26, 26, 26, 26, 25, 27,& - 27, 27, 27, 28, 28, 25,& - 27, 28, 27, 27, 26, 26,& - 26, 27, 26, 25, 25, 27,& - 27, 25, 26, 27, 27, 26,& - 27, 26, 26, 25, 26, 24,& - 25, 25, 25, 26, 27, 27,& - 27, 29, 29, 29, 29, 29,& - 29, 28, 29, 29, 27, 28,& - 28, 28, 26, 28, 26, 26,& - 25, 25, 28, 27, 26, 26,& - 29, 28, 26, 26, 27, 26,& - 26, 25, 26, 24, 25, 25,& - 26, 24, 25, 25, 27, 25,& - 26, 26, 26, 24, 24, 24,& - 24, 25, 25, 24, 25, 25,& - 25, 25, 24, 24, 24, 24,& - 23, 23, 24, 24, 24, 24,& - 27, 26, 25, 25, 26, 26,& - 24, 24, 25, 26, 25, 26,& - 26, 25, 26, 26, 27, 24,& - 25, 24, 25, 24, 26, 24,& - 24, 23, 24, 24, 23, 24,& - 25, 25, 24, 25, 28, 28,& - 26, 26, 28, 28, 28, 26,& - 27, 27, 27, 27, 26, 24,& - 24, 27, 28, 27, 26, 28,& - 29, 29, 28, 27, 28 /) -! -!* latitudes of the segments ends (1st point is takeoff, last point is landing) -! (decimal degrees) -! -TAIRCRAFTS(6)%XSEGLAT = (/ 44.14614, 44.14841, 44.15199, 44.15888, 44.16587,& - 44.17280, 44.17953, 44.18641, 44.19343, 44.20074,& - 44.20752, 44.21445, 44.22139, 44.22865, 44.23605,& - 44.24331, 44.25045, 44.25722, 44.26426, 44.27113,& - 44.27801, 44.28496, 44.29233, 44.29944, 44.30612,& - 44.31311, 44.32038, 44.32756, 44.33466, 44.34155,& - 44.34851, 44.35557, 44.36279, 44.36982, 44.37671,& - 44.38379, 44.39117, 44.39831, 44.40499, 44.41186,& - 44.41907, 44.42637, 44.43340, 44.44051, 44.44749,& - 44.45439, 44.46129, 44.46847, 44.47526, 44.48238,& - 44.48966, 44.49706, 44.50420, 44.51117, 44.51802,& - 44.52483, 44.53217, 44.53939, 44.54629, 44.55308,& - 44.56001, 44.56696, 44.57396, 44.58110, 44.58836,& - 44.59549, 44.60253, 44.60947, 44.61647, 44.62329,& - 44.63051, 44.63757, 44.64473, 44.65168, 44.65879,& - 44.66629, 44.67335, 44.68004, 44.68665, 44.69401,& - 44.70118, 44.70651, 44.70872, 44.70757, 44.70296,& - 44.69641, 44.69022, 44.68403, 44.67814, 44.67201,& - 44.66553, 44.65876, 44.65247, 44.64606, 44.63975,& - 44.63345, 44.62765, 44.62149, 44.61525, 44.60889,& - 44.60281, 44.59667, 44.59043, 44.58400, 44.57706,& - 44.57080, 44.56535, 44.56024, 44.55582, 44.55158,& - 44.54727, 44.54317, 44.53909, 44.53488, 44.53082,& - 44.52674, 44.52256, 44.51820, 44.51381, 44.50985,& - 44.50597, 44.50180, 44.49769, 44.49378, 44.48980,& - 44.48562, 44.48126, 44.47710, 44.47292, 44.46873,& - 44.46366, 44.45784, 44.45107, 44.44347, 44.43597,& - 44.42798, 44.41978, 44.41116, 44.40333, 44.39528,& - 44.38766, 44.37943, 44.37150, 44.36297, 44.35491,& - 44.34703, 44.33932, 44.33142, 44.32336, 44.31518,& - 44.30685, 44.29949, 44.29657, 44.29762, 44.30213,& - 44.30973, 44.31706, 44.32385, 44.33065, 44.33810,& - 44.34583, 44.35311, 44.35997, 44.36612, 44.37085,& - 44.37429, 44.37605, 44.37683, 44.37769, 44.37856,& - 44.37956, 44.38060, 44.38176, 44.38285, 44.38399,& - 44.38503, 44.38596, 44.38687, 44.38787, 44.38900 /) -! -!* longitudes of the segments ends (1st point is takeoff, last point is landing) -! (decimal degrees) -! -TAIRCRAFTS(6)%XSEGLON = (/-0.91544,-0.91300,-0.91007,-0.90375,-0.89495,& --0.88708,-0.87983,-0.87229,-0.86452,-0.85654,& --0.84914,-0.84153,-0.83408,-0.82634,-0.81846,& --0.81096,-0.80323,-0.79569,-0.78779,-0.78020,& --0.77269,-0.76506,-0.75705,-0.74908,-0.74182,& --0.73428,-0.72632,-0.71835,-0.71057,-0.70309,& --0.69558,-0.68793,-0.67997,-0.67218,-0.66448,& --0.65671,-0.64853,-0.64067,-0.63340,-0.62590,& --0.61814,-0.61023,-0.60250,-0.59460,-0.58691,& --0.57916,-0.57164,-0.56390,-0.55623,-0.54843,& --0.54024,-0.53200,-0.52405,-0.51616,-0.50871,& --0.50122,-0.49331,-0.48550,-0.47785,-0.47037,& --0.46268,-0.45501,-0.44730,-0.43928,-0.43133,& --0.42366,-0.41596,-0.40833,-0.40054,-0.39299,& --0.38491,-0.37715,-0.36912,-0.36132,-0.35336,& --0.34495,-0.33715,-0.32974,-0.32263,-0.31464,& --0.30671,-0.29859,-0.29010,-0.28099,-0.27146,& --0.26236,-0.25343,-0.24444,-0.23594,-0.22713,& --0.21787,-0.20837,-0.19956,-0.19056,-0.18158,& --0.17232,-0.16387,-0.15482,-0.14565,-0.13627,& --0.12737,-0.11867,-0.10967,-0.10052,-0.09125,& --0.08213,-0.07306,-0.06374,-0.05342,-0.04236,& --0.03127,-0.02006,-0.00892, 0.00231, 0.01348,& - 0.02438, 0.03579, 0.04783, 0.05932, 0.07014,& - 0.08075, 0.09185, 0.10281, 0.11332, 0.12413,& - 0.13581, 0.14777, 0.15852, 0.16945, 0.18071,& - 0.19117, 0.19969, 0.20670, 0.21238, 0.21771,& - 0.22343, 0.22936, 0.23526, 0.24051, 0.24602,& - 0.25125, 0.25706, 0.26283, 0.26897, 0.27450,& - 0.27996, 0.28523, 0.29072, 0.29630, 0.30192,& - 0.30769, 0.31455, 0.32105, 0.32751, 0.33412,& - 0.34105, 0.34838, 0.35544, 0.36269, 0.37056,& - 0.37841, 0.38584, 0.39290, 0.40050, 0.40952,& - 0.42039, 0.43293, 0.44570, 0.45767, 0.46948,& - 0.48277, 0.49606, 0.50844, 0.52011, 0.53235,& - 0.54491, 0.55738, 0.56943, 0.58104, 0.59369 /) -! -!* pressure of the segments ends (1st point is takeoff, last point is landing) -! (pascals) -! -IF (TAIRCRAFTS(6)%LALTDEF) THEN - ALLOCATE(TAIRCRAFTS(6)%XSEGP (TAIRCRAFTS(6)%NSEG+1)) -TAIRCRAFTS(6)%XSEGP = 100. * (/ 990.1, 990.5, 991.1, 992.6, 993.7,& - 993.5, 993.2, 993.5, 993.8, 994.1,& - 994.4, 994.3, 994.3, 994.7, 995.4,& - 996.0, 996.2, 996.3, 996.1, 996.0,& - 996.3, 996.5, 996.9, 997.2, 997.1,& - 996.9, 996.5, 996.2, 995.9, 995.7,& - 996.0, 996.3, 996.6, 996.3, 995.8,& - 995.5, 995.3, 995.6, 996.0, 996.1,& - 996.0, 995.7, 995.4, 994.8, 994.3,& - 993.8, 993.7, 994.0, 994.6, 995.4,& - 996.0, 996.4, 996.3, 996.0, 995.6,& - 995.7, 995.7, 995.5, 995.1, 994.4,& - 994.1, 994.1, 994.7, 995.6, 996.4,& - 997.3, 997.8, 998.3, 998.8, 999.1,& - 999.4, 999.9,1000.5,1000.7,1000.7,& - 998.7, 996.2, 994.5, 993.0, 992.1,& - 991.9, 991.3, 991.7, 992.9, 994.4,& - 996.1, 996.5, 996.5, 996.3, 995.5,& - 995.0, 994.7, 994.4, 994.7, 995.2,& - 995.1, 995.1, 995.0, 994.7, 994.7,& - 994.9, 996.0, 997.9,1000.2,1001.6,& -1001.7,1001.6,1000.6, 999.7, 999.2,& - 998.1, 997.5, 997.3, 997.1, 997.2,& - 998.2, 999.6,1001.1,1002.2,1002.5,& -1002.2,1001.6,1000.7,1000.3,1000.3,& -1000.9,1001.2,1001.2,1001.2,1001.2,& -1001.3,1001.2,1000.8,1000.3,1000.2,& -1000.3,1000.3,1000.1, 999.5, 999.0,& - 998.7, 998.9, 999.3, 999.7, 999.4,& - 999.1, 999.0, 999.1, 999.4, 999.8,& - 999.7, 999.5, 999.5, 999.3, 999.4,& - 999.6, 999.2, 999.1, 998.9, 999.2,& - 999.1, 997.6, 995.9, 993.8, 993.9,& - 995.9, 998.5,1000.3,1000.3, 999.8,& - 999.2, 999.2, 999.2, 998.9, 998.4,& - 997.7, 997.1, 996.8, 996.9, 996.9 /) - ELSE - ALLOCATE(TAIRCRAFTS(6)%XSEGZ (TAIRCRAFTS(6)%NSEG+1)) - TAIRCRAFTS(6)%XSEGZ = (/8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000/) -ENDIF -! -IF ( NAIRCRAFTS < 7 ) RETURN -#else -CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_AIRCRAFT', 'aircraft characteristics are commented' ) -#endif -!---------------------------------------------------------------------------- -! -! -!* 1. Aircraft number 7 -! ----------------- -! -#if 0 -!* model number -! -TAIRCRAFTS(7)%NMODEL = 0 -! -!* model switch -! -TAIRCRAFTS(7)%CMODEL = 'FIX' -! -!* aircraft type -! -TAIRCRAFTS(7)%CTYPE = 'AIRCRA' +CHARACTER(LEN=NMAXLINELGT) :: YSTRING +INTEGER :: ILU ! logical unit of the file +INTEGER :: JI +REAL :: ZTIME, ZLAT, ZLON, ZALT +REAL :: ZTIME_OLD -!* aircraft flight name -! -TAIRCRAFTS(7)%CTITLE = 'TEST_19' -! -!* time step for storage -! -TAIRCRAFTS(7)%TFLYER_TIME%XTSTEP = 60. -! -!* take-off date and time -! -TAIRCRAFTS(7)%TLAUNCH%nyear = 2007 -TAIRCRAFTS(7)%TLAUNCH%nmonth = 04 -TAIRCRAFTS(7)%TLAUNCH%nday = 19 -TAIRCRAFTS(7)%TLAUNCH%xtime = 43500. -! -!* number of flight segments -! -TAIRCRAFTS(7)%NSEG = 207 -! -!* initalisation of flag for pressure (T) or Z(F) for aicraft altitude -! -TAIRCRAFTS(7)%LALTDEF = .TRUE. -! -!* allocation of the arrays -! -ALLOCATE(TAIRCRAFTS(7)%XSEGTIME(TAIRCRAFTS(7)%NSEG )) -ALLOCATE(TAIRCRAFTS(7)%XSEGLAT (TAIRCRAFTS(7)%NSEG+1)) -ALLOCATE(TAIRCRAFTS(7)%XSEGLON (TAIRCRAFTS(7)%NSEG+1)) -! -!* duration of the segments (seconds) -! -TAIRCRAFTS(7)%XSEGTIME = (/ 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60 /) -! -!* latitudes of the segments ends (1st point is takeoff, last point is landing) -! (decimal degrees) -! -TAIRCRAFTS(7)%XSEGLAT = (/44.39766, 44.39865, 44.40084, 44.39968, 44.40132,& - 44.39968, 44.39728, 44.39430, 44.38775, 44.37997,& - 44.37950, 44.37838, 44.37529, 44.37039, 44.36210,& - 44.35464, 44.35734, 44.37871, 44.39900, 44.41864,& - 44.43725, 44.45386, 44.47003, 44.46820, 44.45811,& - 44.45985, 44.46222, 44.46051, 44.46002, 44.45410,& - 44.45975, 44.47224, 44.47135, 44.46426, 44.45526,& - 44.46369, 44.47345, 44.46559, 44.45538, 44.45041,& - 44.46748, 44.48145, 44.47324, 44.46117, 44.44701,& - 44.44997, 44.46807, 44.45757, 44.44071, 44.42192,& - 44.40289, 44.38488, 44.37393, 44.37344, 44.37088,& - 44.36299, 44.35352, 44.34610, 44.33741, 44.32894,& - 44.31848, 44.30638, 44.29298, 44.27971, 44.26787,& - 44.25647, 44.24665, 44.23900, 44.22917, 44.21672,& - 44.19966, 44.18185, 44.16143, 44.13686, 44.11018,& - 44.08245, 44.05611, 44.02972, 44.00337, 43.97543,& - 43.95425, 43.93530, 43.91688, 43.89820, 43.89794,& - 43.90448, 43.89443, 43.88575, 43.89544, 43.88125,& - 43.86386, 43.84576, 43.82589, 43.80077, 43.77257,& - 43.74412, 43.71677, 43.68738, 43.66478, 43.64512,& - 43.62552, 43.60215, 43.57453, 43.54651, 43.53933,& - 43.55306, 43.55063, 43.53804, 43.51799, 43.50221,& - 43.49417, 43.48755, 43.47693, 43.49463, 43.50888,& - 43.50379, 43.50031, 43.49714, 43.49295, 43.49863,& - 43.49608, 43.49501, 43.49749, 43.49974, 43.50075,& - 43.49405, 43.50050, 43.49775, 43.49594, 43.49643,& - 43.50822, 43.50382, 43.50991, 43.52896, 43.54368,& - 43.55908, 43.57917, 43.60249, 43.62374, 43.64322,& - 43.66040, 43.67597, 43.69279, 43.70851, 43.72461,& - 43.74143, 43.75779, 43.77426, 43.78883, 43.79931,& - 43.80790, 43.81579, 43.82380, 43.83291, 43.84372,& - 43.85303, 43.86217, 43.88168, 43.90765, 43.93423,& - 43.96127, 43.98647, 44.01170, 44.03636, 44.06083,& - 44.08646, 44.11225, 44.14076, 44.17071, 44.19719,& - 44.21831, 44.23741, 44.25411, 44.27110, 44.28888,& - 44.30671, 44.32461, 44.34815, 44.37325, 44.39767,& - 44.42061, 44.44169, 44.46152, 44.47074, 44.45727,& - 44.43958, 44.42007, 44.39913, 44.37827, 44.35861,& - 44.35638, 44.36462, 44.37381, 44.37712, 44.37536,& - 44.37818, 44.38461, 44.39189, 44.39652, 44.39914,& - 44.40121, 44.40203, 44.39652, 44.39471, 44.39916,& - 44.39881, 44.39729, 44.39691 /) -! -!* longitudes of the segments ends (1st point is takeoff, last point is landing) -! (decimal degrees) -! -TAIRCRAFTS(7)%XSEGLON = (/0.76309, 0.76243, 0.74626, 0.71975, 0.69001,& - 0.65673, 0.62503, 0.59412, 0.56233, 0.53107,& - 0.49721, 0.46349, 0.42894, 0.39615, 0.36775,& - 0.33793, 0.31306, 0.29383, 0.27389, 0.25332,& - 0.23140, 0.20708, 0.18262, 0.17709, 0.21017,& - 0.21474, 0.19069, 0.17648, 0.20138, 0.21735,& - 0.19951, 0.17939, 0.17254, 0.19597, 0.20679,& - 0.18859, 0.16933, 0.18100, 0.20277, 0.20151,& - 0.18677, 0.16844, 0.17247, 0.19390, 0.20819,& - 0.19313, 0.17751, 0.18731, 0.22092, 0.25382,& - 0.28665, 0.31971, 0.35579, 0.39647, 0.43670,& - 0.47425, 0.51124, 0.54954, 0.58589, 0.62272,& - 0.65835, 0.69445, 0.73129, 0.76894, 0.80747,& - 0.84420, 0.87763, 0.90635, 0.93263, 0.95459,& - 0.96752, 0.97875, 0.98687, 0.99324, 1.00175,& - 1.01255, 1.02736, 1.04544, 1.06499, 1.08133,& - 1.09566, 1.10337, 1.10589, 1.11465, 1.11536,& - 1.09801, 1.10959, 1.12537, 1.10483, 1.09250,& - 1.08639, 1.08207, 1.07332, 1.07099, 1.07469,& - 1.08320, 1.09204, 1.09917, 1.09423, 1.08928,& - 1.09411, 1.09942, 1.10542, 1.10965, 1.11664,& - 1.10273, 1.10214, 1.12355, 1.14198, 1.17426,& - 1.21045, 1.24596, 1.25826, 1.23903, 1.21688,& - 1.21076, 1.22802, 1.23724, 1.24997, 1.22659,& - 1.23320, 1.25366, 1.23586, 1.22311, 1.24557,& - 1.25389, 1.23238, 1.23489, 1.25729, 1.24318,& - 1.21789, 1.21871, 1.23147, 1.20099, 1.16261,& - 1.12235, 1.08708, 1.05529, 1.02243, 0.98749,& - 0.95092, 0.91402, 0.87811, 0.84299, 0.80903,& - 0.77736, 0.74608, 0.71246, 0.68481, 0.66264,& - 0.64021, 0.61586, 0.59159, 0.56775, 0.54377,& - 0.51834, 0.49118, 0.46814, 0.45393, 0.44101,& - 0.42851, 0.41123, 0.39411, 0.37522, 0.35616,& - 0.34073, 0.32621, 0.31966, 0.31567, 0.31382,& - 0.30921, 0.30321, 0.29381, 0.28282, 0.27351,& - 0.28011, 0.29911, 0.31552, 0.29847, 0.27458,& - 0.25111, 0.22390, 0.19587, 0.17712, 0.20126,& - 0.22675, 0.25187, 0.27302, 0.29474, 0.31660,& - 0.34470, 0.37879, 0.41402, 0.44972, 0.48289,& - 0.51708, 0.55105, 0.58388, 0.61897, 0.65420,& - 0.68930, 0.72537, 0.76175, 0.77456, 0.75960,& - 0.76160, 0.76318, 0.76337 /) -! -!* pressure of the segments ends (1st point is takeoff, last point is landing) -! (pascals) -! -IF (TAIRCRAFTS(7)%LALTDEF) THEN - ALLOCATE(TAIRCRAFTS(7)%XSEGP (TAIRCRAFTS(7)%NSEG+1)) -TAIRCRAFTS(7)%XSEGP = 100. * (/1013.5,1012.2, 999.9, 993.1, 992.3,& - 994.3, 995.5, 996.0, 994.8, 995.3,& - 996.3, 997.7, 997.7, 994.8, 988.4,& - 993.4, 999.0, 999.4, 999.8,1000.0,& - 999.6, 999.6, 999.0,1004.0,1006.1,& - 994.3, 982.4, 970.9, 959.8, 949.9,& - 941.0, 930.8, 921.5, 912.1, 902.6,& - 893.6, 884.2, 875.5, 866.6, 857.9,& - 849.3, 839.5, 829.7, 820.1, 811.1,& - 803.1, 801.1, 809.7, 819.5, 830.7,& - 842.1, 851.2, 859.0, 868.3, 877.2,& - 885.5, 893.1, 900.8, 907.4, 914.0,& - 923.0, 933.3, 946.2, 959.3, 972.0,& - 979.4, 976.9, 964.5, 952.8, 941.4,& - 929.5, 921.1, 920.5, 924.1, 934.8,& - 943.9, 955.0, 966.2, 981.6, 992.9,& - 979.6, 966.2, 954.1, 956.0, 963.3,& - 969.2, 980.9, 981.8, 977.0, 962.5,& - 948.5, 936.0, 933.5, 939.9, 949.7,& - 958.2, 965.0, 978.3, 968.7, 956.7,& - 948.0, 952.6, 964.2, 970.2, 968.3,& - 968.8, 977.2, 969.8, 971.4, 976.6,& - 979.5, 981.2, 981.2, 984.3, 972.3,& - 960.2, 948.7, 938.2, 929.8, 920.7,& - 911.0, 899.9, 889.6, 879.4, 868.8,& - 857.8, 847.7, 838.2, 827.8, 818.0,& - 807.5, 802.2, 801.8, 810.8, 821.9,& - 835.8, 848.8, 861.7, 874.2, 887.1,& - 898.9, 911.0, 922.9, 933.6, 943.9,& - 954.7, 967.1, 983.3, 973.8, 961.5,& - 950.8, 939.5, 927.4, 915.9, 904.9,& - 893.7, 886.8, 891.5, 898.0, 905.7,& - 913.6, 919.8, 926.5, 935.1, 944.1,& - 954.5, 965.2, 978.6, 992.7, 984.7,& - 972.1, 959.6, 948.7, 937.5, 926.5,& - 917.2, 914.4, 924.3, 940.1, 955.8,& - 971.7, 984.4, 997.4,1000.3,1000.6,& -1000.7, 999.6,1000.2, 999.4, 997.7,& - 992.5, 995.8, 999.1, 999.4, 997.4,& - 997.8, 996.9, 995.8, 996.1, 996.2,& - 993.5, 994.8, 995.2, 999.8,1012.4,& -1012.4,1012.4,1012.4 /) - ELSE - ALLOCATE(TAIRCRAFTS(7)%XSEGZ (TAIRCRAFTS(7)%NSEG+1)) - TAIRCRAFTS(7)%XSEGZ = (/8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000/) -ENDIF -! -IF ( NAIRCRAFTS < 8 ) RETURN -#else -CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_AIRCRAFT', 'aircraft characteristics are commented' ) -#endif -!---------------------------------------------------------------------------- -! -!* 1. Aircraft number 8 -! ----------------- -! -#if 0 -!* model number -! -TAIRCRAFTS(8)%NMODEL = 0 -! -!* model switch -! -TAIRCRAFTS(8)%CMODEL = 'FIX' -! -!* aircraft type -! -TAIRCRAFTS(8)%CTYPE = 'AIRCRA' +ZTIME_OLD = 0. -!* aircraft flight name -! -TAIRCRAFTS(8)%CTITLE = 'DIMO22B' -! -!* time step for storage -! -TAIRCRAFTS(8)%TFLYER_TIME%XTSTEP = 60. -! -!* take-off date and time -! -TAIRCRAFTS(8)%TLAUNCH%nyear = 2007 -TAIRCRAFTS(8)%TLAUNCH%nmonth = 04 -TAIRCRAFTS(8)%TLAUNCH%nday = 22 -TAIRCRAFTS(8)%TLAUNCH%xtime = 45720. -! -!* number of flight segments -! -TAIRCRAFTS(8)%NSEG = 210 -! -!* initalisation of flag for pressure (T) or Z(F) for aicraft altitude -! -TAIRCRAFTS(8)%LALTDEF = .TRUE. -! -!* allocation of the arrays -! -ALLOCATE(TAIRCRAFTS(8)%XSEGTIME(TAIRCRAFTS(8)%NSEG )) -ALLOCATE(TAIRCRAFTS(8)%XSEGLAT (TAIRCRAFTS(8)%NSEG+1)) -ALLOCATE(TAIRCRAFTS(8)%XSEGLON (TAIRCRAFTS(8)%NSEG+1)) -! -!* duration of the segments (seconds) -! -TAIRCRAFTS(8)%XSEGTIME = (/ 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60 /) -! -!* latitudes of the segments ends (1st point is takeoff, last point is landing) -! (decimal degrees) -! -TAIRCRAFTS(8)%XSEGLAT = (/ 44.40018, 44.39977, 44.39868, 44.39992, 44.39773,& - 44.39547, 44.38932, 44.38114, 44.37649, 44.37682,& - 44.37604, 44.37314, 44.36610, 44.35869, 44.35126,& - 44.36888, 44.38902, 44.41019, 44.43016, 44.44711,& - 44.46309, 44.46567, 44.46411, 44.46376, 44.46685,& - 44.45785, 44.46202, 44.46796, 44.45953, 44.46578,& - 44.45835, 44.45396, 44.46302, 44.46765, 44.45875,& - 44.46523, 44.47145, 44.46173, 44.46061, 44.47287,& - 44.47889, 44.46331, 44.46504, 44.47908, 44.48783,& - 44.47358, 44.46026, 44.47212, 44.47249, 44.45646,& - 44.43659, 44.41697, 44.40199, 44.38879, 44.37329,& - 44.35638, 44.33957, 44.32298, 44.31241, 44.30906,& - 44.30746, 44.30375, 44.29695, 44.28690, 44.27741,& - 44.26870, 44.25519, 44.23423, 44.21513, 44.19742,& - 44.18321, 44.16521, 44.13944, 44.11380, 44.09166,& - 44.07140, 44.05157, 44.03142, 44.01214, 43.99344,& - 43.97188, 43.94739, 43.92061, 43.89076, 43.87434,& - 43.89083, 43.89292, 43.87508, 43.85464, 43.83516,& - 43.81576, 43.79388, 43.76739, 43.76922, 43.77542,& - 43.74814, 43.71925, 43.69068, 43.66563, 43.64503,& - 43.62444, 43.60469, 43.58496, 43.56237, 43.54501,& - 43.55352, 43.55457, 43.54557, 43.54903, 43.54089,& - 43.52829, 43.51990, 43.51346, 43.50497, 43.49425,& - 43.49525, 43.49562, 43.50077, 43.49815, 43.49617,& - 43.49845, 43.49810, 43.49390, 43.49866, 43.50523,& - 43.49673, 43.49247, 43.49800, 43.50190, 43.49003,& - 43.48993, 43.50083, 43.50555, 43.48778, 43.48823,& - 43.48480, 43.47242, 43.47737, 43.49374, 43.50835,& - 43.52650, 43.54671, 43.56923, 43.58943, 43.61022,& - 43.63331, 43.65439, 43.67176, 43.68666, 43.70027,& - 43.71413, 43.72785, 43.74148, 43.75517, 43.76971,& - 43.78253, 43.79616, 43.80787, 43.81857, 43.82942,& - 43.83995, 43.84981, 43.85823, 43.86486, 43.87613,& - 43.89896, 43.92984, 43.96011, 43.98988, 44.01919,& - 44.04820, 44.07634, 44.10430, 44.13180, 44.15935,& - 44.18754, 44.21629, 44.24437, 44.27247, 44.30043,& - 44.32868, 44.35654, 44.38023, 44.40228, 44.42240,& - 44.44159, 44.45799, 44.47140, 44.45998, 44.44209,& - 44.42257, 44.40038, 44.37905, 44.36011, 44.35666,& - 44.36594, 44.37397, 44.37687, 44.37565, 44.37784,& - 44.38400, 44.39171, 44.39634, 44.39880, 44.40099,& - 44.40118, 44.39848, 44.39311, 44.39245, 44.39898,& - 44.39910 /) +! Open file +OPEN( NEWUNIT = ILU, FILE = HFILE, FORM = 'formatted' ) -! -!* longitudes of the segments ends (1st point is takeoff, last point is landing) -! (decimal degrees) -! -TAIRCRAFTS(8)%XSEGLON = (/ 0.75057, 0.72578, 0.69760, 0.66704, 0.63457,& - 0.60222, 0.56878, 0.53642, 0.50398, 0.47225,& - 0.43953, 0.40789, 0.38031, 0.35008, 0.32169,& - 0.30147, 0.28060, 0.26058, 0.23973, 0.21616,& - 0.19367, 0.18236, 0.18502, 0.20778, 0.20656,& - 0.18370, 0.18703, 0.20372, 0.19130, 0.19682,& - 0.19357, 0.18506, 0.20504, 0.20853, 0.18918,& - 0.19966, 0.21438, 0.19613, 0.18009, 0.19803,& - 0.20224, 0.19336, 0.18564, 0.20677, 0.20731,& - 0.19554, 0.18745, 0.19135, 0.20223, 0.20453,& - 0.22417, 0.25282, 0.28740, 0.32278, 0.35850,& - 0.39281, 0.42680, 0.46075, 0.49942, 0.54027,& - 0.58128, 0.62144, 0.66096, 0.69920, 0.73827,& - 0.77681, 0.81271, 0.84190, 0.87282, 0.90619,& - 0.94117, 0.96868, 0.99038, 1.01055, 1.02558,& - 1.03116, 1.03574, 1.04032, 1.04706, 1.05803,& - 1.07306, 1.09104, 1.11081, 1.12296, 1.13651,& - 1.12012, 1.09442, 1.08149, 1.08005, 1.08059,& - 1.08087, 1.08126, 1.08118, 1.05870, 1.07019,& - 1.08092, 1.08959, 1.09857, 1.10259, 1.10139,& - 1.10055, 1.10282, 1.10878, 1.11744, 1.10495,& - 1.06783, 1.08647, 1.12371, 1.11720, 1.09692,& - 1.11863, 1.14779, 1.17939, 1.21196, 1.24465,& - 1.25333, 1.22210, 1.20875, 1.23017, 1.24679,& - 1.22657, 1.23285, 1.25139, 1.23305, 1.21876,& - 1.23712, 1.25495, 1.23643, 1.22729, 1.24422,& - 1.25601, 1.23404, 1.23452, 1.23818, 1.22150,& - 1.21730, 1.22441, 1.19372, 1.16127, 1.12640,& - 1.09446, 1.06388, 1.03469, 1.00273, 0.97325,& - 0.94589, 0.91633, 0.88300, 0.84659, 0.80979,& - 0.77679, 0.75144, 0.72825, 0.70681, 0.68546,& - 0.66167, 0.63855, 0.61353, 0.58770, 0.56178,& - 0.53561, 0.50932, 0.48310, 0.45312, 0.41403,& - 0.38316, 0.37315, 0.37027, 0.36942, 0.36485,& - 0.35752, 0.34676, 0.33433, 0.32168, 0.31139,& - 0.30504, 0.30198, 0.30551, 0.31093, 0.31540,& - 0.32043, 0.31453, 0.29134, 0.26964, 0.24912,& - 0.22493, 0.20110, 0.18452, 0.19842, 0.22297,& - 0.24828, 0.27199, 0.29414, 0.31429, 0.34416,& - 0.37748, 0.41231, 0.44685, 0.47991, 0.51294,& - 0.54640, 0.58024, 0.61466, 0.65004, 0.68542,& - 0.72044, 0.75565, 0.76069, 0.77374, 0.76079,& - 0.76013 /) +READ( ILU, END = 101, FMT = '(A)' ) YSTRING ! Reading of header (skip it) -! -!* pressure of the segments ends (1st point is takeoff, last point is landing) -! (pascals) -! -IF (TAIRCRAFTS(8)%LALTDEF) THEN - ALLOCATE(TAIRCRAFTS(8)%XSEGP (TAIRCRAFTS(8)%NSEG+1)) -TAIRCRAFTS(8)%XSEGP = 100. * (/1002.7, 994.1, 993.0, 994.6, 994.2,& - 994.3, 995.3, 996.2, 997.4, 996.8,& - 997.5, 996.0, 989.7, 990.8, 996.2,& - 999.0, 997.8, 998.4, 999.0, 999.8,& - 996.0, 985.6, 978.0, 967.9, 959.6,& - 952.6, 943.8, 934.8, 924.6, 916.9,& - 907.5, 898.5, 888.8, 879.9, 870.9,& - 861.3, 852.3, 843.9, 834.5, 825.4,& - 816.3, 806.4, 797.4, 788.2, 779.6,& - 770.6, 762.0, 753.3, 745.0, 741.1,& - 743.1, 748.3, 754.5, 761.4, 768.9,& - 777.1, 785.5, 794.8, 806.6, 817.8,& - 829.3, 840.3, 851.4, 862.4, 873.6,& - 885.4, 896.8, 911.7, 924.7, 933.7,& - 946.4, 959.8, 973.2, 981.3, 973.2,& - 957.9, 945.9, 935.4, 923.1, 913.1,& - 914.1, 923.5, 939.6, 958.2, 970.2,& - 975.1, 968.2, 954.8, 939.1, 928.3,& - 917.1, 915.8, 922.7, 933.0, 943.4,& - 957.9, 970.0, 977.2, 967.0, 955.4,& - 940.6, 927.1, 916.1, 918.5, 926.5,& - 940.9, 954.7, 965.0, 972.7, 964.7,& - 960.1, 959.0, 959.5, 966.5, 973.6,& - 977.4, 970.8, 960.0, 948.2, 937.7,& - 929.8, 920.2, 908.4, 899.6, 888.0,& - 877.9, 866.9, 855.7, 846.6, 836.1,& - 825.1, 813.8, 805.6, 795.1, 784.2,& - 775.1, 769.6, 773.5, 780.9, 790.2,& - 799.0, 812.7, 823.0, 832.8, 843.1,& - 854.7, 862.0, 873.0, 885.9, 895.8,& - 895.4, 884.4, 871.9, 864.3, 854.8,& - 844.0, 833.2, 824.1, 814.2, 805.5,& - 796.0, 786.3, 777.5, 776.5, 789.1,& - 803.2, 814.9, 826.4, 834.9, 842.7,& - 850.2, 861.0, 870.4, 880.3, 891.1,& - 902.5, 914.6, 927.2, 936.1, 946.8,& - 961.5, 974.1, 988.2, 993.4, 996.2,& - 998.3, 995.0, 995.7, 996.1, 995.0,& - 992.5, 995.4, 996.3, 993.9, 988.9,& - 992.2, 995.8, 996.7, 995.3, 995.0,& - 995.6, 995.8, 995.6, 995.4, 994.3,& - 995.1, 995.0, 986.7, 992.4,1009.3,& -1010.1 /) - ELSE - ALLOCATE(TAIRCRAFTS(8)%XSEGZ (TAIRCRAFTS(8)%NSEG+1)) - TAIRCRAFTS(8)%XSEGZ = (/8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000/) -ENDIF -! -IF ( NAIRCRAFTS < 9 ) RETURN -#else -CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_AIRCRAFT', 'aircraft characteristics are commented' ) -#endif -! -!* 1. Aircraft number 9 -! ----------------- -! -#if 0 -!* model number -! -TAIRCRAFTS(9)%NMODEL = 0 -! -!* model switch -! -TAIRCRAFTS(9)%CMODEL = 'FIX' -! -!* aircraft type -! -TAIRCRAFTS(9)%CTYPE = 'AIRCRA' +DO JI = 1, TPAIRCRAFT%NSEG + 1 + ! Read aircraft position + READ( ILU, END = 101, FMT = '(A)' ) YSTRING -!* aircraft flight name -! -TAIRCRAFTS(9)%CTITLE = 'DIMO23A' -! -!* time step for storage -! -TAIRCRAFTS(9)%TFLYER_TIME%XTSTEP = 60. -! -!* take-off date and time -! -TAIRCRAFTS(9)%TLAUNCH%nyear = 2007 -TAIRCRAFTS(9)%TLAUNCH%nmonth = 04 -TAIRCRAFTS(9)%TLAUNCH%nday = 23 -TAIRCRAFTS(9)%TLAUNCH%xtime = 28080. -! -!* number of flight segments -! -TAIRCRAFTS(9)%NSEG = 217 -! -!* initalisation of flag for pressure (T) or Z(F) for aicraft altitude -! -TAIRCRAFTS(9)%LALTDEF = .TRUE. -! -!* allocation of the arrays -! -ALLOCATE(TAIRCRAFTS(9)%XSEGTIME(TAIRCRAFTS(9)%NSEG )) -ALLOCATE(TAIRCRAFTS(9)%XSEGLAT (TAIRCRAFTS(9)%NSEG+1)) -ALLOCATE(TAIRCRAFTS(9)%XSEGLON (TAIRCRAFTS(9)%NSEG+1)) -! -!* duration of the segments (seconds) -! -TAIRCRAFTS(9)%XSEGTIME = (/ 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60, 60, 60, 60, 60, 60,& - 60 /) + READ( YSTRING, * ) ZTIME, ZLAT, ZLON, ZALT -! -!* latitudes of the segments ends (1st point is takeoff, last point is landing) -! (decimal degrees) -! -TAIRCRAFTS(9)%XSEGLAT = (/ 44.39751, 44.39753, 44.39752, 44.39853, 44.40034,& - 44.39319, 44.38918, 44.39412, 44.40370, 44.40138,& - 44.39750, 44.39613, 44.39272, 44.38845, 44.38440,& - 44.38014, 44.37677, 44.37483, 44.36861, 44.35633,& - 44.33758, 44.31741, 44.29690, 44.27804, 44.28492,& - 44.30878, 44.33297, 44.35655, 44.37919, 44.40120,& - 44.42312, 44.44432, 44.46236, 44.47801, 44.46757,& - 44.46157, 44.45602, 44.45566, 44.47449, 44.47193,& - 44.45598, 44.45165, 44.47066, 44.47028, 44.45764,& - 44.45697, 44.47308, 44.46318, 44.45201, 44.46706,& - 44.47951, 44.46693, 44.45556, 44.46823, 44.46949,& - 44.47851, 44.49455, 44.51153, 44.52774, 44.54366,& - 44.55714, 44.56864, 44.57811, 44.58390, 44.58479,& - 44.58010, 44.57385, 44.56768, 44.56246, 44.55190,& - 44.53340, 44.50838, 44.49894, 44.48327, 44.46686,& - 44.45235, 44.43776, 44.42406, 44.40974, 44.39455,& - 44.37895, 44.36464, 44.35046, 44.33591, 44.32117,& - 44.30449, 44.28671, 44.26956, 44.25473, 44.23844,& - 44.22230, 44.20516, 44.18263, 44.15639, 44.13418,& - 44.13223, 44.13549, 44.13856, 44.14149, 44.14458,& - 44.14644, 44.15412, 44.16261, 44.16914, 44.17509,& - 44.18020, 44.18150, 44.17193, 44.17974, 44.18504,& - 44.18683, 44.16630, 44.14618, 44.16061, 44.17979,& - 44.19216, 44.18184, 44.16803, 44.15456, 44.16727,& - 44.18122, 44.17483, 44.17399, 44.17022, 44.16534,& - 44.16835, 44.16535, 44.16013, 44.16126, 44.15846,& - 44.14933, 44.14374, 44.15137, 44.16848, 44.17712,& - 44.19348, 44.22233, 44.25237, 44.28189, 44.31303,& - 44.34515, 44.37181, 44.38475, 44.38428, 44.38017,& - 44.37486, 44.37286, 44.37742, 44.38493, 44.39367,& - 44.39152, 44.38350, 44.38046, 44.38063, 44.38652,& - 44.39793, 44.41131, 44.42400, 44.43619, 44.44731,& - 44.45933, 44.47095, 44.47776, 44.48403, 44.49192,& - 44.50044, 44.51020, 44.52095, 44.53370, 44.54737,& - 44.55783, 44.56727, 44.57504, 44.58094, 44.58412,& - 44.58225, 44.57236, 44.55879, 44.54496, 44.53045,& - 44.51564, 44.50161, 44.48671, 44.47298, 44.45754,& - 44.44110, 44.42419, 44.40608, 44.38719, 44.36785,& - 44.35673, 44.36123, 44.37101, 44.37533, 44.37696,& - 44.37613, 44.38058, 44.38785, 44.39397, 44.39713,& - 44.39959, 44.40136, 44.40122, 44.39871, 44.39061,& - 44.39359, 44.39652, 44.38966, 44.39608, 44.39569,& - 44.39465, 44.40496, 44.40415, 44.39887, 44.39713,& - 44.39695, 44.39696, 44.39696 /) + IF ( JI > 1 ) TPAIRCRAFT%XSEGTIME(JI-1) = ZTIME - ZTIME_OLD + TPAIRCRAFT%XSEGLAT(JI) = ZLAT + TPAIRCRAFT%XSEGLON(JI) = ZLON + IF ( TPAIRCRAFT%LALTDEF ) THEN + TPAIRCRAFT%XSEGP(JI) = ZALT * 100. ! *100 to convert from hPa to Pa + ELSE + TPAIRCRAFT%XSEGZ(JI) = ZALT + END IF + ZTIME_OLD = ZTIME +END DO -! -!* longitudes of the segments ends (1st point is takeoff, last point is landing) -! (decimal degrees) -! -TAIRCRAFTS(9)%XSEGLON = (/ 0.76306, 0.76307, 0.76305, 0.76269, 0.74580,& - 0.74072, 0.76103, 0.77639, 0.75449, 0.71425,& - 0.68316, 0.65249, 0.61874, 0.58328, 0.55006,& - 0.51760, 0.48441, 0.45139, 0.42065, 0.39305,& - 0.37216, 0.35714, 0.34286, 0.32602, 0.30618,& - 0.29573, 0.28531, 0.27413, 0.26043, 0.24570,& - 0.23012, 0.21237, 0.18837, 0.17083, 0.18349,& - 0.20509, 0.19600, 0.19825, 0.19492, 0.20130,& - 0.19254, 0.19556, 0.19605, 0.20768, 0.19070,& - 0.19338, 0.19937, 0.20087, 0.19005, 0.19651,& - 0.20863, 0.20360, 0.19309, 0.19990, 0.20947,& - 0.18161, 0.14867, 0.11569, 0.08135, 0.04598,& - 0.00878,-0.03075,-0.07182,-0.11374,-0.15676,& --0.19923,-0.24111,-0.28194,-0.32286,-0.36105,& --0.38799,-0.39993,-0.43095,-0.44520,-0.45588,& --0.47157,-0.48673,-0.50422,-0.52201,-0.53820,& --0.55361,-0.57117,-0.58856,-0.60501,-0.62178,& --0.63509,-0.64631,-0.65933,-0.67844,-0.69380,& --0.70676,-0.71683,-0.72233,-0.72811,-0.74429,& --0.78257,-0.82472,-0.86568,-0.90634,-0.94853,& --0.99312,-1.03733,-1.08136,-1.12497,-1.16729,& --1.20861,-1.24852,-1.24317,-1.24128,-1.26618,& --1.29450,-1.30808,-1.30763,-1.30267,-1.29873,& --1.29013,-1.29921,-1.31215,-1.31578,-1.31067,& --1.30216,-1.30826,-1.32260,-1.30085,-1.30780,& --1.32801,-1.30845,-1.29379,-1.31837,-1.32354,& --1.30182,-1.31707,-1.34122,-1.33728,-1.29928,& --1.26473,-1.24858,-1.23360,-1.21667,-1.20075,& --1.19259,-1.17065,-1.13473,-1.09576,-1.05647,& --1.01627,-0.97416,-0.93471,-0.90394,-0.87912,& --0.85150,-0.82113,-0.79423,-0.76751,-0.74274,& --0.72071,-0.70026,-0.67875,-0.65563,-0.63129,& --0.60738,-0.58319,-0.55662,-0.52999,-0.50503,& --0.48014,-0.45503,-0.42987,-0.40221,-0.36724,& --0.32885,-0.28896,-0.24699,-0.20322,-0.15936,& --0.11700,-0.07826,-0.04194,-0.00601, 0.02865,& - 0.06331, 0.09933, 0.13591, 0.17155, 0.20078,& - 0.22495, 0.24723, 0.26669, 0.28571, 0.30512,& - 0.33057, 0.36230, 0.39468, 0.42872, 0.46249,& - 0.49528, 0.52814, 0.56066, 0.59247, 0.62509,& - 0.65765, 0.68978, 0.72237, 0.75668, 0.77236,& - 0.75175, 0.76499, 0.76381, 0.74495, 0.76561,& - 0.78717, 0.76713, 0.74758, 0.76078, 0.76316,& - 0.76337, 0.76334, 0.76336 /) +101 CONTINUE -! -!* pressure of the segments ends (1st point is takeoff, last point is landing) -! (pascals) -! +CLOSE( ILU ) -IF (TAIRCRAFTS(9)%LALTDEF) THEN - ALLOCATE(TAIRCRAFTS(9)%XSEGP (TAIRCRAFTS(9)%NSEG+1)) -TAIRCRAFTS(9)%XSEGP = 100. * (/ 1014.8,1014.8,1014.8,1014.8,1005.5,& - 987.8, 972.7, 959.2, 957.2, 978.1,& - 993.8, 993.5, 992.9, 995.5, 997.4,& - 997.7, 998.5, 998.3, 996.8, 997.7,& -1000.1, 999.3, 998.7, 997.4, 996.2,& - 998.3,1000.0, 999.9, 999.1, 998.6,& - 998.5, 998.0, 999.2, 999.1,1009.5,& -1003.4, 990.2, 978.4, 967.1, 956.2,& - 945.9, 934.6, 924.2, 912.3, 901.3,& - 889.8, 878.6, 866.9, 855.7, 844.9,& - 834.2, 823.0, 812.0, 801.4, 800.1,& - 806.9, 815.5, 824.4, 834.5, 845.2,& - 856.3, 870.2, 884.9, 898.2, 913.0,& - 927.0, 940.6, 953.4, 966.2, 979.8,& - 992.8,1004.2,1006.7, 993.2, 982.3,& - 972.7, 962.0, 950.9, 940.8, 928.6,& - 917.0, 906.2, 895.3, 884.4, 874.0,& - 864.1, 854.4, 844.5, 834.4, 823.4,& - 812.3, 803.1, 806.5, 815.1, 824.1,& - 836.3, 845.1, 854.7, 866.7, 884.2,& - 903.2, 921.4, 938.5, 953.8, 969.2,& - 986.8,1000.3,1007.3, 995.3, 983.3,& - 986.5,1005.5,1005.5, 994.9, 985.4,& - 973.9, 964.7, 954.5, 945.0, 935.2,& - 924.2, 913.1, 902.7, 891.8, 881.8,& - 871.0, 860.2, 850.3, 839.9, 830.3,& - 820.3, 809.5, 801.3, 802.9, 813.4,& - 825.9, 839.4, 855.4, 874.2, 894.0,& - 909.5, 925.8, 940.5, 955.0, 969.2,& - 983.7,1000.0,1008.1,1000.5, 988.9,& - 982.3, 972.7, 960.7, 951.3, 939.8,& - 929.0, 915.4, 904.9, 895.4, 884.3,& - 873.4, 863.1, 852.1, 840.5, 829.5,& - 819.2, 809.6, 800.6, 801.4, 809.6,& - 818.1, 829.6, 840.8, 854.8, 868.4,& - 882.0, 894.2, 908.1, 922.9, 937.5,& - 950.9, 967.8, 987.5,1003.2,1005.1,& -1003.5,1003.3,1002.4,1002.3,1002.0,& - 995.6, 995.5, 998.5, 999.5,1000.3,& -1000.6, 999.6, 998.8, 999.2, 998.0,& - 997.3, 995.4, 995.1, 998.1, 988.4,& - 976.2, 965.3, 956.4, 945.6, 947.8,& - 965.9, 985.1,1003.1,1013.9,1013.9,& -1013.9,1013.9,1013.9 /) - ELSE - ALLOCATE(TAIRCRAFTS(9)%XSEGZ (TAIRCRAFTS(9)%NSEG+1)) - TAIRCRAFTS(9)%XSEGZ = (/8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000,8000,8000,& -8000,8000,8000/) -ENDIF -#else -CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'INI_AIRCRAFT', 'aircraft characteristics are commented' ) -#endif -! -!---------------------------------------------------------------------------- -! -! -END SUBROUTINE INI_AIRCRAFT +IF ( JI < TPAIRCRAFT%NSEG + 1 ) & + CALL PRINT_MSG( NVERB_ERROR, 'GEN', 'AIRCRAFT_CSV_READ', 'Data not found in file ' // TRIM( HFILE ) ) + +END SUBROUTINE AIRCRAFT_CSV_READ + +END MODULE MODE_INI_AIRCRAFT diff --git a/src/MNH/ini_aircraft_balloon.f90 b/src/MNH/ini_aircraft_balloon.f90 index 64135ed5c3489880e9e9928cc21150473ad1250f..a9fb888da7ed8926609defc9fc3cd434e35b5b95 100644 --- a/src/MNH/ini_aircraft_balloon.f90 +++ b/src/MNH/ini_aircraft_balloon.f90 @@ -98,12 +98,12 @@ USE MODD_PARAM_n, ONLY: CCLOUD USE MODD_PARAMETERS ! USE MODE_GRIDPROJ +USE MODE_INI_AIRCRAFT +USE MODE_INI_BALLOON USE MODE_ll USE MODE_MODELN_HANDLER USE MODE_MSG ! -USE MODI_INI_BALLOON -USE MODI_INI_AIRCRAFT ! IMPLICIT NONE ! diff --git a/src/MNH/ini_balloon.f90 b/src/MNH/ini_balloon.f90 index f52a2f994e9e2e3e4da87ee341ec777a7bbdfb59..cda0db7c2cf4d46d8b82479906c3c719cf819e53 100644 --- a/src/MNH/ini_balloon.f90 +++ b/src/MNH/ini_balloon.f90 @@ -3,6 +3,16 @@ !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- +MODULE MODE_INI_BALLOON + +IMPLICIT NONE + +PRIVATE + +PUBLIC :: INI_BALLOON + +CONTAINS + ! ###################### SUBROUTINE INI_BALLOON ! ###################### @@ -98,7 +108,7 @@ USE MODD_AIRCRAFT_BALLOON USE MODD_CONF, ONLY: NMODEL_NEST => NMODEL USE MODD_CST, ONLY: XPI -USE MODD_PARAMETERS, ONLY: XUNDEF +USE MODD_PARAMETERS, ONLY: XNEGUNDEF, XUNDEF USE MODE_MSG @@ -349,3 +359,5 @@ IF ( NBALLOONS > 0 ) CALL BALLOONS_NML_DEALLOCATE() !---------------------------------------------------------------------------- ! END SUBROUTINE INI_BALLOON + +END MODULE MODE_INI_BALLOON diff --git a/src/MNH/modn_aircrafts.f90 b/src/MNH/modn_aircrafts.f90 new file mode 100644 index 0000000000000000000000000000000000000000..f4309dfc793e1387355328bb6af8844ef64066e1 --- /dev/null +++ b/src/MNH/modn_aircrafts.f90 @@ -0,0 +1,69 @@ +!MNH_LIC Copyright 2022-2022 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence +!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt +!MNH_LIC for details. version 1. +!----------------------------------------------------------------- +! Author: P. Wautelet 19/08/2022 +! Modifications: +!----------------------------------------------------------------- +!#################### +MODULE MODN_AIRCRAFTS +!#################### +! +! Namelist with the the characteristics of the aircrafts +! +USE MODD_AIRCRAFT_BALLOON +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX +USE MODD_TYPE_DATE, ONLY: DATE_TIME + +IMPLICIT NONE + +!Use separated arrays for the different aircraft characteristics +!Using directly TAIRCRAFTDATA derived types does not work due to compiler bug (GCC at least from 5.5 to 12.1, see GCC bug 106065) + +CHARACTER(LEN=3), DIMENSION(:), ALLOCATABLE :: CMODEL +INTEGER, DIMENSION(:), ALLOCATABLE :: NMODEL +CHARACTER(LEN=6), DIMENSION(:), ALLOCATABLE :: CTYPE +CHARACTER(LEN=10), DIMENSION(:), ALLOCATABLE :: CTITLE +TYPE(DATE_TIME), DIMENSION(:), ALLOCATABLE :: TLAUNCH +REAL, DIMENSION(:), ALLOCATABLE :: XTSTEP +INTEGER, DIMENSION(:), ALLOCATABLE :: NPOS +LOGICAL, DIMENSION(:), ALLOCATABLE :: LALTDEF +CHARACTER(LEN=NFILENAMELGTMAX), DIMENSION(:), ALLOCATABLE :: CFILE !Names of CSV files with trajectory data + +!Do not read CTYPE, value is always forced to 'AIRCRA' +NAMELIST / NAM_AIRCRAFTS / CFILE, CMODEL, CTITLE, LALTDEF, NMODEL, NPOS, TLAUNCH, XTSTEP + +CONTAINS + +SUBROUTINE AIRCRAFTS_NML_ALLOCATE( KAIRCRAFTS ) + INTEGER, INTENT(IN) :: KAIRCRAFTS + + !Note: the default values are used/checked in ini_aircraft => be careful to ensure coherency + ALLOCATE( CMODEL (KAIRCRAFTS) ); CMODEL(:) = 'FIX' + ALLOCATE( CTITLE (KAIRCRAFTS) ); CTITLE(:) = '' + ALLOCATE( CTYPE (KAIRCRAFTS) ); CTYPE(:) = 'AIRCRA' + ALLOCATE( NMODEL (KAIRCRAFTS) ); NMODEL(:) = 0 + ALLOCATE( TLAUNCH(KAIRCRAFTS) ) + ALLOCATE( XTSTEP (KAIRCRAFTS) ); XTSTEP(:) = XNEGUNDEF + ALLOCATE( NPOS (KAIRCRAFTS) ); NPOS(:) = 0 + ALLOCATE( LALTDEF(KAIRCRAFTS) ); LALTDEF(:) = .FALSE. + ALLOCATE( CFILE (KAIRCRAFTS) ); CFILE(:) = '' +END SUBROUTINE AIRCRAFTS_NML_ALLOCATE + + +SUBROUTINE AIRCRAFTS_NML_DEALLOCATE( ) + !Deallocate namelist arrays + DEALLOCATE( CMODEL ) + DEALLOCATE( CTITLE ) + DEALLOCATE( CTYPE ) + DEALLOCATE( NMODEL ) + DEALLOCATE( TLAUNCH ) + DEALLOCATE( XTSTEP ) + DEALLOCATE( NPOS ) + DEALLOCATE( LALTDEF ) + DEALLOCATE( CFILE ) +END SUBROUTINE AIRCRAFTS_NML_DEALLOCATE + + +END MODULE MODN_AIRCRAFTS diff --git a/src/MNH/read_exsegn.f90 b/src/MNH/read_exsegn.f90 index a3303a5fead852cc87083e3836346fc343f685ed..ca2f7047ab9bb419fb5afe656a1caf8092bbfd41 100644 --- a/src/MNH/read_exsegn.f90 +++ b/src/MNH/read_exsegn.f90 @@ -305,6 +305,7 @@ END MODULE MODI_READ_EXSEG_n ! P. Wautelet 27/04/2022: add namelist for profilers ! P. Wautelet 24/06/2022: remove check on CSTORAGE_TYPE for restart of ForeFire variables ! P. Wautelet 13/07/2022: add namelist for flyers and balloons +! P. Wautelet 19/08/2022: add namelist for aircrafts !------------------------------------------------------------------------------ ! !* 0. DECLARATIONS @@ -343,8 +344,9 @@ USE MODI_TEST_NAM_VAR USE MODN_2D_FRC USE MODN_ADV_n ! The final filling of these modules for the model n is +USE MODN_AIRCRAFTS, ONLY: AIRCRAFTS_NML_ALLOCATE, NAM_AIRCRAFTS USE MODN_BACKUP -USE MODN_BALLOONS, ONLY: BALLOONS_NML_ALLOCATE, NAM_BALLOONS +USE MODN_BALLOONS, ONLY: BALLOONS_NML_ALLOCATE, NAM_BALLOONS USE MODN_BLANK_n USE MODN_BLOWSNOW USE MODN_BLOWSNOW_n @@ -851,6 +853,13 @@ IF (KMI == 1) THEN CALL POSNAM(ILUSEG,'NAM_FLYERS',GFOUND,ILUOUT) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_FLYERS) + + IF ( NAIRCRAFTS > 0 ) THEN + CALL AIRCRAFTS_NML_ALLOCATE( NBALLOONS ) + CALL POSNAM(ILUSEG,'NAM_AIRCRAFTS',GFOUND,ILUOUT) + IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_AIRCRAFTS) + END IF + IF ( NBALLOONS > 0 ) THEN CALL BALLOONS_NML_ALLOCATE( NBALLOONS ) CALL POSNAM(ILUSEG,'NAM_BALLOONS',GFOUND,ILUOUT) diff --git a/src/MNH/write_desfmn.f90 b/src/MNH/write_desfmn.f90 index 046b0bd1e2d49fec9ffaa630145e28a3bdcb6a4e..e7a777d6420ea0b8ef48221ed1097499d8c9f50e 100644 --- a/src/MNH/write_desfmn.f90 +++ b/src/MNH/write_desfmn.f90 @@ -163,8 +163,9 @@ USE MODD_STATION_n, ONLY: LSTATION ! USE MODE_MSG ! +! USE MODN_AIRCRAFTS USE MODN_BACKUP -USE MODN_BALLOONS +! USE MODN_BALLOONS USE MODN_CONF USE MODN_DYN USE MODN_NESTING @@ -455,7 +456,8 @@ IF(LSERIES) WRITE(UNIT=ILUSEG,NML=NAM_SERIES) IF(NMODEL_CLOUD/=NUNDEF) WRITE(UNIT=ILUSEG,NML=NAM_TURB_CLOUD) IF(CTURB /= 'NONE') WRITE(UNIT=ILUSEG,NML=NAM_TURB) WRITE(UNIT=ILUSEG,NML=NAM_FLYERS) -!Not possible (for the moment): arrays have been deallocated after ini_balloon: WRITE(UNIT=ILUSEG,NML=NAM_BALLOONS) +!Not possible (for the moment): arrays have been deallocated after ini_aircraft: WRITE(UNIT=ILUSEG,NML=NAM_AIRCRAFTS) +!Not possible (for the moment): arrays have been deallocated after ini_balloon: WRITE(UNIT=ILUSEG,NML=NAM_BALLOONS) ! ! !