246 #define _DEFP_ .FALSE. 249 #define _DEFP_ .TRUE. 265 REAL(KIND=JPRD),
PARAMETER,
PUBLIC ::
r_earth = 6371229._jprd
270 INTEGER(KIND=JPIM) :: num
271 CHARACTER(LEN=100) :: txt
275 REAL(KIND=JPRD) :: onx, ony
279 INTEGER(KIND=JPIM) :: onx, ony
283 REAL(KIND=JPRD) :: onx, ony
287 REAL(KIND=JPRD) :: r, teta
291 REAL(KIND=JPRD) :: x, y
297 REAL(KIND=JPRD) :: kl, r_equateur, pole
298 CHARACTER(LEN=1) :: type_pj
303 type(
lola) :: ct_coord, rf_coord, sw_coord, se_coord, ne_coord, nw_coord
304 REAL(KIND=JPRD) :: mf_ct, mf_rf, mf_sw, mf_se, mf_ne, mf_nw
354 #include "abor1.intfb.h" 364 type(
domi),
INTENT(IN) :: yd_g_info
365 INTEGER(KIND=JPIM),
INTENT(IN),
OPTIONAL :: KOUT
366 REAL(KIND=JPRD),
INTENT(IN),
OPTIONAL :: PI
368 REAL(KIND=JPRD) :: TPI
369 INTEGER(KIND=JPIM) :: TKOUT
370 REAL(KIND=JPRD) :: ZHOOK_HANDLE
372 IF (
lhook)
CALL dr_hook(
'EGGPACK:INFO_DOMI_PRINT',0,zhook_handle)
373 IF (
PRESENT(kout))
THEN 378 IF (
PRESENT(pi))
THEN 381 tpi = asin(1.0_jprd)*2.0_jprd
383 CALL info_print(yd_g_info%INFO_PROJ,tkout,tpi)
384 WRITE(tkout,*)
"=============================================================" 385 WRITE(tkout,*)
"=== Informations about Domain Information Structure ====" 386 WRITE(tkout,*)
"=============================================================" 388 WRITE(tkout,*)
" -Size of Domain (in points) :" 389 WRITE(tkout,
'(13X,A7,10X,A7)')
" On X ",
" On Y " 390 WRITE(tkout,
'(13X,I7,10X,I7)') yd_g_info%G_SIZE%ONX,yd_g_info%G_SIZE%ONY
391 WRITE(tkout,*)
" -Most important points informations :" 392 WRITE(tkout,
'(1X,A7,1X,"|",1X,A9,1X,"|",1X,A8,1X,"|",1X,A16)') &
393 &
" Points ",
"Longitude",
"Latitude",
" Map Factor " 394 WRITE(tkout,
'(A47)')
"------------------------------------------------" 395 WRITE(tkout,
'(1X,A7,1X,"|",2X,F7.2,2X,"|",2X,F7.2,1X,"|",1X,G16.10)') &
396 &
"Center ",yd_g_info%CT_COORD%LON,yd_g_info%CT_COORD%LAT,yd_g_info%MF_CT
397 WRITE(tkout,
'(1X,A7,1X,"|",2X,F7.2,2X,"|",2X,F7.2,1X,"|",1X,G16.10)') &
398 &
"Refer. ",yd_g_info%RF_COORD%LON,yd_g_info%RF_COORD%LAT,yd_g_info%MF_RF
399 WRITE(tkout,
'(1X,A7,1X,"|",2X,F7.2,2X,"|",2X,F7.2,1X,"|",1X,G16.10)') &
400 &
"S.West ",yd_g_info%SW_COORD%LON,yd_g_info%SW_COORD%LAT,yd_g_info%MF_SW
401 WRITE(tkout,
'(1X,A7,1X,"|",2X,F7.2,2X,"|",2X,F7.2,1X,"|",1X,G16.10)') &
402 &
"S.East ",yd_g_info%SE_COORD%LON,yd_g_info%SE_COORD%LAT,yd_g_info%MF_SE
403 WRITE(tkout,
'(1X,A7,1X,"|",2X,F7.2,2X,"|",2X,F7.2,1X,"|",1X,G16.10)') &
404 &
"N.East ",yd_g_info%NE_COORD%LON,yd_g_info%NE_COORD%LAT,yd_g_info%MF_NE
405 WRITE(tkout,
'(1X,A7,1X,"|",2X,F7.2,2X,"|",2X,F7.2,1X,"|",1X,G16.10)') &
406 &
"N.West ",yd_g_info%NW_COORD%LON,yd_g_info%NW_COORD%LAT,yd_g_info%MF_NW
407 WRITE(tkout,*)
"=============================================================" 408 IF (
lhook)
CALL dr_hook(
'EGGPACK:INFO_DOMI_PRINT',1,zhook_handle)
413 INTEGER(KIND=JPIM),
INTENT(IN),
OPTIONAL :: KOUT
414 REAL(KIND=JPRD),
INTENT(IN),
OPTIONAL :: PI
416 REAL(KIND=JPRD) :: TPI, DTR
417 INTEGER(KIND=JPIM) :: TKOUT
418 REAL(KIND=JPRD) :: ZHOOK_HANDLE
420 IF (
lhook)
CALL dr_hook(
'EGGPACK:INFO_PP_PRINT',0,zhook_handle)
421 IF (
PRESENT(kout))
THEN 426 IF (
PRESENT(pi))
THEN 429 tpi = asin(1.0_jprd)*2.0_jprd
432 WRITE(tkout,*)
"=============================================================" 433 WRITE(tkout,*)
"=== Informations about Parameters Projection Structure ====" 434 WRITE(tkout,*)
"=============================================================" 436 WRITE(tkout,*)
" -Reference Point Coordinates :" 437 WRITE(tkout,
'(13X,A7,10X,A7)')
"Degrees",
"Radians" 438 WRITE(tkout,
'(1X,"Longitude : ",F7.2,5X,G16.10)') p_p%REF_PT%LON/dtr,p_p%REF_PT%LON
439 WRITE(tkout,
'(1X,"Latitude : ",F7.2,5X,G16.10)') p_p%REF_PT%LAT/dtr,p_p%REF_PT%LAT
440 WRITE(tkout,*)
" -Projection Characteristics :" 441 WRITE(tkout,
'(13X,A16,5X,A18)')
" ERPK or KL ",
"Type of Projection" 442 WRITE(tkout,
'(13X,G16.10,13X,A1)') p_p%KL,p_p%TYPE_PJ
443 IF ((p_p%TYPE_PJ ==
"M").OR.(p_p%TYPE_PJ ==
"W"))
THEN 444 WRITE(tkout,*)
" -Rayon of Earth (in meters) :" 446 WRITE(tkout,*)
" -Distance between Equator and Pole of projection on" 447 WRITE(tkout,*)
" projection plane (in meters) :" 449 WRITE(tkout,
'(13X,G16.10)') p_p%R_EQUATEUR
450 WRITE(tkout,*)
" -Pole of projection (-1.0 for South, 1.0 for North, 0.0 for" 451 WRITE(tkout,*)
" Mercator projection : no sense) :" 452 WRITE(tkout,
'(13X,F4.1)') p_p%POLE
453 WRITE(tkout,*)
"=============================================================" 454 IF (
lhook)
CALL dr_hook(
'EGGPACK:INFO_PP_PRINT',1,zhook_handle)
457 LOGICAL FUNCTION return_print(YD_CODE_ERR,K_NUM_TEST,AUTO_STOP,KOUT)
458 CHARACTER(LEN=36),
PARAMETER :: FMT =
'(A25,I4," ; test number = ",I3,A100)' 459 type(
error),
INTENT(IN) :: yd_code_err
460 INTEGER(KIND=JPIM),
INTENT(IN) :: K_NUM_TEST
461 LOGICAL,
INTENT(IN),
OPTIONAL :: AUTO_STOP
462 INTEGER(KIND=JPIM),
INTENT(IN),
OPTIONAL :: KOUT
464 CHARACTER(LEN=25) :: CL_ADD_TEXT
466 INTEGER(KIND=JPIM) :: TKOUT
467 REAL(KIND=JPRD) :: ZHOOK_HANDLE
469 IF (
lhook)
CALL dr_hook(
'EGGPACK:RETURN_PRINT',0,zhook_handle)
470 IF (
PRESENT(kout))
THEN 475 IF (
PRESENT(auto_stop))
THEN 480 SELECT CASE (yd_code_err%NUM)
481 CASE(:-1_jpim) ; cl_add_text =
'ERROR : return value = ' 482 CASE(0_jpim) ; cl_add_text =
'OK : return value = ' 483 CASE(1_jpim) ; cl_add_text =
'INFO : return value = ' 484 CASE(2_jpim:) ; cl_add_text =
'WARNING : return value = ' 486 IF (yd_code_err%NUM < 0_jpim)
WRITE (tkout,*)
"Subroutine last status when aborted : " 487 WRITE (tkout,fmt) cl_add_text,yd_code_err%NUM,k_num_test,yd_code_err%TXT
488 IF (yd_code_err%NUM < 0_jpim)
THEN 490 CALL abor1(
"Abort by EGGPACK:RETURN_PRINT")
497 IF (
lhook)
CALL dr_hook(
'EGGPACK:RETURN_PRINT',1,zhook_handle)
500 FUNCTION type_proj(REF_COORD)
RESULT (TY_PJ)
502 type(
lola),
INTENT(IN) :: ref_coord
503 CHARACTER(LEN=1) :: TY_PJ
505 REAL(KIND=JPRD) :: ZHOOK_HANDLE
507 IF (
lhook)
CALL dr_hook(
'EGGPACK:TYPE_PROJ',0,zhook_handle)
508 IF (ref_coord%LAT == 0.0_jprd)
THEN 510 ELSEIF (abs(ref_coord%LAT) == 90.0_jprd)
THEN 515 IF (
lhook)
CALL dr_hook(
'EGGPACK:TYPE_PROJ',1,zhook_handle)
518 REAL(KIND=JPRD) FUNCTION pole_is (REF_COORD)
RESULT (POL)
520 type(
lola),
INTENT(IN) :: ref_coord
522 REAL(KIND=JPRD) :: ZHOOK_HANDLE
524 IF (
lhook)
CALL dr_hook(
'EGGPACK:POLE_IS',0,zhook_handle)
525 IF (ref_coord%LAT == 0.0_jprd)
THEN 528 pol = sign(1.0_jprd,ref_coord%LAT)
530 IF (
lhook)
CALL dr_hook(
'EGGPACK:POLE_IS',1,zhook_handle)
541 type(
lola),
INTENT(IN) :: pt_coord
543 REAL(KIND=JPRD),
INTENT(IN),
OPTIONAL :: PI
545 REAL(KIND=JPRD) :: TPI
546 REAL(KIND=JPRD) :: ZHOOK_HANDLE
548 IF (
lhook)
CALL dr_hook(
'EGGPACK:STPL_LATLON_TO_RTETA_S',0,zhook_handle)
549 IF (
PRESENT(pi))
THEN 552 tpi = asin(1.0_jprd)*2.0_jprd
554 pt_rteta%R = p_pj%R_EQUATEUR*((tan((tpi/4.0_jprd)-((p_pj%POLE*pt_coord%LAT)/2.0_jprd)))**(p_pj%KL))
555 pt_rteta%TETA = p_pj%KL*
dist_2ref(pt_coord,p_pj%REF_PT,tpi)
556 IF (
lhook)
CALL dr_hook(
'EGGPACK:STPL_LATLON_TO_RTETA_S',1,zhook_handle)
561 type(
rteta),
INTENT(IN) :: pt_rteta
564 REAL(KIND=JPRD) :: ZHOOK_HANDLE
566 IF (
lhook)
CALL dr_hook(
'EGGPACK:STLP_RTETA_TO_XY_S',0,zhook_handle)
567 pt_xy%X = pt_rteta%R*sin(pt_rteta%TETA)
568 pt_xy%Y = -p_pj%POLE*pt_rteta%R*cos(pt_rteta%TETA)
569 IF (
lhook)
CALL dr_hook(
'EGGPACK:STLP_RTETA_TO_XY_S',1,zhook_handle)
574 type(
xy),
INTENT(IN) :: pt_xy
576 REAL(KIND=JPRD),
INTENT(IN),
OPTIONAL :: PI
578 REAL(KIND=JPRD) :: TPI,TATNG
579 REAL(KIND=JPRD) :: ZHOOK_HANDLE
581 IF (
lhook)
CALL dr_hook(
'EGGPACK:STLP_XY_TO_RTETA_S',0,zhook_handle)
582 IF (
PRESENT(pi))
THEN 585 tpi = asin(1.0_jprd)*2.0_jprd
587 pt_rteta%R = sqrt((pt_xy%X*pt_xy%X)+(pt_xy%Y*pt_xy%Y))
588 IF (pt_xy%Y == 0.0_jprd)
THEN 589 IF (pt_xy%X == 0.0_jprd)
THEN 592 tatng = sign(tpi/2.0_jprd,-p_pj%POLE*pt_xy%X)
595 tatng = atan(-p_pj%POLE*(pt_xy%X/pt_xy%Y))
597 pt_rteta%TETA = tpi*sign(1.0_jprd,pt_xy%X)*(sign(0.5_jprd,p_pj%POLE*pt_xy%Y)+0.5_jprd)+tatng
601 IF (abs(pt_rteta%TETA) > tpi*p_pj%KL)
THEN 602 print *,
"Point at x = ",pt_xy%X,
" , y = ",pt_xy%Y
603 print *,
"Is out of the planed cone section ! Abort !!!" 604 CALL abor1(
"Abort by EGGPACK:STLP_XY_TO_RTETA_S")
606 IF (
lhook)
CALL dr_hook(
'EGGPACK:STLP_XY_TO_RTETA_S',1,zhook_handle)
611 type(
rteta),
INTENT(IN) :: pt_rteta
613 REAL(KIND=JPRD),
INTENT(IN),
OPTIONAL :: PI
615 REAL(KIND=JPRD) :: TPI
616 REAL(KIND=JPRD) :: ZHOOK_HANDLE
618 IF (
lhook)
CALL dr_hook(
'EGGPACK:STLP_RTETA_TO_LATLON_S',0,zhook_handle)
619 IF (
PRESENT(pi))
THEN 622 tpi = asin(1.0_jprd)*2.0_jprd
624 pt_coord%LON = p_pj%REF_PT%LON + pt_rteta%TETA/p_pj%KL
625 pt_coord%LAT = p_pj%POLE*((tpi/2.0_jprd)-2.0_jprd*atan((pt_rteta%R/p_pj%R_EQUATEUR)**(1.0_jprd/p_pj%KL)))
626 IF (
lhook)
CALL dr_hook(
'EGGPACK:STLP_RTETA_TO_LATLON_S',1,zhook_handle)
631 type(
lola),
DIMENSION(:),
INTENT(IN) :: pt_coord
633 REAL(KIND=JPRD),
INTENT(IN),
OPTIONAL :: PI
634 type(
rteta),
DIMENSION(SIZE(PT_COORD)) :: pt_rteta
636 REAL(KIND=JPRD) :: TPI
637 REAL(KIND=JPRD) :: ZHOOK_HANDLE
639 IF (
lhook)
CALL dr_hook(
'EGGPACK:STPL_LATLON_TO_RTETA_V',0,zhook_handle)
640 IF (
PRESENT(pi))
THEN 643 tpi = asin(1.0_jprd)*2.0_jprd
645 pt_rteta(:)%R = p_pj%R_EQUATEUR*((tan((tpi/4.0_jprd)-((p_pj%POLE*pt_coord(:)%LAT)/2.0_jprd)))**(p_pj%KL))
646 pt_rteta(:)%TETA = p_pj%KL*
dist_2ref(pt_coord(:),p_pj%REF_PT,tpi)
647 IF (
lhook)
CALL dr_hook(
'EGGPACK:STPL_LATLON_TO_RTETA_V',1,zhook_handle)
652 type(
rteta),
DIMENSION(:),
INTENT(IN) :: pt_rteta
654 type(
xy),
DIMENSION(SIZE(PT_RTETA)) :: pt_xy
656 REAL(KIND=JPRD) :: ZHOOK_HANDLE
658 IF (
lhook)
CALL dr_hook(
'EGGPACK:STLP_RTETA_TO_XY_V',0,zhook_handle)
659 pt_xy(:)%X = pt_rteta(:)%R*sin(pt_rteta(:)%TETA)
660 pt_xy(:)%Y = -p_pj%POLE*pt_rteta(:)%R*cos(pt_rteta(:)%TETA)
661 IF (
lhook)
CALL dr_hook(
'EGGPACK:STLP_RTETA_TO_XY_V',1,zhook_handle)
666 type(
xy),
DIMENSION(:),
INTENT(IN) :: pt_xy
668 REAL(KIND=JPRD),
INTENT(IN),
OPTIONAL :: PI
669 type(
rteta),
DIMENSION(SIZE(PT_XY)) :: pt_rteta
671 REAL(KIND=JPRD) :: TPI
672 REAL(KIND=JPRD),
DIMENSION(SIZE(PT_XY)) :: TATNG
673 REAL(KIND=JPRD) :: ZHOOK_HANDLE
675 IF (
lhook)
CALL dr_hook(
'EGGPACK:STLP_XY_TO_RTETA_V',0,zhook_handle)
676 IF (
PRESENT(pi))
THEN 679 tpi = asin(1.0_jprd)*2.0_jprd
681 pt_rteta(:)%R = sqrt((pt_xy(:)%X*pt_xy(:)%X)+(pt_xy(:)%Y*pt_xy(:)%Y))
682 WHERE (pt_xy(:)%Y == 0.0_jprd)
683 WHERE (pt_xy(:)%X == 0.0_jprd)
686 tatng = sign(tpi/2.0_jprd,-p_pj%POLE*pt_xy(:)%X)
689 tatng = atan(-p_pj%POLE*(pt_xy(:)%X/pt_xy(:)%Y))
691 pt_rteta(:)%TETA = tpi*sign(1.0_jprd,pt_xy(:)%X)*(sign(0.5_jprd,p_pj%POLE*pt_xy(:)%Y)+0.5_jprd)+tatng(:)
695 IF (any(abs(pt_rteta(:)%TETA) > tpi*p_pj%KL))
THEN 696 print *,
"Some points are out of planed cone section ! Abort !!!" 697 CALL abor1(
"Abort by EGGPACK:STLP_XY_TO_RTETA_V")
699 IF (
lhook)
CALL dr_hook(
'EGGPACK:STLP_XY_TO_RTETA_V',1,zhook_handle)
704 type(
rteta),
DIMENSION(:),
INTENT(IN) :: pt_rteta
706 REAL(KIND=JPRD),
INTENT(IN),
OPTIONAL :: PI
707 type(
lola),
DIMENSION(SIZE(PT_RTETA)) :: pt_coord
709 REAL(KIND=JPRD) :: TPI
710 REAL(KIND=JPRD) :: ZHOOK_HANDLE
712 IF (
lhook)
CALL dr_hook(
'EGGPACK:STLP_RTETA_TO_LATLON_V',0,zhook_handle)
713 IF (
PRESENT(pi))
THEN 716 tpi = asin(1.0_jprd)*2.0_jprd
718 pt_coord(:)%LON = p_pj%REF_PT%LON + pt_rteta(:)%TETA/p_pj%KL
719 pt_coord(:)%LAT = p_pj%POLE*((tpi/2.0_jprd)-2.0_jprd*atan((pt_rteta(:)%R/p_pj%R_EQUATEUR)**(1.0_jprd/p_pj%KL)))
720 IF (
lhook)
CALL dr_hook(
'EGGPACK:STLP_RTETA_TO_LATLON_V',1,zhook_handle)
730 type(
lola),
INTENT(IN) :: ref_coord
731 REAL(KIND=JPRD),
INTENT(IN),
OPTIONAL :: RA
732 type(
lola),
INTENT(IN),
OPTIONAL :: tozero_coord
733 LOGICAL,
INTENT(IN),
OPTIONAL :: LRT
735 REAL(KIND=JPRD) :: RT
736 REAL(KIND=JPRD) :: ZHOOK_HANDLE
738 IF (
lhook)
CALL dr_hook(
'EGGPACK:REF_DATAS',0,zhook_handle)
746 IF (
PRESENT(lrt))
THEN 747 IF ((lrt).AND.(p_p%REF_PT%LAT==0.0_jprd))
THEN 749 IF (
PRESENT(tozero_coord))
THEN 752 p_p%TZO_PT%LAT = 0.0_jprd
753 p_p%TZO_PT%LON = 0.0_jprd
757 p_p%TZO_PT%LAT = -999.999_jprd
758 p_p%TZO_PT%LON = -999.999_jprd
762 p_p%TZO_PT%LAT = -999.999_jprd
763 p_p%TZO_PT%LON = -999.999_jprd
766 p_p%KL = p_p%POLE*sin(p_p%REF_PT%LAT)
767 IF (p_p%KL /= 0.0_jprd)
THEN 769 p_p%R_EQUATEUR = rt*((cos(p_p%REF_PT%LAT))**(1.0_jprd -p_p%KL))*(((1.0_jprd +p_p%KL)**p_p%KL)/p_p%KL)
773 IF (
lhook)
CALL dr_hook(
'EGGPACK:REF_DATAS',1,zhook_handle)
780 type(
lola),
INTENT(IN) :: new_origin_coord
781 type(
xy),
INTENT(IN) :: pt_xy_in_new_origin
783 REAL(KIND=JPRD),
INTENT(IN),
OPTIONAL :: PI
785 REAL(KIND=JPRD) :: TPI
786 type(
xy) :: n_o_pt_xy
787 REAL(KIND=JPRD) :: ZHOOK_HANDLE
789 IF (
lhook)
CALL dr_hook(
'EGGPACK:XY_NEW_TO_STD_ORIGIN_S',0,zhook_handle)
790 IF (
PRESENT(pi))
THEN 793 tpi = asin(1.0_jprd)*2.0_jprd
796 pt_xy_in_std_origin%X = pt_xy_in_new_origin%X+n_o_pt_xy%X
797 pt_xy_in_std_origin%Y = pt_xy_in_new_origin%Y+n_o_pt_xy%Y
798 IF (
lhook)
CALL dr_hook(
'EGGPACK:XY_NEW_TO_STD_ORIGIN_S',1,zhook_handle)
803 type(
lola),
INTENT(IN) :: new_origin_coord
804 type(
xy),
INTENT(IN) :: pt_xy_in_std_origin
806 REAL(KIND=JPRD),
INTENT(IN),
OPTIONAL :: PI
808 REAL(KIND=JPRD) :: TPI
809 type(
xy) :: n_o_pt_xy
810 REAL(KIND=JPRD) :: ZHOOK_HANDLE
812 IF (
lhook)
CALL dr_hook(
'EGGPACK:XY_STD_TO_NEW_ORIGIN_S',0,zhook_handle)
813 IF (
PRESENT(pi))
THEN 816 tpi = asin(1.0_jprd)*2.0_jprd
819 pt_xy_in_new_origin%X = pt_xy_in_std_origin%X-n_o_pt_xy%X
820 pt_xy_in_new_origin%Y = pt_xy_in_std_origin%Y-n_o_pt_xy%Y
821 IF (
lhook)
CALL dr_hook(
'EGGPACK:XY_STD_TO_NEW_ORIGIN_S',1,zhook_handle)
824 FUNCTION xy_new_to_std_origin_v(NEW_ORIGIN_COORD,PT_XY_IN_NEW_ORIGIN,P_PJ,PI)
RESULT (PT_XY_IN_STD_ORIGIN)
826 type(
lola),
INTENT(IN) :: new_origin_coord
827 type(
xy),
DIMENSION(:),
INTENT(IN) :: pt_xy_in_new_origin
829 REAL(KIND=JPRD),
INTENT(IN),
OPTIONAL :: PI
830 type(
xy),
DIMENSION(SIZE(PT_XY_IN_NEW_ORIGIN)) :: pt_xy_in_std_origin
832 REAL(KIND=JPRD) :: TPI
833 type(
xy) :: n_o_pt_xy
834 REAL(KIND=JPRD) :: ZHOOK_HANDLE
836 IF (
lhook)
CALL dr_hook(
'EGGPACK:XY_NEW_TO_STD_ORIGIN_V',0,zhook_handle)
837 IF (
PRESENT(pi))
THEN 840 tpi = asin(1.0_jprd)*2.0_jprd
843 pt_xy_in_std_origin(:)%X = pt_xy_in_new_origin(:)%X+n_o_pt_xy%X
844 pt_xy_in_std_origin(:)%Y = pt_xy_in_new_origin(:)%Y+n_o_pt_xy%Y
845 IF (
lhook)
CALL dr_hook(
'EGGPACK:XY_NEW_TO_STD_ORIGIN_V',1,zhook_handle)
848 FUNCTION xy_std_to_new_origin_v(YL_NEW_ORIGIN_COORD,YL_PT_XY_IN_STD_ORIGIN,P_PJ,PI)
RESULT (YD_PT_XY_IN_NEW_ORIGIN)
850 type(
lola),
INTENT(IN) :: yl_new_origin_coord
851 type(
xy),
DIMENSION(:),
INTENT(IN) :: yl_pt_xy_in_std_origin
853 REAL(KIND=JPRD),
INTENT(IN),
OPTIONAL :: PI
854 type(
xy),
DIMENSION(SIZE(YL_PT_XY_IN_STD_ORIGIN)) :: yd_pt_xy_in_new_origin
856 REAL(KIND=JPRD) :: TPI
857 type(
xy) :: yl_n_o_pt_xy
858 REAL(KIND=JPRD) :: ZHOOK_HANDLE
860 IF (
lhook)
CALL dr_hook(
'EGGPACK:XY_STD_TO_NEW_ORIGIN_V',0,zhook_handle)
861 IF (
PRESENT(pi))
THEN 864 tpi = asin(1.0_jprd)*2.0_jprd
867 yd_pt_xy_in_new_origin(:)%X = yl_pt_xy_in_std_origin(:)%X-yl_n_o_pt_xy%X
868 yd_pt_xy_in_new_origin(:)%Y = yl_pt_xy_in_std_origin(:)%Y-yl_n_o_pt_xy%Y
869 IF (
lhook)
CALL dr_hook(
'EGGPACK:XY_STD_TO_NEW_ORIGIN_V',1,zhook_handle)
877 type(
lola),
INTENT(IN) :: pt_coord
879 REAL(KIND=JPRD),
INTENT(IN),
OPTIONAL :: PI
881 REAL(KIND=JPRD) :: TPI
882 type(
lola) :: pt_coord2
883 REAL(KIND=JPRD) :: ZHOOK_HANDLE
885 IF (
lhook)
CALL dr_hook(
'EGGPACK:LATLON_TO_XY_S',0,zhook_handle)
886 IF (
PRESENT(pi))
THEN 889 tpi = asin(1.0_jprd)*2.0_jprd
891 IF ((p_pj%TYPE_PJ ==
"S").OR.(p_pj%TYPE_PJ ==
"L"))
THEN 895 IF (p_pj%TYPE_PJ ==
"W")
THEN 896 pt_coord2 =
metilrot(p_pj%REF_PT,p_pj%TZO_PT,pt_coord)
897 pt_xy%X = pt_coord2%LON*p_pj%R_EQUATEUR
899 pt_xy%X = p_pj%R_EQUATEUR*
dist_2ref(pt_coord,p_pj%REF_PT,tpi)
901 pt_xy%Y = -p_pj%R_EQUATEUR*log(tan((tpi/4.0_jprd)-(pt_coord2%LAT/2.0_jprd)))
903 IF (
lhook)
CALL dr_hook(
'EGGPACK:LATLON_TO_XY_S',1,zhook_handle)
909 type(
xy),
INTENT(IN) :: pt_xy
911 REAL(KIND=JPRD),
INTENT(IN),
OPTIONAL :: PI
913 REAL(KIND=JPRD) :: TPI
914 REAL(KIND=JPRD) :: ZHOOK_HANDLE
916 IF (
lhook)
CALL dr_hook(
'EGGPACK:XY_TO_LATLON_S',0,zhook_handle)
917 IF (
PRESENT(pi))
THEN 920 tpi = asin(1.0_jprd)*2.0_jprd
922 IF ((p_pj%TYPE_PJ ==
"S").OR.(p_pj%TYPE_PJ ==
"L"))
THEN 925 pt_coord%LON = (pt_xy%X/p_pj%R_EQUATEUR)
926 pt_coord%LAT = (tpi/2.0_jprd)-2.0_jprd*atan(exp(-(pt_xy%Y/p_pj%R_EQUATEUR)))
927 IF (p_pj%TYPE_PJ ==
"W")
THEN 928 pt_coord=
merotil(p_pj%REF_PT,p_pj%TZO_PT,pt_coord)
930 pt_coord%LON = p_pj%REF_PT%LON+pt_coord%LON
933 IF (
lhook)
CALL dr_hook(
'EGGPACK:XY_TO_LATLON_S',1,zhook_handle)
939 type(
lola),
DIMENSION(:),
INTENT(IN) :: pt_coord
941 REAL(KIND=JPRD),
INTENT(IN),
OPTIONAL :: PI
942 type(
xy),
DIMENSION(SIZE(PT_COORD)) :: pt_xy
944 REAL(KIND=JPRD) :: TPI
945 type(
lola),
DIMENSION(SIZE(PT_COORD)) :: pt_coord2
946 REAL(KIND=JPRD) :: ZHOOK_HANDLE
948 IF (
lhook)
CALL dr_hook(
'EGGPACK:LATLON_TO_XY_V',0,zhook_handle)
949 IF (
PRESENT(pi))
THEN 952 tpi = asin(1.0_jprd)*2.0_jprd
954 IF ((p_pj%TYPE_PJ ==
"S").OR.(p_pj%TYPE_PJ ==
"L"))
THEN 957 pt_coord2(:) = pt_coord(:)
958 IF (p_pj%TYPE_PJ ==
"W")
THEN 959 pt_coord2(:) =
metilrot(p_pj%REF_PT,p_pj%TZO_PT,pt_coord(:))
960 pt_xy(:)%X = pt_coord2(:)%LON*p_pj%R_EQUATEUR
962 pt_xy(:)%X = p_pj%R_EQUATEUR*
dist_2ref(pt_coord(:),p_pj%REF_PT,tpi)
964 pt_xy(:)%Y = -p_pj%R_EQUATEUR*log(tan((tpi/4.0_jprd)-(pt_coord2(:)%LAT/2.0_jprd)))
966 IF (
lhook)
CALL dr_hook(
'EGGPACK:LATLON_TO_XY_V',1,zhook_handle)
972 type(
xy),
DIMENSION(:),
INTENT(IN) :: yl_pt_xy
974 REAL(KIND=JPRD),
INTENT(IN),
OPTIONAL :: PI
975 type(
lola),
DIMENSION(SIZE(YL_PT_XY)) :: pt_coord
977 REAL(KIND=JPRD) :: TPI
978 REAL(KIND=JPRD) :: ZHOOK_HANDLE
980 IF (
lhook)
CALL dr_hook(
'EGGPACK:XY_TO_LATLON_V',0,zhook_handle)
981 IF (
PRESENT(pi))
THEN 984 tpi = asin(1.0_jprd)*2.0_jprd
986 IF ((p_pj%TYPE_PJ ==
"S").OR.(p_pj%TYPE_PJ ==
"L"))
THEN 989 pt_coord(:)%LON = (yl_pt_xy(:)%X/p_pj%R_EQUATEUR)
990 pt_coord(:)%LAT = (tpi/2.0_jprd)-2.0_jprd*atan(exp(-(yl_pt_xy(:)%Y/p_pj%R_EQUATEUR)))
991 IF (p_pj%TYPE_PJ ==
"W")
THEN 992 pt_coord(:)=
merotil(p_pj%REF_PT,p_pj%TZO_PT,pt_coord(:))
994 pt_coord(:)%LON = p_pj%REF_PT%LON+pt_coord(:)%LON
997 IF (
lhook)
CALL dr_hook(
'EGGPACK:XY_TO_LATLON_V',1,zhook_handle)
1002 REAL(KIND=JPRD) FUNCTION map_factor_s(PT_COORD,P_PJ,PI,RA)
1004 type(
lola),
INTENT(IN) :: pt_coord
1006 REAL(KIND=JPRD),
INTENT(IN),
OPTIONAL :: RA, PI
1008 REAL(KIND=JPRD) :: RT, TPI
1009 type(
rteta) :: pt_rteta
1010 type(
lola) :: pt_coord2
1011 REAL(KIND=JPRD) :: ZHOOK_HANDLE
1013 IF (
lhook)
CALL dr_hook(
'EGGPACK:MAP_FACTOR_S',0,zhook_handle)
1014 IF (
PRESENT(ra))
THEN 1019 IF (
PRESENT(pi))
THEN 1022 tpi = asin(1.0_jprd)*2.0_jprd
1024 SELECT CASE(p_pj%TYPE_PJ)
1025 CASE(
'W') ; pt_coord2 =
metilrot(p_pj%REF_PT,p_pj%TZO_PT,pt_coord)
1027 CASE(
'M') ;
map_factor_s = 1.0_jprd/(cos(pt_coord%LAT))
1028 CASE(
'S') ;
map_factor_s = 2.0_jprd/(1.0_jprd +p_pj%POLE*sin(pt_coord%LAT))
1030 map_factor_s = (p_pj%KL*pt_rteta%R)/(rt*cos(pt_coord%LAT))
1032 IF (
lhook)
CALL dr_hook(
'EGGPACK:MAP_FACTOR_S',1,zhook_handle)
1037 type(
lola),
DIMENSION(:),
INTENT(IN) :: pt_coord
1039 REAL(KIND=JPRD),
INTENT(IN),
OPTIONAL :: RA, PI
1040 REAL(KIND=JPRD),
DIMENSION(SIZE(PT_COORD)) :: MAP_FACTOR_V
1042 REAL(KIND=JPRD) :: RT, TPI
1043 type(
rteta),
DIMENSION(SIZE(PT_COORD)) :: yl_pt_rteta
1044 type(
lola),
DIMENSION(SIZE(PT_COORD)) :: pt_coord2
1045 REAL(KIND=JPRD) :: ZHOOK_HANDLE
1047 IF (
lhook)
CALL dr_hook(
'EGGPACK:MAP_FACTOR_V',0,zhook_handle)
1048 IF (
PRESENT(ra))
THEN 1053 IF (
PRESENT(pi))
THEN 1056 tpi = asin(1.0_jprd)*2.0_jprd
1058 SELECT CASE(p_pj%TYPE_PJ)
1059 CASE(
'W') ; pt_coord2(:) =
metilrot(p_pj%REF_PT,p_pj%TZO_PT,pt_coord(:))
1060 map_factor_v(:) = 1.0_jprd/(cos(pt_coord2(:)%LAT))
1061 CASE(
'M') ; map_factor_v(:) = 1.0_jprd/(cos(pt_coord(:)%LAT))
1062 CASE(
'S') ; map_factor_v(:) = 2.0_jprd/(1.0_jprd +p_pj%POLE*sin(pt_coord(:)%LAT))
1064 map_factor_v(:) = (p_pj%KL*yl_pt_rteta(:)%R)/(rt*cos(pt_coord(:)%LAT))
1066 IF (
lhook)
CALL dr_hook(
'EGGPACK:MAP_FACTOR_V',1,zhook_handle)
1069 type(
pgn)
FUNCTION gn_s(PT_COORD,P_PJ)
1071 type(
lola),
INTENT(IN) :: pt_coord
1074 type(
lola) :: pt_coord2
1075 REAL(KIND=JPRD) :: ZHOOK_HANDLE
1078 SELECT CASE(p_pj%TYPE_PJ)
1079 CASE(
'W') ; pt_coord2 =
metilrot(p_pj%REF_PT,p_pj%TZO_PT,pt_coord)
1080 gn_s%ONY = (((cos(p_pj%REF_PT%LON)*((cos(p_pj%TZO_PT%LAT)*cos(pt_coord%LAT))+ &
1081 & (sin(p_pj%TZO_PT%LAT)*sin(pt_coord%LAT)*cos(pt_coord%LON-p_pj%TZO_PT%LON)))) &
1082 & -(sin(p_pj%REF_PT%LON)*sin(pt_coord%LAT)*sin(pt_coord%LON-p_pj%TZO_PT%LON))) &
1083 & /cos(pt_coord2%LAT))
1084 gn_s%ONX = -((cos(p_pj%REF_PT%LON)*sin(p_pj%TZO_PT%LAT)*sin(pt_coord%LON-p_pj%TZO_PT%LON)) &
1085 & +(sin(p_pj%REF_PT%LON)*cos(pt_coord%LON-p_pj%TZO_PT%LON)))/cos(pt_coord2%LAT)
1086 CASE(
'M') ;
gn_s%ONX = 0.0_jprd
1088 CASE DEFAULT ;
gn_s%ONX = -p_pj%POLE*sin(p_pj%KL*(pt_coord%LON-p_pj%REF_PT%LON))
1089 gn_s%ONY = cos(p_pj%KL*(pt_coord%LON-p_pj%REF_PT%LON))
1094 FUNCTION gn_v(YD_PT_COORD,YD_P_PJ)
1096 type(
lola),
DIMENSION(:),
INTENT(IN) :: yd_pt_coord
1098 type(
pgn),
DIMENSION(SIZE(YD_PT_COORD)) ::
gn_v 1100 type(
lola),
DIMENSION(SIZE(YD_PT_COORD)) :: yd_pt_coord2
1101 REAL(KIND=JPRD) :: ZHOOK_HANDLE
1104 SELECT CASE(yd_p_pj%TYPE_PJ)
1105 CASE(
'W') ; yd_pt_coord2(:) =
metilrot(yd_p_pj%REF_PT,yd_p_pj%TZO_PT,yd_pt_coord(:))
1106 gn_v(:)%ONY = (((cos(yd_p_pj%REF_PT%LON)*((cos(yd_p_pj%TZO_PT%LAT)*cos(yd_pt_coord(:)%LAT))+ &
1107 & (sin(yd_p_pj%TZO_PT%LAT)*sin(yd_pt_coord(:)%LAT)*cos(yd_pt_coord(:)%LON-yd_p_pj%TZO_PT%LON)))) &
1108 & -(sin(yd_p_pj%REF_PT%LON)*sin(yd_pt_coord(:)%LAT)*sin(yd_pt_coord(:)%LON-yd_p_pj%TZO_PT%LON))) &
1109 & /cos(yd_pt_coord2(:)%LAT))
1110 gn_v(:)%ONX = -((cos(yd_p_pj%REF_PT%LON)*sin(yd_p_pj%TZO_PT%LAT)*sin(yd_pt_coord(:)%LON-yd_p_pj%TZO_PT%LON)) &
1111 & +(sin(yd_p_pj%REF_PT%LON)*cos(yd_pt_coord(:)%LON-yd_p_pj%TZO_PT%LON)))/cos(yd_pt_coord2(:)%LAT)
1112 CASE(
'M') ;
gn_v(:)%ONX = 0.0_jprd
1113 gn_v(:)%ONY = 1.0_jprd
1114 CASE DEFAULT ;
gn_v(:)%ONX = -yd_p_pj%POLE*sin(yd_p_pj%KL*(yd_pt_coord(:)%LON-yd_p_pj%REF_PT%LON))
1115 gn_v(:)%ONY = cos(yd_p_pj%KL*(yd_pt_coord(:)%LON-yd_p_pj%REF_PT%LON))
1126 SUBROUTINE makdo(YD_REF_COORD,YD_CENTER_COORD,YD_PDEL,YD_NB_PTS,YD_GRID_COORD,P_GRID_MF, &
1127 & YD_GRID_PGN,YD_GRID_INFO,YD_ERR_CODE,LD_LIP,LD_AUTO_STOP,PI,P_RA,KOUT,LD_LMRT)
1129 type(
lola),
INTENT(INOUT) :: yd_ref_coord, yd_center_coord
1130 type(
delta),
INTENT(IN) :: yd_pdel
1131 type(
nbpts),
INTENT(IN) :: yd_nb_pts
1132 REAL(KIND=JPRD),
INTENT(IN),
OPTIONAL :: PI, P_RA
1133 LOGICAL,
INTENT(IN),
OPTIONAL :: LD_AUTO_STOP, LD_LIP, LD_LMRT
1134 type(
lola),
DIMENSION(YD_NB_PTS%ONX,YD_NB_PTS%ONY),
INTENT(OUT) :: yd_grid_coord
1135 REAL(KIND=JPRD),
DIMENSION(YD_NB_PTS%ONX,YD_NB_PTS%ONY),
INTENT(OUT) :: P_GRID_MF
1136 type(
pgn),
DIMENSION(YD_NB_PTS%ONX,YD_NB_PTS%ONY),
INTENT(OUT) :: yd_grid_pgn
1137 type(
domi),
INTENT(OUT) :: yd_grid_info
1138 type(
error),
INTENT(OUT) :: yd_err_code
1139 INTEGER(KIND=JPIM),
INTENT(IN),
OPTIONAL :: KOUT
1140 type(
error),
DIMENSION(-6:4) :: yl_tab_err_def = (/ &
1141 &
error(-6_jpim,
" : In Mercator, Deformations are too big out of [-85.0,85.0] (Rotated/Tilted mode)!"), &
1142 &
error(-5_jpim,
" : In Lambert, the pole must be out of the domain !"), &
1143 &
error(-4_jpim,
" : In Mercator, Deformations are too big out of [-85.0,85.0] !"), &
1144 &
error(-3_jpim,
" : Center point degrees coordinates out of bounds !"), &
1145 &
error(-2_jpim,
" : Reference point degrees coordinates out of bounds !"), &
1146 &
error(-1_jpim,
" : Subroutine aborted, sorry ..."), &
1147 &
error( 0_jpim,
" : Subroutine finished successly."), &
1148 &
error( 1_jpim,
" : Test OK, subroutine go ahead !"), &
1149 &
error( 2_jpim,
" : In Mercator, It's better to use Lambert or St.Pol. if ABS(CENTER_LAT) > 20.0 !"), &
1150 &
error( 3_jpim,
" : In St.Pol. , It's better to use Lambert or Mercator if ABS(CENTER_LAT) < 70.0 !"), &
1151 &
error( 4_jpim,
" : In Lambert , It's better to use St.Pol. or Mercator if ABS(REF_LAT) is out of [20.0,70.0] !") &
1153 REAL(KIND=JPRD) :: Z_RT, Z_TPI
1154 LOGICAL :: LL_TAS, LL_TLIP, LL_TLMRT
1155 INTEGER(KIND=JPIM) :: I, J, I_TKOUT
1157 type(
xy),
DIMENSION(YD_NB_PTS%ONX,YD_NB_PTS%ONY) :: yl_grid_xy_c, yl_grid_xy_p
1158 REAL(KIND=JPRD) :: ZHOOK_HANDLE
1159 IF (
lhook)
CALL dr_hook(
'EGGPACK:MAKDO',0,zhook_handle)
1160 IF (
PRESENT(ld_lip))
THEN 1165 IF (
PRESENT(ld_lmrt))
THEN 1170 IF (
PRESENT(kout))
THEN 1175 IF (
PRESENT(ld_auto_stop))
THEN 1176 ll_tas = ld_auto_stop
1180 IF (
PRESENT(p_ra))
THEN 1185 IF (
PRESENT(pi))
THEN 1188 z_tpi = asin(1.0_jprd)*2.0_jprd
1190 WRITE(i_tkout,*)
"Begining of Makin Domain MAKDO subroutine" 1192 yd_err_code = yl_tab_err_def(
val_coord(yd_ref_coord,-2_jpim,z_tpi))
1193 test_1:
IF (
return_print(yd_err_code,1_jpim,ll_tas,i_tkout))
THEN 1194 IF (
lhook)
CALL dr_hook(
'EGGPACK:MAKDO',1,zhook_handle)
1197 yd_err_code = yl_tab_err_def(
val_coord(yd_center_coord,-3_jpim,z_tpi))
1198 test_2:
IF (
return_print(yd_err_code,2_jpim,ll_tas,i_tkout))
THEN 1199 IF (
lhook)
CALL dr_hook(
'EGGPACK:MAKDO',1,zhook_handle)
1203 yd_grid_info%CT_COORD = yd_center_coord
1204 yd_grid_info%RF_COORD = yd_ref_coord
1205 yl_p_p =
ref_datas(yd_ref_coord,z_rt,yd_center_coord,ll_tlmrt)
1206 yd_grid_info%INFO_PROJ = yl_p_p
1208 yd_center_coord =
lolar(yd_center_coord)
1209 yd_ref_coord = yl_p_p%REF_PT
1211 DO i=1_jpim,yd_nb_pts%ONX
1212 DO j=1_jpim,yd_nb_pts%ONY
1213 yl_grid_xy_c(i,j)%X = (
REAL(i,kind=
jprd)-(
REAL(yd_nb_pts%onx+1_jpim,kind=
jprd)/2.0_jprd))*yd_pdel%ONX
1214 yl_grid_xy_c(i,j)%Y = (
REAL(j,kind=
jprd)-(
REAL(yd_nb_pts%ony+1_jpim,kind=
jprd)/2.0_jprd))*yd_pdel%ONY
1217 IF (yl_p_p%TYPE_PJ/=
'W')
THEN 1219 DO j=1_jpim,yd_nb_pts%ONY
1220 yl_grid_xy_p(1:yd_nb_pts%ONX,j) = &
1224 yl_grid_xy_p = yl_grid_xy_c
1227 SELECT CASE (yl_p_p%TYPE_PJ)
1230 IF (abs(yd_grid_info%CT_COORD%LAT) > 20.0_jprd) yd_err_code = yl_tab_err_def(2_jpim)
1231 test_3:
IF (
return_print(yd_err_code,3_jpim,ll_tas,i_tkout))
THEN 1232 IF (
lhook)
CALL dr_hook(
'EGGPACK:MAKDO',1,zhook_handle)
1235 IF (maxval(abs(yl_grid_xy_p(:,:)%Y)) > 3.0_jprd*z_rt) yd_err_code = yl_tab_err_def(-4_jpim)
1236 test_4:
IF (
return_print(yd_err_code,4_jpim,ll_tas,i_tkout))
THEN 1237 IF (
lhook)
CALL dr_hook(
'EGGPACK:MAKDO',1,zhook_handle)
1242 IF (abs(yd_grid_info%CT_COORD%LAT) < 70.0_jprd) yd_err_code = yl_tab_err_def(3_jpim)
1243 test_5:
IF (
return_print(yd_err_code,5_jpim,ll_tas,i_tkout))
THEN 1244 IF (
lhook)
CALL dr_hook(
'EGGPACK:MAKDO',1,zhook_handle)
1249 IF ((abs(yd_grid_info%RF_COORD%LAT) < 20.0_jprd).OR.(abs(yd_grid_info%RF_COORD%LAT) > 70.0_jprd)) &
1250 & yd_err_code = yl_tab_err_def(4_jpim)
1251 test_6:
IF (
return_print(yd_err_code,6_jpim,ll_tas,i_tkout))
THEN 1252 IF (
lhook)
CALL dr_hook(
'EGGPACK:MAKDO',1,zhook_handle)
1255 IF (((yl_grid_xy_p(1,1)%X*yl_grid_xy_p(yd_nb_pts%ONX,1)%X) < 0.0_jprd).AND. &
1256 & ((yl_grid_xy_p(1,1)%Y*yl_grid_xy_p(1,yd_nb_pts%ONY)%Y) < 0.0_jprd)) yd_err_code = yl_tab_err_def(-5_jpim)
1257 test_7:
IF (
return_print(yd_err_code,7_jpim,ll_tas,i_tkout))
THEN 1258 IF (
lhook)
CALL dr_hook(
'EGGPACK:MAKDO',1,zhook_handle)
1263 IF (maxval(abs(yl_grid_xy_p(:,:)%Y)) > 3.0_jprd*z_rt) yd_err_code = yl_tab_err_def(-6_jpim)
1264 test_8:
IF (
return_print(yd_err_code,8_jpim,ll_tas,i_tkout))
THEN 1265 IF (
lhook)
CALL dr_hook(
'EGGPACK:MAKDO',1,zhook_handle)
1270 DO j=1_jpim,yd_nb_pts%ONY
1271 yd_grid_coord(1:yd_nb_pts%ONX,j) =
xy_to_latlon(yl_grid_xy_p(1:yd_nb_pts%ONX,j),yl_p_p,z_tpi)
1272 p_grid_mf(1:yd_nb_pts%ONX,j) =
map_factor(yd_grid_coord(1:yd_nb_pts%ONX,j),yl_p_p,z_tpi,z_rt)
1273 yd_grid_pgn(1:yd_nb_pts%ONX,j) =
gn(yd_grid_coord(1:yd_nb_pts%ONX,j),yl_p_p)
1274 yd_grid_coord(1:yd_nb_pts%ONX,j) =
angle_domain(yd_grid_coord(1:yd_nb_pts%ONX,j),z_tpi,
'0+',
'R')
1277 yd_grid_info%G_SIZE = yd_nb_pts
1278 yd_grid_info%SW_COORD =
lolad(yd_grid_coord(1,1))
1279 yd_grid_info%MF_SW = p_grid_mf(1,1)
1280 yd_grid_info%SE_COORD =
lolad(yd_grid_coord(yd_nb_pts%ONX,1))
1281 yd_grid_info%MF_SE = p_grid_mf(yd_nb_pts%ONX,1)
1282 yd_grid_info%NE_COORD =
lolad(yd_grid_coord(yd_nb_pts%ONX,yd_nb_pts%ONY))
1283 yd_grid_info%MF_NE = p_grid_mf(yd_nb_pts%ONX,yd_nb_pts%ONY)
1284 yd_grid_info%NW_COORD =
lolad(yd_grid_coord(1,yd_nb_pts%ONY))
1285 yd_grid_info%MF_NW = p_grid_mf(1,yd_nb_pts%ONY)
1286 yd_grid_info%MF_RF =
map_factor(yd_ref_coord,yl_p_p,z_tpi,z_rt)
1287 yd_grid_info%MF_CT =
map_factor(yd_center_coord,yl_p_p,z_tpi,z_rt)
1288 yd_ref_coord =
angle_domain(yd_ref_coord,z_tpi,
'0+',
'R')
1289 yd_center_coord =
angle_domain(yd_center_coord,z_tpi,
'0+',
'R')
1290 IF (ll_tlip)
CALL info_print(yd_grid_info,i_tkout,z_tpi)
1291 WRITE (i_tkout,*)
"Subroutine last status when finished : " 1292 IF (yd_err_code%NUM == 1_jpim) yd_err_code = yl_tab_err_def(0_jpim)
1293 test_9:
IF (
return_print(yd_err_code,9_jpim,ll_tas,i_tkout))
THEN 1294 IF (
lhook)
CALL dr_hook(
'EGGPACK:MAKDO',1,zhook_handle)
1297 IF (
lhook)
CALL dr_hook(
'EGGPACK:MAKDO',1,zhook_handle)
1298 END SUBROUTINE makdo
type(lola) function xy_to_latlon_s(PT_XY, P_PJ, PI)
type(xy) function stlp_rteta_to_xy_s(PT_RTETA, P_PJ)
type(rteta) function, dimension(size(pt_coord)) stpl_latlon_to_rteta_v(PT_COORD, P_PJ, PI)
real(kind=jprd), parameter, public r_earth
logical function return_print(YD_CODE_ERR, K_NUM_TEST, AUTO_STOP, KOUT)
type(xy) function xy_std_to_new_origin_s(NEW_ORIGIN_COORD, PT_XY_IN_STD_ORIGIN, P_PJ, PI)
type(rteta) function stlp_xy_to_rteta_s(PT_XY, P_PJ, PI)
type(xy) function, dimension(size(pt_rteta)) stlp_rteta_to_xy_v(PT_RTETA, P_PJ)
subroutine info_pp_print(P_P, KOUT, PI)
type(xy) function, dimension(size(yl_pt_xy_in_std_origin)) xy_std_to_new_origin_v(YL_NEW_ORIGIN_COORD, YL_PT_XY_IN_STD_ORIGIN, P_PJ, PI)
real(kind=jprd) function map_factor_s(PT_COORD, P_PJ, PI, RA)
character(len=1) function type_proj(REF_COORD)
type(rteta) function stpl_latlon_to_rteta_s(PT_COORD, P_PJ, PI)
type(param_proj) function ref_datas(REF_COORD, RA, TOZERO_COORD, LRT)
subroutine makdo(YD_REF_COORD, YD_CENTER_COORD, YD_PDEL, YD_NB_PTS, YD_GRID_COORD, P_GRID_MF, YD_GRID_PGN, YD_GRID_INFO, YD_ERR_CODE, LD_LIP, LD_AUTO_STOP, PI, P_RA, KOUT, LD_LMRT)
type(xy) function, dimension(size(pt_coord)) latlon_to_xy_v(PT_COORD, P_PJ, PI)
type(rteta) function, dimension(size(pt_xy)) stlp_xy_to_rteta_v(PT_XY, P_PJ, PI)
type(xy) function xy_new_to_std_origin_s(NEW_ORIGIN_COORD, PT_XY_IN_NEW_ORIGIN, P_PJ, PI)
real(kind=jprd) function pole_is(REF_COORD)
type(lola) function stlp_rteta_to_latlon_s(PT_RTETA, P_PJ, PI)
type(lola) function, dimension(size(pt_rteta)) stlp_rteta_to_latlon_v(PT_RTETA, P_PJ, PI)
type(xy) function latlon_to_xy_s(PT_COORD, P_PJ, PI)
type(lola) function, dimension(size(yl_pt_xy)) xy_to_latlon_v(YL_PT_XY, P_PJ, PI)
type(xy) function, dimension(size(pt_xy_in_new_origin)) xy_new_to_std_origin_v(NEW_ORIGIN_COORD, PT_XY_IN_NEW_ORIGIN, P_PJ, PI)
subroutine info_domi_print(YD_G_INFO, KOUT, PI)
type(pgn) function gn_s(PT_COORD, P_PJ)
real(kind=jprd) function, dimension(size(pt_coord)) map_factor_v(PT_COORD, P_PJ, PI, RA)
type(pgn) function, dimension(size(yd_pt_coord)) gn_v(YD_PT_COORD, YD_P_PJ)