00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 Module PSMILe
00017
00018
00019
00020
00021 Use PSMILe_Common
00022 Use PSMILe_SMIOC, only : PSMILe_file_struct
00023 Use psmile_grid_reduced_gauss, only : reduced_gauss_grid_data
00024 Use PRISM_Constants, only : PRISM_Time_Struct
00025 #ifdef __PSMILE_WITH_IO
00026 Use mpp_mod_oa
00027 Use mpp_domains_mod_oa
00028 Use mpp_io_mod_oa
00029 #endif
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046 Implicit None
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073 Type Component
00074
00075 Integer :: global_comp_id
00076 Integer :: status
00077 Integer :: n_grids
00078 Integer :: comm_user
00079 Integer :: comm
00080 Integer :: act_comm
00081 Integer :: comm_halo
00082 Integer :: rank
00083 Integer :: size
00084
00085 Character(len=max_name) :: comp_name
00086 End Type Component
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098 Type Corner_Block
00099
00100 Integer :: nbr_corners
00101
00102 Integer :: corner_datatype
00103
00104 Integer :: corner_shape (2, ndim_3d)
00105
00106 Integer, Pointer :: pole_array (:)
00107
00108 Type (real_vector) :: corners_real (ndim_3d)
00109 Type (dble_vector) :: corners_dble (ndim_3d)
00110 #if defined ( PRISM_QUAD_TYPE )
00111 Type (quad_vector) :: corners_quad (ndim_3d)
00112 #endif
00113
00114 End Type Corner_Block
00115
00116
00117
00118
00119
00120 Type Coords_Block
00121
00122 Integer :: coords_datatype
00123
00124 Integer :: actual_shape (2, ndim_3d)
00125 Integer :: coords_shape (2, ndim_3d)
00126
00127 Type (real_vector) :: coords_real (ndim_3d)
00128 Type (dble_vector) :: coords_dble (ndim_3d)
00129 #if defined ( PRISM_QUAD_TYPE )
00130 Type (quad_vector) :: coords_quad (ndim_3d)
00131 #endif
00132 End Type Coords_Block
00133
00134
00135
00136
00137
00138
00139 Type Subgrid_Block
00140
00141 Character (len=max_name) :: short_name
00142 Character (len=max_name) :: long_name
00143
00144
00145 Integer :: nbr_subgrids
00146
00147 Integer :: subgrid_datatype
00148
00149 Integer :: subgrid_shape (2, max_dim)
00150
00151 Real, Pointer :: subgrid_real (:)
00152
00153 Double Precision, Pointer :: subgrid_double (:)
00154
00155 #if defined ( PRISM_QUAD_TYPE )
00156 Real (kind=PRISM_QUAD_TYPE), Pointer :: subgrid_quad (:)
00157 #endif
00158 End Type Subgrid_Block
00159
00160
00161
00162
00163
00164
00165 Type Vector_Block
00166
00167 Character (len=max_name) :: short_name
00168 Character (len=max_name) :: long_name
00169
00170 Integer :: array_of_point_ids (3)
00171 End Type Vector_Block
00172
00173
00174
00175
00176
00177
00178 Type Halo_Block
00179
00180 Logical :: halo_local
00181
00182 Integer :: halo_shape(2,ndim_3d)
00183
00184 Type (real_vector) :: halo_real (ndim_3d)
00185 Type (dble_vector) :: halo_dble (ndim_3d)
00186 #if defined ( PRISM_QUAD_TYPE )
00187 Type (quad_vector) :: halo_quad (ndim_3d)
00188 #endif
00189 End Type Halo_Block
00190
00191 Type Halo_info
00192
00193 Integer :: local_rank
00194 Integer :: local_block
00195 Integer :: remote_rank
00196 Integer :: remote_grid_id
00197 Integer :: remote_block
00198 Integer :: halo_size
00199 Integer :: send_range(2,ndim_3d)
00200 Integer :: global_range(2,ndim_3d)
00201
00202 End Type Halo_info
00203
00204
00205
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249
00250
00251
00252
00253
00254
00255
00256
00257
00258
00259
00260
00261
00262
00263
00264
00265
00266 Type Grid
00267
00268 Integer :: global_grid_id
00269 Integer :: status
00270 Integer :: comp_id
00271 Integer :: grid_type
00272 Integer :: grid_shape (2, ndim_3d)
00273 Integer :: grid_structure
00274 Integer :: n_dim
00275 Integer (kind=int64) :: size
00276 Integer (kind=int64) :: global_size(ndim_3d)
00277 Logical :: used_for_coupling
00278 Logical :: used_for_io
00279 Logical :: pole_covered
00280 Integer :: smioc_index
00281 Character(len=max_name) :: grid_name
00282 Type (Corner_Block), Pointer :: corner_pointer
00283
00284 Type (Enddef_mg), Pointer :: mg_infos (:)
00285 Integer :: nlev
00286 Integer :: ijk0 (ndim_3d)
00287
00288 Integer :: periodic(ndim_3d)
00289 Logical :: cyclic(ndim_3d)
00290 Integer :: len_periodic (ndim_3d)
00291
00292 Integer :: nbr_halo_segments
00293 Type (Halo_info), Pointer :: halo (:)
00294
00295
00296
00297 type (reduced_gauss_grid_data):: reduced_gauss_data
00298 Integer :: nbr_latitudes
00299 Integer, Pointer :: nbr_points_per_lat(:)
00300 Integer, Pointer :: partition(:,:)
00301 Integer, Pointer :: extent(:,:)
00302 Type (Corner_Block), Pointer :: gcorner_pointer
00303 Integer, Pointer :: star(:,:)
00304 Integer, Pointer :: face(:,:)
00305 Integer, Pointer :: global_beg(:)
00306 Integer, Pointer :: global_end(:)
00307 Integer, Pointer :: g2l(:,:)
00308 Integer, Pointer :: l2g(:,:)
00309 Integer, Pointer :: g_irange(:,:)
00310
00311 Integer, Pointer :: remote_index(:)
00312 Integer, Pointer :: send_list(:)
00313 Integer, Pointer :: recv_list(:)
00314 Type(integer_vector), Pointer :: get_list(:)
00315 Type(integer_vector), Pointer :: put_list(:)
00316 Type(integer_vector), Pointer :: put_loc_list(:)
00317
00318
00319
00320 Integer :: assoc_grid_id
00321
00322 End Type Grid
00323
00324
00325
00326
00327
00328
00329
00330
00331
00332
00333
00334
00335
00336
00337
00338
00339
00340
00341
00342
00343
00344
00345
00346
00347
00348
00349
00350
00351
00352
00353
00354
00355
00356
00357
00358
00359
00360
00361
00362
00363
00364
00365
00366
00367
00368
00369
00370
00371
00372
00373 Type Method
00374
00375 Character (len=max_name) :: point_name
00376
00377 Integer :: status
00378 Integer :: grid_id
00379 Integer :: previous_method_in_grid
00380 Integer :: next_method_in_grid
00381 Integer :: method_type
00382
00383 Integer :: size
00384 Logical :: used_for_coupling
00385
00386 Integer :: n_send_info_direct
00387 Integer :: n_send_info_coupler
00388 Integer :: n_recv_info_direct
00389 Integer :: n_recv_info_coupler
00390 Integer :: n_send_info_appl
00391
00392 Integer :: n_alloc_send_direct
00393 Integer :: n_alloc_send_coupler
00394 Integer :: n_alloc_recv_direct
00395 Integer :: n_alloc_recv_coupler
00396 Integer :: n_alloc_send_appl
00397
00398 Type (Coords_Block), Pointer :: coords_pointer
00399 Type (Subgrid_Block), Pointer :: subgrid_pointer
00400 Type (Vector_Block), Pointer :: vector_pointer
00401 Type (Halo_Block), Pointer :: halo_pointer (:)
00402
00403 Type (Send_information), Pointer :: send_infos_direct (:)
00404 Type (Send_information), Pointer :: send_infos_coupler (:)
00405 Type (Recv_information), Pointer :: recv_infos_direct (:)
00406 Type (Recv_information), Pointer :: recv_infos_coupler (:)
00407 Type (Send_appl_information), Pointer :: send_infos_appl (:)
00408
00409 Type (real_vector) :: gauss2_real(2)
00410 Type (dble_vector) :: gauss2_dble(2)
00411 #if defined ( PRISM_QUAD_TYPE )
00412 Type (quad_vector) :: gauss2_quad(2)
00413 #endif
00414
00415 End Type Method
00416
00417
00418
00419
00420
00421
00422
00423
00424
00425 Type Mask
00426
00427 Integer :: status
00428 Integer :: grid_id
00429 Integer :: mask_type
00430 Integer :: mask_shape (2, ndim_3d)
00431 Logical, Pointer :: mask_array (:)
00432
00433 End Type Mask
00434
00435
00436 #ifdef __PSMILE_WITH_IO
00437
00438
00439
00440 Integer,Parameter :: PSMILE_IO_MAX_NO_NAMES=100
00441
00442
00443
00444
00445 Integer,Parameter :: PSMILE_IO_MAX_UNIT=299
00446
00447
00448
00449 Integer,Parameter :: PSMILE_IO_MAX_FILE_SIZE=1024*1024
00450
00451
00452
00453 Integer,Parameter :: PSMILE_IO_MAX_RESERVED_UNITS=5
00454
00455
00456
00457
00458 Integer ::
00459 IO_res_units(PSMILE_IO_MAX_RESERVED_UNITS)=(/100,101,102,103,104/)
00460
00461
00462
00463 Integer,Parameter :: PSMILE_IO_stackmaxd=512*512*64
00464
00465
00466
00467 Integer,Parameter :: PSMILE_IO_stackmax=512*512*64
00468
00469
00470
00471
00472 Integer, Parameter :: PSMILe_IO_GET_FILENAME = 1000
00473 Integer, Parameter :: PSMILe_IO_GET_FILEUNIT = 1001
00474 Integer, Parameter :: PSMILe_IO_GET_ACTION = 1002
00475 Integer, Parameter :: PSMILe_IO_GET_FORMAT = 1003
00476 Integer, Parameter :: PSMILe_IO_GET_FILESET = 1004
00477 Integer, Parameter :: PSMILe_IO_GET_THREADING = 1005
00478 Integer, Parameter :: PSMILe_IO_GET_CFLNGNAME = 1006
00479 Integer, Parameter :: PSMILe_IO_GET_CFSHRTNAME = 1007
00480 Integer, Parameter :: PSMILe_IO_GET_CFUNITS = 1008
00481 Integer, Parameter :: PSMILe_IO_GET_CFPOSITIVE = 1009
00482 Integer, Parameter :: PSMILe_IO_GET_SENSE = 1010
00483 Integer, Parameter :: PSMILe_IO_GET_PACK = 1011
00484 Integer, Parameter :: PSMILe_IO_GET_TYPE_SPEC = 1012
00485 Integer, Parameter :: PSMILe_IO_GET_SCALE = 1013
00486 Integer, Parameter :: PSMILe_IO_GET_ADD = 1014
00487 Integer, Parameter :: PSMILe_IO_GET_VALID_MIN = 1015
00488 Integer, Parameter :: PSMILe_IO_GET_VALID_MAX = 1016
00489 Integer, Parameter :: PSMILe_IO_GET_FILL = 1017
00490 Integer, Parameter :: PSMILe_IO_GET_MISSING = 1018
00491 Integer, Parameter :: PSMILe_IO_GET_NENTRIES = 1019
00492 Integer, Parameter :: PSMILe_IO_GET_MENTRIES = 1020
00493 Integer, Parameter :: PSMILe_IO_GET_LAGMODE = 1021
00494 Integer, Parameter :: PSMILe_IO_GET_LAGWEIGHT = 1022
00495 Integer, Parameter :: PSMILe_IO_GET_HEIGHTUNITS = 1023
00496 Integer, Parameter :: PSMILe_IO_GET_HEIGHTFORML = 1024
00497 Integer, Parameter :: PSMILe_IO_GET_HEIGHTSTDN = 1025
00498 Integer, Parameter :: PSMILe_IO_GET_SUFFIX = 1026
00499 Integer, Parameter :: PSMILe_IO_GET_CFIONAME = 1027
00500 Integer, Parameter :: PSMILe_IO_GET_VCMPNAMES = 1028
00501 Integer, Parameter :: PSMILe_IO_GET_BNDLNAMES = 1029
00502 Integer, Parameter :: PSMILe_IO_GET_LONUNITS = 1030
00503 Integer, Parameter :: PSMILe_IO_GET_LATUNITS = 1031
00504
00505
00506
00507 Type IO_App_info
00508 Integer::comm
00509 End Type IO_App_info
00510
00511 Type(IO_App_info)::IO_Apps_infos
00512
00513
00514
00515 Type IO_Comp_info
00516 Integer:: comm
00517 Integer,Pointer::pelist(:)
00518 End Type IO_Comp_info
00519
00520 Type(IO_Comp_info),Allocatable::IO_Comps_infos(:)
00521
00522
00523
00524
00525 Type IO_CF_maps
00526 Character(len=max_name) ::maps(PSMILE_IO_MAX_NO_NAMES)
00527 Integer cf_tlb(PSMILE_IO_MAX_NO_NAMES)
00528 End Type IO_CF_maps
00529
00530 Type(IO_CF_maps),Target :: cf_maps
00531
00532
00533
00534 Type IO_CF_names
00535 Character(len=max_name) :: names(PSMILE_IO_MAX_NO_NAMES)
00536 Integer cf_tlb(PSMILE_IO_MAX_NO_NAMES)
00537 End Type IO_CF_names
00538
00539 Type(IO_CF_names),Target :: cf_names
00540
00541
00542
00543 Type IO_Cache
00544 Double Precision,Dimension(:),Pointer::time_stamps
00545 Double Precision :: ju_sec_last,ju_day_last
00546 , time_last
00547 Double Precision,Dimension(:),Pointer::data_dble
00548 Real ,Dimension(:),Pointer::data_real
00549 Integer ,Dimension(:),Pointer::data_int
00550 Integer :: ilast
00551 Logical :: llast
00552 End Type IO_Cache
00553
00554 Type(IO_Cache), Allocatable,Target::iocache(:)
00555
00556
00557
00558 Type IO_mpp_io
00559
00560
00561
00562
00563 Type(domain2D),Pointer,Dimension(:)::domain
00564 Type(domain1D),Pointer,Dimension(:)::xdom,ydom,zdom
00565
00566
00567
00568
00569 Type(fieldtype),Pointer,Dimension(:) :: ig_vars,field,latij,lonij
00570 ,vertij,maskij,crnij,subaij
00571 Type(axistype),Pointer,Dimension(:)::x_axis,y_axis,z_axis,t_axis
00572 ,b_axis,blk_axis,anaxis,crnaxis
00573 Type(atttype),Pointer,Dimension(:)::atts
00574 Integer :: findex(3)
00575
00576 End Type IO_mpp_io
00577 #endif
00578
00579
00580
00581
00582
00583 Type IO_Data
00584 Character (len=max_name) :: filename
00585 Integer :: taskid
00586 Integer :: file_unit
00587 Integer :: isuffix
00588 Integer :: action
00589 Integer :: Format
00590 Integer :: threading
00591 Integer :: fileset
00592 Integer :: status
00593 Logical :: done,opened
00594 Integer :: block_id
00595 Integer,Pointer :: related_ids(:)
00596 Integer :: old_filesize
00597 Integer :: current_filesize
00598 Double Precision :: ju_start_day,ju_start_sec
00599 Double Precision,Pointer :: fp_dble(:)
00600 Real,Pointer :: fp_real(:)
00601 Integer,Pointer :: fp_int(:)
00602
00603 Character (len=max_name) :: cfioname
00604 Character (len=max_name) :: standard_name
00605 Character (len=max_name) :: long_name
00606 Character (len=max_name), Pointer :: labels(:)
00607 Character (len=max_name), Pointer :: vcmp_names(:)
00608 Character (len=max_name) :: units
00609 Character (len=max_name) :: lon_unit
00610 Character (len=max_name) :: lat_unit
00611 Character (len=max_name) :: positive
00612 Character (len=max_name) :: height_unit
00613 Character (len=max_name) :: height_formular
00614 Character (len=max_name) :: height_stdname
00615 Integer :: sense
00616 Integer :: pack_mode
00617 Integer :: type_spec
00618 Integer :: ilag_mode
00619 Double Precision :: scale,add
00620 Double Precision :: valid_range(2),valid_min,valid_max
00621 Double Precision :: fill_value,missing_value
00622 Double Precision :: time_stamp
00623 Double Precision :: weight
00624
00625 Integer :: cf_name_tlb_entry(8)
00626 Integer :: cf_map_tlb_entry(8)
00627
00628 #ifdef __PSMILE_WITH_IO
00629 Type(IO_CF_names),Pointer :: p_cf_names
00630 Type(IO_CF_maps),Pointer :: p_cf_maps
00631 Type(IO_cache),Pointer :: p_cache
00632 Type(IO_mpp_io),Pointer :: p_mpp_io
00633 #endif
00634 End Type IO_Data
00635
00636
00637
00638
00639
00640
00641
00642
00643
00644 Type PSMILe_Time_Struct
00645 Double Precision :: days
00646 Double Precision :: secs
00647 End Type PSMILe_Time_struct
00648
00649
00650
00651
00652
00653
00654
00655
00656
00657
00658
00659
00660
00661
00662
00663
00664
00665
00666
00667
00668
00669
00670
00671
00672
00673
00674
00675
00676
00677
00678
00679 Type Interp_type
00680 Integer :: interp_type
00681 Integer, Dimension(3) :: interp_meth
00682 Integer, Dimension(3) :: arg1
00683 Integer, Dimension(3) :: arg2
00684 Integer, Dimension(3) :: arg3
00685 Integer, Dimension(3) :: arg4
00686 Integer, Dimension(3) :: arg5
00687 Integer, Dimension(3) :: arg6
00688 Integer, Dimension(3) :: arg7
00689 Double Precision :: arg8
00690 Character(len=max_name) :: arg9
00691 Type (PSMILe_file_struct) :: arg10
00692 End Type Interp_type
00693
00694 Type Combi_type
00695 Character(len=max_name) :: combi_name
00696 Character(len=max_name) :: ext_mask_name
00697
00698 Double Precision :: combi_param
00699 Double Precision :: scalar
00700 Integer :: location
00701 Integer :: operand
00702 Integer :: mask_type
00703 Integer :: combi_meth
00704 End Type Combi_type
00705
00706 Type ch_ptr
00707 Integer :: origin_type
00708 Integer :: remote_transi_id
00709 Integer :: global_transi_id
00710 Integer :: remote_comp_id
00711
00712 Integer :: assoc_var_id
00713 Integer :: userdef_id
00714
00715 Type (Interp_type) :: interp
00716 Type (Combi_type) :: combi
00717 End Type ch_ptr
00718
00719 Type Taskin_type
00720 Double Precision :: start_day
00721 Double Precision :: end_day
00722 Double Precision :: start_sec
00723 Double Precision :: end_sec
00724
00725 Integer :: nbr_inchannels
00726 Integer :: nsum
00727 Integer :: Time_length
00728 Integer, Pointer :: buffer_int(:)
00729 Real, Pointer :: buffer_real(:)
00730 Double Precision, Pointer :: buffer_dble(:)
00731 #if defined ( PRISM_QUAD_TYPE )
00732 Real (kind=PRISM_QUAD_TYPE), Pointer :: buffer_quad(:)
00733 #endif
00734 Type (PRISM_Time_Struct) :: delta_time
00735 Type (PSMILe_Time_Struct) :: Judate_Start
00736 Type (PSMILe_Time_Struct) :: Judate_Stop
00737 Type (PSMILe_Time_Struct) :: Judate_Event
00738 Type (PSMILe_Time_Struct) :: Judate_Lbnd
00739 Type (PSMILe_Time_Struct) :: Judate_Ubnd
00740 Type (PSMILe_Time_Struct), Pointer :: Judate_Axis(:)
00741 Type (ch_ptr), Pointer :: In_channel(:)
00742
00743 Integer :: n_recv_direct
00744 Integer :: n_recv_coupler
00745
00746 Integer :: n_alloc_recv_direct
00747 Integer :: n_alloc_recv_coupler
00748
00749 Type (Recv_field_information), Pointer :: recv_direct (:)
00750 Type (Recv_field_information), Pointer :: recv_coupler (:)
00751
00752 End Type Taskin_type
00753
00754
00755
00756 Type Taskout_type
00757 Integer :: origin_type
00758 Integer :: remote_transi_id
00759 Integer :: global_transi_id
00760 Integer :: remote_comp_id
00761
00762
00763 Integer :: assoc_var_id
00764 Integer :: userdef_id
00765
00766 Double Precision :: start_day
00767 Double Precision :: end_day
00768 Double Precision :: start_sec
00769 Double Precision :: end_sec
00770 Integer :: nsum
00771 Integer :: Time_length
00772 Integer, Pointer :: buffer_int(:)
00773 Real, Pointer :: buffer_real(:)
00774 Double Precision, Pointer :: buffer_dble(:)
00775 #if defined ( PRISM_QUAD_TYPE )
00776 Real (kind=PRISM_QUAD_TYPE), Pointer :: buffer_quad(:)
00777 #endif
00778 Type (PRISM_Time_Struct) :: delta_time
00779 Type (PSMILe_Time_Struct) :: Judate_Start
00780 Type (PSMILe_Time_Struct) :: Judate_Stop
00781 Type (PSMILe_Time_Struct) :: Judate_Event
00782 Type (PSMILe_Time_Struct) :: Judate_Lbnd
00783 Type (PSMILe_Time_Struct) :: Judate_Ubnd
00784 Type (PSMILe_Time_Struct), Pointer :: Judate_Axis(:)
00785 Type (Interp_type) :: interp
00786 Type (Combi_type) :: combi
00787
00788 Integer :: n_send_direct
00789 Integer :: n_send_coupler
00790 Integer :: n_send_appl
00791
00792 Integer :: n_alloc_send_direct
00793 Integer :: n_alloc_send_coupler
00794 Integer :: n_alloc_send_appl
00795
00796 Type (Send_field_information), Pointer :: send_direct (:)
00797 Type (Send_field_information), Pointer :: send_coupler (:)
00798 Type (Send_field_information), Pointer :: send_appl (:)
00799
00800 End Type Taskout_type
00801
00802
00803
00804
00805
00806 Type memo
00807 Integer :: i
00808 Integer :: j
00809 Integer :: dir
00810 Logical :: overlap
00811 End Type memo
00812
00813 Type point_real
00814 Real :: x
00815 Real :: y
00816 End Type point_real
00817
00818 Type point_dble
00819 Double Precision :: x
00820 Double Precision :: y
00821 End Type point_dble
00822
00823 Type line_dble
00824 Type(point_dble) :: p1
00825 Type(point_dble) :: p2
00826 End Type line_dble
00827
00828 Type line_real
00829 Type(point_real) :: p1
00830 Type(point_real) :: p2
00831 End Type line_real
00832
00833
00834
00835
00836
00837
00838
00839
00840
00841
00842
00843
00844
00845
00846
00847
00848
00849
00850
00851
00852
00853
00854
00855
00856
00857
00858
00859
00860
00861
00862
00863
00864 Type GridFunction
00865
00866 Integer :: global_var_id
00867 Integer :: smioc_loc
00868 Integer :: status
00869 Integer :: comp_id
00870 Integer :: method_id
00871 Integer :: mask_id
00872 Integer :: var_shape (2, max_dim)
00873 Integer :: transi_type
00874 Integer :: size
00875 Integer :: dataType
00876
00877 Logical :: used_for_coupling
00878 Logical :: used_for_io
00879
00880 Character (len=max_name) :: local_name
00881
00882 Type (Taskout_type), Pointer :: Taskout(:)
00883 Type (Taskin_type) :: Taskin
00884
00885 Type (IO_Data), Pointer :: io_infos
00886 Type (IO_Data), Pointer :: io_chan_infos(:)
00887 Integer, Pointer :: io_task_lookup(:)
00888
00889 End Type GridFunction
00890
00891
00892
00893
00894
00895 Type TimeStep
00896
00897 Integer n_send
00898 Integer n_recv
00899 Integer n_write
00900 Integer n_read
00901
00902 Integer, Dimension (:), Pointer :: ids_send
00903 Integer, Dimension (:), Pointer :: ids_recv
00904 Integer, Dimension (:), Pointer :: ids_write
00905 Integer, Dimension (:), Pointer :: ids_read
00906
00907 End Type TimeStep
00908
00909
00910
00911
00912
00913 Type GridConnection
00914
00915 Integer :: status
00916
00917 Integer :: tgt_comp_id
00918 Integer :: tgt_grid_id
00919 Integer :: tgt_method_id
00920 Integer :: tgt_mask_id
00921
00922 Integer :: src_comp_id
00923 Integer :: src_grid_id
00924 Integer :: src_method_id
00925 Integer :: src_mask_id
00926
00927 Integer :: trans_out
00928 Integer :: trans_in
00929
00930 Integer :: interpolation(ndim_3d)
00931
00932 Integer :: epio_id
00933 Integer :: trs_rank
00934
00935 Integer :: tgt_epio_pe
00936
00937 End Type GridConnection
00938
00939
00940
00941
00942
00943
00944
00945
00946
00947
00948
00949
00950
00951
00952
00953
00954
00955
00956
00957
00958
00959
00960
00961
00962
00963
00964
00965
00966
00967
00968
00969
00970
00971
00972
00973
00974
00975
00976
00977 Type Userdef
00978
00979 Integer :: var_id
00980 Integer :: igl_grid_id
00981 Integer :: status
00982 Integer :: ig_transi_side
00983 Integer :: ig_nb_links
00984 Integer :: ig_celldim
00985 Integer :: ig_nb_ppp
00986 Integer :: ig_nbr_fields
00987
00988
00989
00990 Integer, pointer :: iga_igl(:,:)
00991 Real (PSMILe_float_kind), pointer :: dga_wght(:)
00992
00993 REAL, pointer :: real_gridless(:,:,:,:)
00994 DOUBLE PRECISION, pointer :: dble_gridless(:,:,:,:)
00995
00996 End Type Userdef
00997
00998
00999
01000
01001
01002
01003
01004
01005
01006 Type PSMILe_Link
01007
01008 Integer :: cell_id(3)
01009 Real (PSMILe_float_kind) :: weight
01010
01011 End Type PSMILe_Link
01012
01013
01014
01015
01016
01017 Save
01018
01019
01020
01021
01022
01023
01024
01025
01026
01027
01028
01029
01030
01031
01032
01033
01034
01035
01036
01037
01038
01039
01040
01041
01042
01043 Integer, Allocatable :: PRISM_applProc(:)
01044 Integer, Allocatable :: PRISM_noCompsPerAppl(:)
01045
01046 Integer, Allocatable :: PRISM_compRankSets(:)
01047 Integer, Allocatable :: PRISM_rankSets(:,:)
01048
01049 Character(len=max_name), Allocatable :: PRISM_applName(:)
01050 Character(len=max_name), Allocatable :: PRISM_compName(:)
01051
01052 Type (Enddef_comp), Allocatable, Target :: all_comp_infos(:)
01053 Type (Enddef_comp), Allocatable, Target :: comp_infos(:)
01054 Type (Enddef_action) :: paction
01055 Integer, Allocatable :: field2grid (:)
01056
01057
01058
01059 Type (Component), Pointer :: Comps(:)
01060 Type (Grid), Pointer :: Grids(:)
01061 Type (Method), Pointer :: Methods(:)
01062 Type (Mask), Pointer :: Masks(:)
01063 Type (GridFunction), Pointer :: Fields(:)
01064 Type (Userdef), Pointer :: Userdefs(:)
01065
01066 Type (TimeStep), Pointer :: Timesteps_info(:)
01067 Double Precision, Pointer :: Timesteps(:)
01068
01069 Integer, Pointer :: neighcells_3d(:,:,:)
01070 Type (GridConnection), Pointer :: cpl_list(:)
01071
01072
01073
01074
01075
01076 Interface
01077
01078 subroutine psmile_def_grid(grid_id, grid_name, comp_id, &
01079 grid_valid_shape, grid_type, ierror )
01080
01081 character(len=*), intent(in) :: grid_name
01082 integer, intent (in) :: comp_id
01083 integer, intent (in) :: grid_valid_shape (1:2,*)
01084 integer, intent (in) :: grid_type
01085 integer, intent (out) :: grid_id
01086 integer, intent (out) :: ierror
01087 end subroutine psmile_def_grid
01088
01089 subroutine psmile_def_partition (grid_id, nbr_blocks, &
01090 partition_array, extent_array, ierror )
01091 integer, intent (in) :: grid_id
01092 integer, intent (in) :: nbr_blocks
01093 integer, intent (in) :: partition_array(1:nbr_blocks,*)
01094 integer, intent (in) :: extent_array(1:nbr_blocks,*)
01095 integer, intent (out) :: ierror
01096 end subroutine psmile_def_partition
01097
01098 subroutine psmile_reducedgrid_map (grid_id, nbr_latitudes, &
01099 nbr_points_per_lat, ierror)
01100 integer, intent (in) :: grid_id
01101 integer, intent (in) :: nbr_latitudes
01102 integer, intent (in) :: nbr_points_per_lat(nbr_latitudes)
01103 integer, intent (out) :: ierror
01104 end subroutine psmile_reducedgrid_map
01105
01106 subroutine psmile_set_corners_3d_double(grid_id, nbr_corners, corners_actual_shape, &
01107 corners_1st_array, corners_2nd_array, corners_3rd_array, ierror)
01108
01109 integer, intent (in) :: grid_id
01110 integer, intent (in) :: nbr_corners
01111 double precision, intent (in) :: corners_1st_array (*)
01112 double precision, intent (in) :: corners_2nd_array (*)
01113 double precision, intent (in) :: corners_3rd_array (*)
01114 integer, intent (in) :: corners_actual_shape (1:2, *)
01115 integer, intent(out) :: ierror
01116 end subroutine psmile_set_corners_3d_double
01117
01118 subroutine psmile_set_corners_3d_real(grid_id, nbr_corners, corners_actual_shape, &
01119 corners_1st_array, corners_2nd_array, corners_3rd_array, ierror)
01120
01121 integer, intent (in) :: grid_id
01122 integer, intent (in) :: nbr_corners
01123 real, intent (in) :: corners_1st_array (*)
01124 real, intent (in) :: corners_2nd_array (*)
01125 real, intent (in) :: corners_3rd_array (*)
01126 integer, intent (in) :: corners_actual_shape (1:2, *)
01127 integer, intent(out) :: ierror
01128 end subroutine psmile_set_corners_3d_real
01129
01130 subroutine psmile_set_mask (mask_id, grid_id, mask_actual_shape, &
01131 mask_array, new_mask, ierror)
01132 integer, intent(inout) :: mask_id
01133 integer, intent(in) :: grid_id
01134 integer, intent(in) :: mask_actual_shape(2, *)
01135 logical, intent(in) :: mask_array (*)
01136 logical, intent(in) :: new_mask
01137 integer, intent(out) :: ierror
01138 end subroutine psmile_set_mask
01139
01140 subroutine psmile_set_points_gridless (point_id, point_name, grid_id, &
01141 new_points, ierror)
01142 character (len=*), intent(in) :: point_name
01143 integer, intent(in) :: grid_id
01144 integer, intent(inout) :: point_id
01145 logical, intent(in) :: new_points
01146 integer, intent(out) :: ierror
01147 end subroutine psmile_set_points_gridless
01148
01149 subroutine psmile_set_points_3d_double (method_id, point_name, grid_id, points_actual_shape, &
01150 points_1st_array, points_2nd_array, points_3rd_array, new_points, ierror)
01151 character (len=*), intent(in):: point_name
01152 integer, intent(in) :: grid_id
01153 integer, intent(inout) :: method_id
01154 double precision, intent(in) :: points_1st_array(*)
01155 double precision, intent(in) :: points_2nd_array(*)
01156 double precision, intent(in) :: points_3rd_array(*)
01157 integer, intent(in) :: points_actual_shape (2, *)
01158 logical, intent(in) :: new_points
01159 integer, intent(out) :: ierror
01160 end subroutine psmile_set_points_3d_double
01161
01162 subroutine psmile_set_points_3d_real (method_id, point_name, grid_id, points_actual_shape, &
01163 points_1st_array, points_2nd_array, points_3rd_array, new_points, ierror)
01164 character (len=*), intent(in) :: point_name
01165 integer, intent(in) :: grid_id
01166 integer, intent(inout) :: method_id
01167 real, intent(in) :: points_1st_array(*)
01168 real, intent(in) :: points_2nd_array(*)
01169 real, intent(in) :: points_3rd_array(*)
01170 integer, intent(in) :: points_actual_shape (2, *)
01171 logical, intent(in) :: new_points
01172 integer, intent(out) :: ierror
01173 end subroutine psmile_set_points_3d_real
01174
01175 subroutine psmile_def_var (var_id, var_name, grid_id, point_id, mask_id, &
01176 var_nodims, var_actual_shape, var_type, ierror)
01177 character (len=*), intent (in) :: var_name
01178 integer, intent (in) :: mask_id
01179 integer, intent (in) :: point_id
01180 integer, intent (in) :: grid_id
01181 integer, intent (in) :: var_nodims(2)
01182 integer, intent (in) :: var_actual_shape(1:2,1:var_nodims(1))
01183 integer, intent (in) :: var_type
01184 integer, intent (out) :: var_id
01185 integer, intent (out) :: ierror
01186 end subroutine psmile_def_var
01187
01188
01189
01190 subroutine psmile_flushstd ()
01191 End Subroutine
01192
01193 subroutine psmile_redirstdout (charbuf, lenstr, parallel, my_pe, npes, ierror)
01194 #ifdef NAG_COMPILER
01195 Character(len=*), Intent(In) :: charbuf
01196 #else
01197 Integer, Intent (In) :: charbuf (*)
01198 #endif
01199 Integer, Intent (In) :: lenstr, parallel, my_pe, npes
01200 Integer, Intent (Out) :: ierror
01201 End Subroutine
01202
01203
01204
01205 subroutine psmile_assert (file, line, msg)
01206 Character (len=*), Intent (In) :: file, msg
01207 Integer, Intent (In) :: line
01208 End Subroutine
01209
01210 function psmile_transform_index_1d_to_3d (index_1d, array_shape)
01211 use psmile_common, only : ndim_3d
01212 integer, intent(in) :: index_1d
01213 integer, intent(in) :: array_shape (2, ndim_3d)
01214 integer :: psmile_transform_index_1d_to_3d (ndim_3d)
01215 end function psmile_transform_index_1d_to_3d
01216
01217 function psmile_transform_index_3d_to_1d (index_3d, array_shape)
01218 use psmile_common, only : ndim_3d
01219 integer, intent(in) :: index_3d(ndim_3d)
01220 integer, intent(in) :: array_shape (2, ndim_3d)
01221 integer :: psmile_transform_index_3d_to_1d
01222 end function psmile_transform_index_3d_to_1d
01223
01224 subroutine psmile_check_action ( var_id, task_id, precise, &
01225 julian_day, julian_dayb, &
01226 julian_sec, julian_secb, &
01227 action )
01228 Integer, Intent (In) :: var_id
01229 Integer, Intent (In) :: task_id
01230 Double Precision, Intent (In) :: julian_day, julian_dayb(2)
01231 Double Precision, Intent (In) :: julian_sec, julian_secb(2)
01232 Logical, Intent (In) :: precise
01233 Logical, Intent (Out) :: action(3)
01234 End Subroutine
01235
01236
01237
01238 subroutine psmile_error (ierror, string, ierrp, nerrp, file, line)
01239 Character (len=*), Intent (In) :: file, string
01240 Integer, Intent (In) :: line, ierror, nerrp
01241 Integer, Intent (In) :: ierrp (nerrp)
01242 End Subroutine
01243
01244 subroutine psmile_warning (ierror, string, ierrp, nerrp, file, line)
01245 Character (len=*), Intent (In) :: file, string
01246 Integer, Intent (In) :: line, ierror, nerrp
01247 Integer, Intent (In) :: ierrp (nerrp)
01248 End Subroutine
01249
01250
01251
01252 subroutine psmile_deallocate (ierror)
01253 Integer, Intent (Out) :: ierror
01254 End Subroutine
01255
01256 subroutine psmile_deallocate_methods (ierror)
01257 Integer, Intent (Out) :: ierror
01258 end subroutine
01259
01260 subroutine psmile_deallocate_fields (ierror)
01261 Integer, Intent (Out) :: ierror
01262 end subroutine
01263
01264 subroutine psmile_deallocate_masks (ierror)
01265 Integer, Intent (Out) :: ierror
01266 end subroutine
01267
01268 subroutine psmile_find_corr_field (comp_info, search, &
01269 var_id, ierror)
01270 Use PSMILe_common
01271
01272 Type (Enddef_comp), Intent (In) :: comp_info
01273 Type (Enddef_search), Intent (In) :: search
01274 Integer, Intent (Out) :: var_id
01275 Integer, Intent (Out) :: ierror
01276 End Subroutine
01277
01278 subroutine psmile_free_comp_handle (comp_id, ierror)
01279 Integer, Intent (In) :: comp_id
01280 Integer, Intent (Out) :: ierror
01281 End Subroutine
01282
01283 subroutine psmile_free_field_handle (field_id, ierror)
01284 Integer, Intent (In) :: field_id
01285 Integer, Intent (Out) :: ierror
01286 End Subroutine
01287
01288 subroutine psmile_free_grid_handle (grid_id, ierror)
01289 Integer, Intent (In) :: grid_id
01290 Integer, Intent (Out) :: ierror
01291 End Subroutine
01292
01293 subroutine psmile_free_mask_handle (mask_id, grid_id, ierror)
01294 Integer, Intent (In) :: mask_id
01295 Integer, Intent (Out) :: grid_id
01296 Integer, Intent (Out) :: ierror
01297 End Subroutine
01298
01299 subroutine psmile_free_method_handle (method_id, ierror)
01300 Integer, Intent (In) :: method_id
01301 Integer, Intent (Out) :: ierror
01302 End Subroutine
01303
01304 subroutine psmile_get_comp_handle (comp_id, comp_name, ierror)
01305 Character (len=*), Intent (In) :: comp_name
01306 Integer, Intent (Out) :: comp_id, ierror
01307 End Subroutine
01308
01309 subroutine psmile_get_exch_index (var_id, task_id, request, index, ierror)
01310 Integer, Intent (In) :: var_id, task_id, request
01311 Integer, Intent (Out) :: ierror, index
01312 End Subroutine
01313
01314 subroutine psmile_get_info_index (method_id, request, index, ierror)
01315 Integer, Intent (In) :: method_id, request
01316 Integer, Intent (Out) :: ierror, index
01317 End Subroutine
01318
01319 subroutine psmile_get_epio_handle ( comp_id, grid_id, method_id, &
01320 mask_id, interpolation, &
01321 msg_intersections, trans_out, &
01322 trans_in, tgt_epio_pe, cpl_id, &
01323 epio_id, trs_rank, ierror)
01324 Use PSMILe_common
01325 Integer, Intent (In) :: comp_id
01326 Integer, Intent (In) :: grid_id
01327 Integer, Intent (In) :: method_id
01328 Integer, Intent (In) :: mask_id
01329 Integer, Intent (In) :: interpolation(ndim_3d)
01330 Type (enddef_msg_intersections), Intent (In) :: msg_intersections
01331 Integer, Intent (In) :: trans_out
01332 Integer, Intent (In) :: trans_in
01333 Integer, Intent (In) :: tgt_epio_pe
01334 Integer, Intent (Out) :: cpl_id
01335 Integer, Intent (Out) :: epio_id
01336 Integer, Intent (Out) :: trs_rank
01337 Integer, Intent (Out) :: ierror
01338 End Subroutine
01339
01340 subroutine psmile_get_field_handle (field_id, ierror)
01341 Integer, Intent (Out) :: field_id, ierror
01342 End Subroutine
01343
01344 subroutine psmile_get_grid_handle (grid_id, ierror)
01345 Integer, Intent (Out) :: grid_id, ierror
01346 End Subroutine
01347
01348 Subroutine PSMILe_Get_userdef_handle (userdef_id, ierror)
01349 Integer, Intent (Out) :: userdef_id, ierror
01350 End Subroutine
01351
01352 subroutine psmile_get_halo_indices ( comp_id, grid_id_list, ierror)
01353 Use PSMILe_common
01354 Integer, Intent (In) :: comp_id
01355 Integer, Intent (In) :: grid_id_list(Number_of_Grids_allocated)
01356 Integer, Intent (Out) :: ierror
01357 End Subroutine
01358
01359 subroutine psmile_get_halo_points (comp_id, ierror)
01360 Integer, Intent (In) :: comp_id
01361 Integer, Intent (Out) :: ierror
01362 End Subroutine
01363
01364 subroutine psmile_get_mask_handle (mask_id, ierror)
01365 Integer, Intent (Out) :: mask_id, ierror
01366 End Subroutine
01367
01368 subroutine psmile_get_method_handle (grid_id, method_id, ierror)
01369 Integer, Intent (In) :: grid_id
01370 Integer, Intent (Out) :: method_id, ierror
01371 End Subroutine
01372
01373 subroutine psmile_get_next_field (comp_info, search, field_list, n_vars, &
01374 n_vars_ret, var_id, ierror)
01375 Use PSMILe_common
01376
01377 Type (Enddef_comp), Intent (In) :: comp_info
01378 Type (Enddef_search), Intent (InOut) :: search
01379 Integer, Intent (In) :: n_vars
01380 Integer, Intent (In) :: field_list (nd_field_list, n_vars)
01381 Integer, Intent (InOut) :: n_vars_ret
01382 Integer, Intent (Out) :: ierror, var_id
01383 End Subroutine
01384
01385 subroutine psmile_print_comp_info (cinfos, n_comps, string)
01386 Use PSMILe_common
01387
01388 Integer, Intent (In) :: n_comps
01389 Type (enddef_comp), Intent (In) :: cinfos (n_comps)
01390 Character(len=*), Intent (In) :: string
01391 End Subroutine
01392
01393 subroutine psmile_print_field_info (field_id)
01394 Integer, Intent (In) :: field_id
01395 End Subroutine
01396
01397 subroutine psmile_print_grid_info (grid_id)
01398 Integer, Intent (In) :: grid_id
01399 End Subroutine
01400
01401 subroutine psmile_print_method_info (method_id)
01402 Integer, Intent (In) :: method_id
01403 End Subroutine
01404
01405 subroutine psmile_print_send_info (method_id, incloc, message)
01406 Integer, Intent (In) :: method_id, incloc
01407 Character (len=*), Intent (In) :: message
01408 End Subroutine
01409
01410 subroutine psmile_store_send_info (var_id, id_trans_out, dir_index, cpl_index, &
01411 appl_index, ierror)
01412 Integer, Intent (In) :: var_id, id_trans_out
01413 Integer, Intent (In) :: dir_index, cpl_index, appl_index
01414 Integer, Intent (Out) :: ierror
01415 End Subroutine
01416
01417
01418
01419 subroutine psmile_init_datatypes (ierror)
01420 Integer, Intent (Out) :: ierror
01421 End Subroutine
01422
01423 subroutine psmile_init_mpi2 (intercomm, ierror)
01424 Integer, Intent (InOut) :: intercomm
01425 Integer, Intent (Out) :: ierror
01426 End Subroutine
01427
01428 subroutine psmile_init_mpi1 (ierror)
01429 Integer, Intent (Out) :: ierror
01430 End Subroutine
01431
01432 subroutine psmile_def_datatypes (ierror)
01433 Integer, Intent (Out) :: ierror
01434 End Subroutine
01435
01436 subroutine psmile_def_mpi_comm (ierror)
01437 Integer, Intent (Out) :: ierror
01438 End Subroutine
01439
01440 subroutine psmile_def_mpi_compcomm (ierror)
01441 Integer, Intent (Out) :: ierror
01442 End Subroutine
01443
01444 subroutine psmile_spawn_child_appl (intracomm, intercomm, ierror)
01445 Integer, Intent (In) :: intracomm
01446 Integer, Intent (Out) :: intercomm
01447 Integer, Intent (Out) :: ierror
01448 End Subroutine
01449
01450
01451
01452 subroutine psmile_control_grids (ierror)
01453 Integer, Intent (Out) :: ierror
01454 End Subroutine
01455
01456
01457
01458 subroutine psmile_get_true_mask_entries (mask_array, mask_shape, &
01459 inter, n_true, ierror)
01460 Use PSMILe_common
01461 Integer, Intent (In) :: mask_shape (2, ndim_3d)
01462 Logical, Intent (In) :: mask_array (
01463 mask_shape(1,1):mask_shape(2,1),
01464 mask_shape(1,2):mask_shape(2,2),
01465 mask_shape(1,3):mask_shape(2,3))
01466 Integer, Intent (In) :: inter (2, ndim_3d)
01467 Integer, Intent (Out) :: n_true, ierror
01468 End Subroutine
01469
01470 subroutine psmile_is_mask_defined (mask_array, mask_shape, &
01471 inter, nparts, defined, ierror)
01472 Use PSMILe_common
01473 Integer, Intent (In) :: mask_shape (2, ndim_3d)
01474 Logical, Intent (In) :: mask_array (
01475 mask_shape(1,1):mask_shape(2,1),
01476 mask_shape(1,2):mask_shape(2,2),
01477 mask_shape(1,3):mask_shape(2,3))
01478 Integer, Intent (In) :: nparts
01479 Integer, Intent (In) :: inter (2, ndim_3d, nparts)
01480 Integer, Intent (Out) :: defined, ierror
01481 End Subroutine
01482
01483 subroutine psmile_do_masks_match (mask1_array, mask1_shape, &
01484 mask2_array, mask2_shape, &
01485 inter, nparts, match, ierror)
01486 Use PSMILe_common
01487 Integer, Intent (In) :: mask1_shape (2, ndim_3d)
01488 Logical, Intent (In) :: mask1_array (
01489 mask1_shape(1,1):mask1_shape(2,1),
01490 mask1_shape(1,2):mask1_shape(2,2),
01491 mask1_shape(1,3):mask1_shape(2,3))
01492 Integer, Intent (In) :: mask2_shape (2, ndim_3d)
01493 Logical, Intent (In) :: mask2_array (
01494 mask2_shape(1,1):mask2_shape(2,1),
01495 mask2_shape(1,2):mask2_shape(2,2),
01496 mask2_shape(1,3):mask2_shape(2,3))
01497 Integer, Intent (In) :: nparts
01498 Integer, Intent (In) :: inter (2, ndim_3d, nparts)
01499 Logical, Intent (Out) :: match
01500 Integer, Intent (Out) :: ierror
01501 End Subroutine
01502
01503
01504
01505 subroutine psmile_add_points_found (grid_id, search, &
01506 extra_search, indices_returned, &
01507 found, n_send, len_nsend, &
01508 index_found, n_found, &
01509 neighbors_3d, nloc, num_neigh, &
01510 grid_valid_shape, use_how, ierror)
01511 Use PSMILe_common
01512
01513 Integer, Intent (In) :: grid_id
01514 Type (Enddef_search), Intent (InOut) :: search
01515 Type (Extra_search_info), Intent (InOut) :: extra_search
01516 Integer, Intent (In) :: n_found, n_send
01517 Integer, Intent (In) :: indices_returned (n_send)
01518 Integer, Intent (In) :: index_found (n_found)
01519 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
01520 Integer, Intent (In) :: len_nsend (search%npart)
01521 Integer, Intent (In) :: nloc, num_neigh
01522 Integer, Intent (In) :: use_how
01523 Integer, Intent (InOut) :: found (n_send)
01524 Integer, Intent (InOut) :: neighbors_3d (ndim_3d, nloc,
01525 num_neigh)
01526 Integer, Intent (Out) :: ierror
01527 End Subroutine
01528
01529 subroutine psmile_enddef_action (search, index, status, ierror)
01530 Use PSMILe_common
01531 Type (Enddef_search), Intent (InOut) :: search
01532 Integer, Intent (In) :: index
01533 Integer, Intent (In) :: status (MPI_STATUS_SIZE)
01534 Integer, Intent (Out) :: ierror
01535 End Subroutine
01536
01537 subroutine psmile_enddef_action_cell (msg_locations, ierror)
01538 Use PSMILe_common, only : enddef_msg_locations
01539
01540 Type (enddef_msg_locations), Intent (In) :: msg_locations
01541 Integer, Intent (Out) :: ierror
01542 End Subroutine
01543
01544 subroutine psmile_enddef_action_extra (msg_extra, nd_msg, sender, ierror)
01545 Integer, Intent (In) :: sender, nd_msg
01546 Integer, Intent (In) :: msg_extra (nd_msg)
01547 Integer, Intent (Out) :: ierror
01548 End Subroutine
01549
01550 subroutine psmile_enddef_action_loc (msg_locations, ierror)
01551 Use PSMILe_common, only : enddef_msg_locations
01552
01553 Type (enddef_msg_locations), Intent (In) :: msg_locations
01554 Integer, Intent (Out) :: ierror
01555 End Subroutine
01556
01557 subroutine psmile_enddef_action_sel ( sender, ierror)
01558 Integer, Intent (In) :: sender
01559 Integer, Intent (Out) :: ierror
01560 End Subroutine
01561
01562 subroutine psmile_enddef_appl (tag, &
01563 my_icomp0_coll_comps, n_active, ierror)
01564 Use PSMILe_common
01565 Integer, Intent (In) :: tag
01566 Integer, Intent (Out) :: my_icomp0_coll_comps, n_active
01567 Integer, Intent (Out) :: ierror
01568 End Subroutine
01569
01570 subroutine psmile_enddef_appl_miss (global_ids, comp_min, comp_max, &
01571 b_comps, n_active, tag, ierror)
01572 Use PSMILe_common
01573 Integer, Intent (In) :: n_active, tag
01574 Integer, Intent (In) :: comp_min, comp_max
01575 Integer, Intent (In) :: global_ids (comp_min:comp_max)
01576 Type (Enddef_comp), Intent (Out) :: b_comps (n_active)
01577 Integer, Intent (Out) :: ierror
01578 End Subroutine
01579
01580 subroutine psmile_enddef_comp (comp_id, global_comp_id, Number_of_Grids, &
01581 comp_info, ierror)
01582 Use PSMILe_common
01583 Integer, Intent (In) :: comp_id, Number_of_Grids
01584 Integer, Intent (In) :: global_comp_id
01585 Type (Enddef_comp), Intent (Out) :: comp_info
01586 Integer, Intent (Out) :: ierror
01587 End Subroutine
01588 subroutine psmile_enddef_comp_grid (comp_id, n_grids, ierror)
01589 Integer, Intent (In) :: comp_id
01590 Integer, Intent (Out) :: ierror, n_grids
01591 End Subroutine
01592
01593 subroutine psmile_enddef_comp_periodic (comp_id, grid_ids, n_total, &
01594 ierror)
01595 Integer, Intent (In) :: comp_id, n_total
01596 Integer, Intent (In) :: grid_ids (n_total)
01597 Integer, Intent (Out) :: ierror
01598 End Subroutine
01599
01600 subroutine psmile_field2grid (ierror)
01601 Integer, Intent (Out) :: ierror
01602 End Subroutine
01603
01604 subroutine psmile_find_intersect (comp_info, global_index, num_intersect_per_grid, &
01605 num_dummy_intersect_per_grid, ninter, &
01606 nmyint, nnull, tag, ierror)
01607 Use PSMILe_common
01608 Type (Enddef_comp), Intent (InOut) :: comp_info
01609 Integer, Intent (InOut) :: num_intersect_per_grid(:),
01610 num_dummy_intersect_per_grid(:)
01611 Integer, Intent (InOut) :: ninter, nmyint, nnull
01612 Integer, Intent (In) :: global_index, tag
01613 Integer, Intent (Out) :: ierror
01614 End Subroutine
01615
01616 subroutine psmile_gauss_setup (grid_id, ierror)
01617 Integer, Intent (In) :: grid_id
01618 Integer, Intent (Out) :: ierror
01619 End Subroutine PSMILe_gauss_setup
01620
01621 subroutine psmile_gauss_get_neighbours (grid_id, ierror)
01622 Integer, Intent (In) :: grid_id
01623 Integer, Intent (Out) :: ierror
01624 End Subroutine PSMILe_gauss_get_neighbours
01625
01626 subroutine psmile_get_face_ind_21d (search, extra_search, &
01627 send_info, len_cpl, &
01628 send_mask, nreq, srcloc_ind, n_send, &
01629 ierror)
01630 Use PSMILe_common
01631
01632 Type (Enddef_search), Intent (In) :: search
01633 Type (Extra_search_info), Intent (In) :: extra_search
01634 Type (Send_information), Intent (In) :: send_info
01635 Integer, Intent (In) :: nreq, n_send
01636 Integer, Intent (In) :: len_cpl (search%npart)
01637 Logical, Intent (In) :: send_mask (nreq)
01638 Integer, Intent (Out) :: srcloc_ind (ndim_3d, n_send)
01639 Integer, Intent (Out) :: ierror
01640 End Subroutine
01641
01642 subroutine psmile_get_face_ind_3d (search, extra_search, &
01643 send_info, len_cpl, &
01644 send_mask, nreq, srcloc_ind, n_send, &
01645 ierror)
01646 Use PSMILe_common
01647
01648 Type (Enddef_search), Intent (In) :: search
01649 Type (Extra_search_info), Intent (In) :: extra_search
01650 Type (Send_information), Intent (In) :: send_info
01651 Integer, Intent (In) :: nreq, n_send
01652 Integer, Intent (In) :: len_cpl (search%npart)
01653 Logical, Intent (In) :: send_mask (nreq)
01654 Integer, Intent (Out) :: srcloc_ind (ndim_3d, n_send)
01655 Integer, Intent (Out) :: ierror
01656 End Subroutine
01657
01658 subroutine psmile_get_face_ind_reg (search, extra_search, &
01659 send_info, len_cpl, &
01660 send_mask, nreq, srcloc_ind, n_send, &
01661 ierror)
01662 Use PSMILe_common
01663
01664 Type (Enddef_search), Intent (In) :: search
01665 Type (Extra_search_info), Intent (In) :: extra_search
01666 Type (Send_information), Intent (In) :: send_info
01667 Integer, Intent (In) :: nreq, n_send
01668 Integer, Intent (In) :: len_cpl (search%npart)
01669 Logical, Intent (In) :: send_mask (nreq)
01670
01671 Integer, Intent (Out) :: srcloc_ind (ndim_3d, n_send)
01672 Integer, Intent (Out) :: ierror
01673 End Subroutine
01674
01675 subroutine psmile_get_faces_virtual_ind (search, extra_search, &
01676 send_info, len_cpl, &
01677 send_mask, nreq, virtual_ind, n_send, &
01678 ierror)
01679 Use PSMILe_common
01680
01681 Type (Enddef_search), Intent (In) :: search
01682 Type (Extra_search_info), Intent (In) :: extra_search
01683 Type (Send_information), Intent (In) :: send_info
01684 Integer, Intent (In) :: nreq, n_send
01685 Integer, Intent (In) :: len_cpl (search%npart)
01686 Logical, Intent (In) :: send_mask (nreq)
01687
01688 Integer, Intent (Out) :: virtual_ind (n_send)
01689 Integer, Intent (Out) :: ierror
01690 End Subroutine
01691
01692
01693 subroutine psmile_get_intersect (ninter, nmyint, nnull, &
01694 num_intersect_per_grid, &
01695 num_dummy_intersect_per_grid, &
01696 tag, ierror)
01697 Use PSMILe_common
01698 Integer, Intent (In) :: ninter, nmyint, nnull
01699 Integer, Intent (In) :: num_intersect_per_grid(:),
01700 num_dummy_intersect_per_grid(:)
01701 Integer, Intent (In) :: tag
01702 Integer, Intent (Out) :: ierror
01703 End Subroutine
01704
01705 subroutine psmile_get_locations_3d (msg_locations, ierror)
01706 Use PSMILe_common, only : enddef_msg_locations
01707
01708 Type (enddef_msg_locations), Intent (In) :: msg_locations
01709 Integer, Intent (Out) :: ierror
01710 End Subroutine
01711
01712 subroutine psmile_hash_extra (search, locs, hash, nlocs, &
01713 mask_array, mask_shape, mask_available, &
01714 grid_valid_shape, ierror)
01715 Use PSMILe_common
01716
01717 Type (Enddef_global_search), Intent (InOut) :: search
01718 Integer, Intent (In) :: nlocs
01719 Logical, Intent (In) :: mask_available
01720 Integer, Intent (In) :: locs (ndim_3d, nlocs)
01721 Integer, Intent (In) :: grid_valid_shape (2,
01722 ndim_3d)
01723 Integer, Intent (In) :: mask_shape (2, ndim_3d)
01724 Logical, Intent (In) ::
01725 mask_array (mask_shape (1,1):mask_shape (2,1),
01726 mask_shape (1,2):mask_shape (2,2),
01727 mask_shape (1,3):mask_shape (2,3))
01728 Integer, Intent (Out) :: hash (nlocs)
01729 Integer, Intent (Out) :: ierror
01730 End Subroutine
01731
01732 subroutine psmile_locations_alloc (send_info, ierror)
01733 Use PSMILe_common
01734
01735 Type(Send_information), Intent(Inout) :: send_info
01736 Integer, Intent (Out) :: ierror
01737 End Subroutine
01738
01739 subroutine psmile_locations_dealloc (send_info, ierror)
01740 Use PSMILe_common
01741
01742 Type(Send_information), Intent(Inout) :: send_info
01743 Integer, Intent (Out) :: ierror
01744 End Subroutine
01745
01746 subroutine psmile_locations_direct (control, global, search, method_id, &
01747 dir_index, ierror)
01748 Use PSMILe_common
01749
01750 Type (Enddef_search), Intent (InOut) :: search
01751 Integer, Intent (In) :: control (2, ndim_3d, *)
01752 Integer, Intent (In) :: global (2, ndim_3d, *)
01753 Integer, Intent (In) :: method_id
01754 Integer, Intent (Out) :: ierror, dir_index
01755 End Subroutine
01756
01757 subroutine psmile_locations_gauss2 (found, loc, range, control, &
01758 search, method_id, &
01759 dir_index, cpl_index, len_cpl, ierror)
01760 Use PSMILe_common
01761
01762 Type (Enddef_search), Intent (InOut) :: search
01763 Type (integer_vector) :: found (search%npart, 2)
01764 Type (integer_vector) :: loc (search%npart, 2)
01765 Integer, Intent (In) :: range (2, ndim_2d, search%npart)
01766 Integer, Intent (In) :: control (2, ndim_2d, search%npart)
01767 Integer, Intent (In) :: method_id
01768 Integer, Intent (Out) :: len_cpl (search%npart)
01769 Integer, Intent (Out) :: ierror, cpl_index, dir_index
01770 End Subroutine
01771
01772 subroutine psmile_locations_irreg2 (found, loc, range, control, &
01773 search, method_id, msk_required, &
01774 virtual_cell, virtual_cell_required, &
01775 dir_index, cpl_index, len_cpl, ierror)
01776 Use PSMILe_common
01777
01778 Type (Enddef_search), Intent (InOut) :: search
01779 Type (integer_vector) :: found (search%npart, 2)
01780 Type (integer_vector) :: loc (search%npart, 2)
01781 Type (integer_vector) :: virtual_cell (search%npart)
01782 Integer, Intent (In) :: range (2, ndim_2d, search%npart)
01783 Integer, Intent (In) :: control (2, ndim_2d, search%npart)
01784 Integer, Intent (In) :: method_id
01785 Logical, Intent (In) :: msk_required
01786 Logical, Intent (In) :: virtual_cell_required
01787
01788 Integer, Intent (Out) :: len_cpl (search%npart)
01789 Integer, Intent (Out) :: ierror, cpl_index, dir_index
01790 End Subroutine
01791
01792 subroutine psmile_locations_3d_mask (search, inter, shift, method_id, &
01793 dir_index, ierror)
01794 Use PSMILe_common
01795
01796 Type (Enddef_search), Intent (InOut) :: search
01797 Integer, Intent (In) :: inter (2, ndim_3d, search%npart)
01798 Integer, Intent (In) :: shift (ndim_3d)
01799 Integer, Intent (In) :: method_id
01800 Integer, Intent (Out) :: ierror, dir_index
01801 End Subroutine
01802
01803 subroutine psmile_locations_3d (found, loc, range, control, &
01804 search, method_id, msk_required, &
01805 virtual_cell, virtual_cell_required, &
01806 dir_index, cpl_index, len_cpl, ierror)
01807 Use PSMILe_common
01808
01809 Type (Enddef_search), Intent (InOut) :: search
01810 Type (integer_vector) :: found (search%npart)
01811 Type (integer_vector) :: loc (search%npart)
01812 Type (integer_vector) :: virtual_cell (search%npart)
01813 Integer, Intent (In) :: range (2, ndim_3d, *)
01814 Integer, Intent (In) :: control (2, ndim_3d, *)
01815 Integer, Intent (In) :: method_id
01816 Logical, Intent (In) :: msk_required
01817 Logical, Intent (In) :: virtual_cell_required
01818 Integer, Intent (Out) :: len_cpl (search%npart)
01819 Integer, Intent (Out) :: ierror, cpl_index, dir_index
01820 End Subroutine
01821
01822 subroutine psmile_locations_3d_reg (found, loc, range, control, &
01823 search, method_id, &
01824 dir_index, cpl_index, len_cpl, ierror)
01825 Use PSMILe_common
01826
01827 Type (Enddef_search), Intent (InOut) :: search
01828 Type (integer_vector) :: found (search%npart, ndim_3d)
01829 Type (integer_vector) :: loc (search%npart, ndim_3d)
01830 Integer, Intent (In) :: range (2, ndim_3d, search%npart)
01831 Integer, Intent (In) :: control (2, ndim_3d, search%npart)
01832 Integer, Intent (In) :: method_id
01833 Integer, Intent (Out) :: len_cpl (search%npart)
01834 Integer, Intent (Out) :: ierror, cpl_index, dir_index
01835 End Subroutine
01836
01837 subroutine psmile_neigh_extra_points (search, extra_search, &
01838 mask_array, mask_shape, mask_available, use_how, &
01839 grid_valid_shape, &
01840 neighbors_3d, nloc, n_corners, len_cpl, ierror)
01841
01842 Use PSMILe_common
01843
01844 Type (Enddef_search), Intent (In) :: search
01845 Logical, Intent (In) :: mask_array (*)
01846 Integer, Intent (In) :: mask_shape (2, ndim_3d)
01847 Logical, Intent (In) :: mask_available
01848 Integer, Intent (In) :: use_how(3)
01849 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
01850 Integer, Intent (In) :: nloc, n_corners
01851 Integer, Intent (In) :: len_cpl (search%npart)
01852 Type (Extra_search_info), Intent (InOut) :: extra_search
01853 Integer, Intent (InOut) :: neighbors_3d (ndim_3d, nloc,
01854 n_corners)
01855 Integer, Intent (Out) :: ierror
01856 End Subroutine
01857
01858 subroutine psmile_neigh_extra_search_clean (search, extra_search, ierror)
01859 Use PSMILe_common
01860
01861 Type (Enddef_search), Intent (In) :: search
01862 Type (Extra_search_info), Intent (InOut) :: extra_search
01863 Integer, Intent (Out) :: ierror
01864 End Subroutine
01865
01866 subroutine psmile_neigh_extra_search_init (search, grid_id, &
01867 extra_search, ierror)
01868 Use PSMILe_common
01869
01870 Type (Enddef_search), Intent (In) :: search
01871 Integer, Intent(In) :: grid_id
01872 Type (Extra_search_info), Intent (InOut) :: extra_search
01873 Integer, Intent (Out) :: ierror
01874 End Subroutine
01875
01876 subroutine psmile_neigh_global_gauss2 (grid_id, &
01877 mask_array, mask_shape, mask_available, use_how, &
01878 grid_valid_shape, &
01879 neighbors_3d, nloc, n_corners, search_required, &
01880 ierror)
01881 Use PSMILe_common
01882
01883 Logical, Intent (In) :: mask_array (*)
01884 Integer, Intent (In) :: mask_shape (2, ndim_3d)
01885 Logical, Intent (In) :: mask_available
01886 Integer, Intent (In) :: grid_id, use_how
01887 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
01888 Integer, Intent (In) :: nloc, n_corners
01889 Integer, Intent (InOut) :: neighbors_3d (ndim_3d, nloc,
01890 n_corners)
01891 Integer, Intent (InOut) :: search_required (nloc)
01892 Integer, Intent (Out) :: ierror
01893 End Subroutine
01894
01895 subroutine psmile_neigh_global_points (search, extra_search, &
01896 mask_array, mask_shape, mask_available, use_how, &
01897 grid_id, grid_valid_shape, &
01898 neighbors_3d, nloc, n_corners, len_cpl, ierror)
01899
01900 Use PSMILe_common
01901
01902 Type (Enddef_search), Intent (In) :: search
01903 Logical, Intent (In) :: mask_array (*)
01904 Integer, Intent (In) :: mask_shape (2, ndim_3d)
01905 Logical, Intent (In) :: mask_available
01906 Integer, Intent (In) :: grid_id, use_how
01907 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
01908 Integer, Intent (In) :: nloc, n_corners
01909 Integer, Intent (In) :: len_cpl (search%npart)
01910
01911 Type (Extra_search_info), Intent (InOut) :: extra_search
01912 Integer, Intent (InOut) ::
01913 neighbors_3d (ndim_3d, nloc, n_corners)
01914 Integer, Intent (Out) :: ierror
01915 End Subroutine
01916
01917 subroutine psmile_recv_req_mask (sender, tag, &
01918 search, recv_req, &
01919 recv_mask, new_search, ierror)
01920 Use PSMILe_common
01921
01922 Integer, Intent (In) :: sender, tag
01923 Logical, Intent (In) :: recv_mask, new_search
01924 Type (Enddef_search), Intent (InOut) :: search
01925 Integer, Intent (Out) :: recv_req (ndim_3d+1, *)
01926 Integer, Intent (Out) :: ierror
01927 End Subroutine
01928
01929 subroutine psmile_recv_req_subgrid (msg_intersections, &
01930 sender, tag, search, &
01931 recv_req, new_search, ierror)
01932 Use PSMILe_common
01933
01934 Type (enddef_msg_intersections), Intent (In) :: msg_intersections
01935 Type (Enddef_search), Intent (InOut) :: search
01936 Integer, Intent (In) :: sender, tag
01937 Integer, Intent (InOut) :: recv_req (ndim_3d+2, *)
01938 Logical, Intent (In) :: new_search
01939 Integer, Intent (Out) :: ierror
01940 End Subroutine
01941
01942 subroutine psmile_remove_intersect (inter, idl, idg, npart, &
01943 local_extent_info, global_extent_info, ierror)
01944 Use PSMILe_common
01945 Integer, Intent (In) ::
01946 local_extent_info (nd_extent_infos, *)
01947 Integer, Intent (In) ::
01948 global_extent_info (nd_extent_infos, *)
01949 Integer, Intent (InOut) :: npart
01950 Real (PSMILe_float_kind), Intent (InOut) :: inter (2, ndim_3d, npart)
01951 Integer, Intent (InOut) :: idl (npart), idg (npart)
01952 Integer, Intent (Out) :: ierror
01953 End Subroutine
01954
01955 subroutine psmile_remove_intersect_int (inter, id1, id2, npart, ierror)
01956 Use PSMILe_common
01957 Integer, Intent (InOut) :: npart
01958 Integer, Intent (InOut) :: inter (2, ndim_3d, npart)
01959 Integer, Intent (InOut) :: id1 (npart), id2 (npart)
01960 Integer, Intent (Out) :: ierror
01961 End Subroutine
01962
01963 subroutine psmile_return_locations_3d ( msg_intersections, &
01964 sender, method_id, &
01965 dir_index, cpl_index, &
01966 n_vars, n_vars_ret, ierror)
01967 Use PSMILe_common
01968
01969 Integer, Intent (In) :: sender
01970 Integer, Intent (In) :: method_id
01971 Type (enddef_msg_intersections), intent (in) :: msg_intersections
01972 Integer, Intent (In) :: cpl_index, dir_index
01973 Integer, Intent (In) :: n_vars, n_vars_ret
01974 Integer, Intent (Out) :: ierror
01975 End Subroutine
01976
01977 subroutine psmile_search_donor_cells (search, tol, ierror)
01978 Use PSMILe_common
01979
01980 Type (Enddef_search), Intent (InOut) :: search
01981 Double Precision, Intent (In) :: tol
01982 Integer, Intent (Out) :: ierror
01983 End Subroutine
01984
01985 subroutine psmile_search_donor_extra (search_global, tol, ierror)
01986 Use PSMILe_common
01987
01988 Type (Enddef_global_search), Intent (InOut) :: search_global
01989 Double Precision, Intent (In) :: tol
01990 Integer, Intent (Out) :: ierror
01991 End Subroutine
01992
01993 subroutine psmile_search_donor_extra_off (comp_info, search, &
01994 var_id, tol, ierror)
01995 Use PSMILe_common
01996
01997 Type (Enddef_comp), Intent (In) :: comp_info
01998 Integer, Intent (In) :: var_id
01999 Double Precision, Intent (In) :: tol
02000 Type (Enddef_global_search), Intent (InOut) :: search
02001 Integer, Intent (Out) :: ierror
02002 End Subroutine
02003
02004
02005 subroutine psmile_search_donor_extra_nn (comp_info, &
02006 search, var_id, tol, ierror)
02007 Use PSMILe_common
02008
02009 Type (Enddef_comp), Intent (In) :: comp_info
02010 Integer, Intent (In) :: var_id
02011 Double Precision, Intent (In) :: tol
02012 Type (Enddef_global_search), Intent (InOut) :: search
02013 Integer, Intent (Out) :: ierror
02014 End Subroutine
02015
02016 subroutine psmile_search_donor_gridless (comp_info, search, &
02017 field_list, n_vars, &
02018 grid_id, method_id, var_id, &
02019 ierror)
02020 Use PSMILe_common
02021
02022 Type (Enddef_comp), Intent (In) :: comp_info
02023 Type (Enddef_search), Intent (InOut) :: search
02024 Integer, Intent (In) :: grid_id
02025 Integer, Intent (InOut) :: method_id, var_id
02026 Integer, Intent (In) :: n_vars
02027 Integer, Intent (In) :: field_list (nd_field_list, n_vars)
02028 Integer, Intent (Out) :: ierror
02029 End Subroutine
02030
02031 subroutine psmile_send_req_mask (msg_intersections, &
02032 dest, tag, ierror)
02033 use psmile_common, only : enddef_msg_intersections
02034
02035 Integer, Intent (In) :: dest, tag
02036 Type (enddef_msg_intersections), Intent (In) :: msg_intersections
02037 Integer, Intent (Out) :: ierror
02038 End Subroutine
02039
02040 subroutine psmile_send_req_subgrid (msg_intersections, &
02041 dest, tag, ierror)
02042 use psmile_common, only : enddef_msg_intersections
02043
02044 Integer, Intent (In) :: dest, tag
02045 Type (enddef_msg_intersections), Intent (In) :: msg_intersections
02046 Integer, Intent (Out) :: ierror
02047 End Subroutine
02048
02049 subroutine psmile_transform_gauss2 ( search, glen, map_shape, &
02050 map, locations, found, glocations, gfound, &
02051 cell_based_switch, nlev, grid_valid_shape, &
02052 ierror )
02053 Use PSMILe_Common
02054
02055 Type (Enddef_search) :: search
02056 Integer, Intent (In) :: glen (search%npart, ndim_2d)
02057 Integer, Intent (In) :: map_shape(ndim_3d)
02058 Integer, Intent (In) :: map (map_shape(1),
02059 map_shape(2),
02060 map_shape(3))
02061 Logical, Intent (In) :: cell_based_switch
02062 Integer, Intent (In) :: nlev
02063 Integer, Intent (In) :: grid_valid_shape(2)
02064 Type (integer_vector), Intent (In) :: locations (search%npart, ndim_3d)
02065 Type (integer_vector), Intent (In) :: found (search%npart, ndim_3d)
02066 Type (integer_vector), Intent (InOut) :: glocations (search%npart, ndim_2d)
02067 Type (integer_vector), Intent (InOut) :: gfound (search%npart, ndim_2d)
02068 Integer, Intent (Out) :: ierror
02069 End Subroutine
02070
02071 subroutine psmile_trans_loc2glob_3d (grid_id, &
02072 ibuf, len_item, nloc, ierror)
02073 Integer, Intent (In) :: grid_id, len_item, nloc
02074
02075 Integer, Intent (InOut) :: ibuf (len_item, nloc)
02076 Integer, Intent (Out) :: ierror
02077 End Subroutine
02078
02079 subroutine psmile_trans_loc2glob_gauss2 (grid_id, &
02080 ibuf, len_item, nloc, ierror)
02081 Integer, Intent (In) :: grid_id, len_item, nloc
02082
02083 Integer, Intent (InOut) :: ibuf (len_item, nloc)
02084 Integer, Intent (Out) :: ierror
02085 End Subroutine
02086
02087 subroutine psmile_tricu_3d_extra_off (comp_info, search, &
02088 mask_array, mask_shape, mask_available, &
02089 ibuf, len_item, n_send, num_neigh, &
02090 grid_valid_shape, cyclic, ierror)
02091 Use PSMILe_common
02092
02093 Type (Enddef_comp), Intent (In) :: comp_info
02094 Integer, Intent (In) :: mask_shape (2, ndim_3d)
02095 Logical, Intent (In) :: mask_array (mask_shape (1,1):
02096 mask_shape (2,1),
02097 mask_shape (1,2):
02098 mask_shape (2,2),
02099 mask_shape (1,3):
02100 mask_shape (2,3))
02101 Logical, Intent (In) :: mask_available
02102 Logical, Intent (In) :: cyclic (ndim_3d)
02103 Integer, Intent (In) :: len_item, n_send, num_neigh
02104 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
02105 Type (Enddef_global_search), Intent (InOut) :: search
02106 Integer, Intent (InOut) :: ibuf (len_item, n_send)
02107 Integer, Intent (Out) :: ierror
02108 End Subroutine
02109
02110 subroutine psmile_trili_3d_extra_off (comp_info, search, grid_id, &
02111 mask_array, mask_shape, mask_available, &
02112 ibuf, len_item, n_send, num_neigh, &
02113 ierror)
02114 Use PSMILe_common
02115
02116 Type (Enddef_comp), Intent (In) :: comp_info
02117 Integer, Intent (In) :: mask_shape (2, ndim_3d)
02118 Logical, Intent (In) :: mask_array (mask_shape (1,1):
02119 mask_shape (2,1),
02120 mask_shape (1,2):
02121 mask_shape (2,2),
02122 mask_shape (1,3):
02123 mask_shape (2,3))
02124 Logical, Intent (In) :: mask_available
02125 Integer, Intent (In) :: grid_id
02126 Integer, Intent (In) :: len_item, n_send, num_neigh
02127 Type (Enddef_global_search), Intent (InOut) :: search
02128 Integer, Intent (InOut) :: ibuf (len_item, n_send)
02129 Integer, Intent (Out) :: ierror
02130 End Subroutine
02131
02132 subroutine psmile_mg_found_loc_to_3d (search, nlev, &
02133 source_grid_type, &
02134 found, locations, len, &
02135 virtual_cell, virtual_cell_required, &
02136 found_3d, locations_3d, virtual_3d, ierror)
02137 Use PSMILe_common
02138
02139 Type (Enddef_search), Intent (In) :: search
02140 Integer, Intent (In) :: nlev
02141 Integer, Intent (In) :: source_grid_type
02142 Type (integer_vector), Intent (In) :: found (search%npart, ndim_3d)
02143 Type (integer_vector), Intent (In) :: locations (search%npart, ndim_3d)
02144 Type (integer_vector), Intent (In) :: virtual_cell (search%npart)
02145 Logical, Intent (In) :: virtual_cell_required
02146 Integer, Intent (In) :: len (search%npart, *)
02147 Type (integer_vector), Intent (Out) :: found_3d (search%npart)
02148 Type (integer_vector), Intent (Out) :: locations_3d (search%npart)
02149 Type (integer_vector), Intent (Out) :: virtual_3d (search%npart)
02150 Integer, Intent (Out) :: ierror
02151 End Subroutine
02152
02153 subroutine psmile_store_dest_locs_21d (found, range, control, &
02154 foundz,send_info, nloc, opt, &
02155 nprev, nadd, ierror)
02156 Use PSMILe_common
02157 Integer, Intent (In) :: range (2, ndim_3d)
02158 Integer, Intent (In) :: control (2, ndim_3d)
02159 Integer, Intent (In) :: found (*), foundz (*)
02160 Integer, Intent (In) :: nloc, nprev, opt
02161 Type(Send_information), Intent(Inout) :: send_info
02162 Integer, Intent (Out) :: ierror, nadd
02163 End Subroutine
02164
02165 subroutine psmile_store_dest_locs_3d (found, loc, range, control, &
02166 send_info, nloc, opt, &
02167 nprev, nadd, ierror)
02168 Use PSMILe_common
02169 Integer, Intent (In) :: range (2, ndim_3d)
02170 Integer, Intent (In) :: control (2, ndim_3d)
02171
02172 Integer, Intent (In) :: found (*)
02173 Integer, Intent (In) :: loc (ndim_3d, *)
02174 Integer, Intent (In) :: nloc, nprev, opt
02175 Type(Send_information), Intent(Inout) :: send_info
02176 Integer, Intent (Out) :: ierror, nadd
02177 End Subroutine
02178
02179 subroutine psmile_store_dest_locs_3d_msk (mask_array, mask_shape, &
02180 inter, send_info, nloc, &
02181 nprev, nadd, ierror)
02182 Use PSMILe_common
02183 Integer, Intent (In) :: mask_shape (2, ndim_3d)
02184 Logical, Intent (In) :: mask_array (
02185 mask_shape(1,1):mask_shape(2,1),
02186 mask_shape(1,2):mask_shape(2,2),
02187 mask_shape(1,3):mask_shape(2,3))
02188 Integer, Intent (In) :: inter (2, ndim_3d)
02189 Integer, Intent (In) :: nloc, nprev
02190 Type(Send_information), Intent(Inout) :: send_info
02191 Integer, Intent (Out) :: ierror, nadd
02192 End Subroutine
02193
02194 subroutine psmile_store_dest_locs_3d_reg (found, loc, range, control, &
02195 send_info, nloc, opt, &
02196 nprev, nadd, ierror)
02197 Use PSMILe_common
02198 Integer, Intent (In) :: range (2, ndim_3d)
02199 Integer, Intent (In) :: control (2, ndim_3d)
02200
02201 Type (integer_vector), Intent (In) :: found (ndim_3d)
02202 Type (integer_vector), Intent (In) :: loc (ndim_3d)
02203 Integer, Intent (In) :: nloc, nprev, opt
02204 Type(Send_information), Intent(Inout) :: send_info
02205 Integer, Intent (Out) :: ierror, nadd
02206 End Subroutine
02207
02208 subroutine psmile_store_mask_locs_3d ( ipart, range, control, found, &
02209 send_info, nprev, ncpl, ierror )
02210 Use PSMILe_common
02211 Integer, Intent(In) :: ipart
02212 Integer, Intent(In) :: range (2,ndim_3d)
02213 Integer, Intent(In) :: control(2,ndim_3d)
02214 Integer, Intent(In) :: found ( range(1,1):range(2,1),
02215 range(1,2):range(2,2),
02216 range(1,3):range(2,3))
02217 Type(Send_information), Intent(InOut) :: send_info
02218 Integer, Intent(In) :: nprev
02219 Integer, Intent(In) :: ncpl
02220
02221 Integer, Intent(Out) :: ierror
02222
02223 End Subroutine
02224
02225 subroutine psmile_store_source_locs_1d (found, loc, ibeg, len, &
02226 send_info, nloc, opt, ialloc, ipart,&
02227 nprev, nadd, ierror)
02228 Use PSMILe_common
02229 Integer, Intent (In) :: ibeg, len
02230 Integer, Intent (In) :: found (*)
02231 Integer, Intent (In) :: loc (*)
02232 Integer, Intent (In) :: nloc, nprev, opt, ialloc, ipart
02233 Type(Send_information), Intent(Inout) :: send_info
02234 Integer, Intent (Out) :: ierror, nadd
02235 End Subroutine
02236
02237 subroutine psmile_store_source_locs_2d (found, loc, ibeg, len, &
02238 send_info, nloc, opt, ialloc, ipart,&
02239 nprev, nadd, ierror)
02240 Use PSMILe_common
02241 Integer, Intent (In) :: ibeg, len
02242 Integer, Intent (In) :: found (*)
02243 Integer, Intent (In) :: loc (ndim_2d, *)
02244 Integer, Intent (In) :: nloc, nprev, opt, ialloc, ipart
02245 Type(Send_information), Intent(Inout) :: send_info
02246 Integer, Intent (Out) :: ierror, nadd
02247 End Subroutine
02248
02249 subroutine psmile_store_source_locs_3d (found, loc, ibeg, len, &
02250 send_info, nloc, opt, &
02251 nprev, nadd, ierror)
02252 Use PSMILe_common
02253 Integer, Intent (In) :: ibeg, len
02254 Integer, Intent (In) :: found (*)
02255 Integer, Intent (In) :: loc (ndim_3d, *)
02256 Integer, Intent (In) :: nloc, nprev, opt
02257 Type(Send_information), Intent(Inout) :: send_info
02258 Integer, Intent (Out) :: ierror, nadd
02259 End Subroutine
02260
02261 subroutine psmile_store_source_locs_3d_msk (mask_array, mask_shape, &
02262 inter, send_info, nloc, &
02263 nprev, nadd, ierror)
02264 Use PSMILe_common
02265 Integer, Intent (In) :: mask_shape (2, ndim_3d)
02266 Logical, Intent (In) :: mask_array (
02267 mask_shape(1,1):mask_shape(2,1),
02268 mask_shape(1,2):mask_shape(2,2),
02269 mask_shape(1,3):mask_shape(2,3))
02270 Integer, Intent (In) :: inter (2, ndim_3d)
02271 Integer, Intent (In) :: nloc, nprev
02272 Type(Send_information), Intent(Inout) :: send_info
02273 Integer, Intent (Out) :: ierror, nadd
02274 End Subroutine
02275
02276 subroutine psmile_store_source_locs_3d_reg ( &
02277 found, loc, range, control, &
02278 send_info, nloc, opt, nprev, nadd, ierror)
02279 Use PSMILe_common
02280 Integer, Intent (In) :: range (2, ndim_3d)
02281 Integer, Intent (In) :: control (2, ndim_3d)
02282 Type (integer_vector), Intent (In) :: found (ndim_3d)
02283 Type (integer_vector), Intent (In) :: loc (ndim_3d)
02284 Integer, Intent (In) :: nloc, nprev, opt
02285
02286 Type(Send_information), Intent(InOut) :: send_info
02287 Integer, Intent (Out) :: ierror, nadd
02288 End Subroutine
02289
02290 subroutine psmile_store_source_virt_3d ( &
02291 found, virtual_cell, ibeg, len, &
02292 send_info, nloc, opt, ialloc, ipart, nprev, ierror)
02293 Use PSMILe_common
02294
02295 Integer, Intent (In) :: ibeg, len
02296 Integer, Intent (In) :: found (len)
02297 Integer, Intent (In) :: virtual_cell (len)
02298 Integer, Intent (In) :: nloc, nprev, opt
02299 Integer, Intent (In) :: ialloc, ipart
02300
02301 Type(Send_information), Intent(InOut) :: send_info
02302 Integer, Intent (Out) :: ierror
02303 End Subroutine
02304
02305 subroutine psmile_send_destinations ( &
02306 method_id, cpl_index, dir_index, &
02307 sender, tag, ierror)
02308 Integer, Intent (In) :: method_id
02309 Integer, Intent (In) :: cpl_index, dir_index
02310 Integer, Intent (In) :: sender, tag
02311
02312 Integer, Intent (Out) :: ierror
02313 End Subroutine
02314
02315
02316
02317 subroutine psmile_mg_clean (ierror)
02318 Integer, Intent (Out) :: ierror
02319 End Subroutine
02320
02321 subroutine psmile_mg_setup (grid_id, range, tol, ierror)
02322 Use PSMILe_common
02323 Integer, Intent (In) :: grid_id
02324 Integer, Intent (In) :: range (2, ndim_3d)
02325 Double Precision, Intent (In) :: tol
02326 Integer, Intent (Out) :: ierror
02327 End Subroutine
02328
02329 subroutine psmile_mg_first_level (grid_id, range, &
02330 mg_info, tol, simplified_grid, ierror)
02331 Use PSMILe_common
02332 Integer, Intent (In) :: grid_id
02333 Integer, Intent (In) :: range (2, ndim_3d)
02334 Type (Enddef_mg), Intent (InOut) :: mg_info
02335 Real (PSMILe_float_kind), Intent (In) :: tol
02336 Logical, Intent (In) :: simplified_grid
02337 Integer, Intent (Out) :: ierror
02338 End Subroutine
02339
02340 Logical Function PSMILe_to_be_coupled (comp_id1, comp_id2)
02341 Integer, Intent (In) :: comp_id1, comp_id2
02342 End Function
02343
02344 subroutine psmile_mg_coars_level (grid_id, mg_info_fine, &
02345 mg_info_coarse, &
02346 icoarse, ierror)
02347 Use PSMILe_common
02348
02349 Integer, Intent (In) :: grid_id
02350 Type (Enddef_mg), Intent (In) :: mg_info_fine
02351 Type (Enddef_mg), Intent (InOut):: mg_info_coarse
02352 Integer, Intent (In) :: icoarse (ndim_3d)
02353 Integer, Intent (Out) :: ierror
02354 End Subroutine
02355
02356 subroutine psmile_mg_get_cyclic (grid_id, range, &
02357 tol, ierror)
02358 Use PSMILe_common
02359
02360 Integer, Intent (In) :: grid_id
02361 Integer, Intent (In) :: range (2, ndim_3d)
02362 Double Precision, Intent (In) :: tol
02363 Integer, Intent (Out) :: ierror
02364 End Subroutine
02365
02366
02367
02368 subroutine psmile_get_act_comps (a_comps, nd_acomps, n_act, ierror)
02369 Integer, Intent (In) :: nd_acomps
02370 Integer, Intent (Out) :: a_comps (nd_acomps, *)
02371 Integer, Intent (Out) :: ierror, n_act
02372 End Subroutine
02373
02374
02375
02376 subroutine psmile_get_grid_extent (grid_id, extent, ierror)
02377 Use PSMILe_common
02378 Integer, Intent (In) :: grid_id
02379 Real (PSMILe_float_kind), Intent (Out) :: extent (2, ndim_3d)
02380 Integer, Intent (Out) :: ierror
02381 End Subroutine
02382
02383
02384
02385 subroutine psmile_sel_grid_range (grid_id, dinter, inter, ierror)
02386 Use PSMILe_common
02387 Integer, Intent (In) :: grid_id
02388 Real (PSMILe_float_kind), Intent (In) :: dinter (2, ndim_3d)
02389 Integer, Intent (Out) :: inter (2, ndim_3d)
02390 Integer, Intent (Out) :: ierror
02391 End Subroutine
02392
02393
02394
02395 subroutine psmile_compact_locations ( grid_id, search, ndim, found, ierror )
02396 Use PSMILe_common
02397 Integer, Intent (In) :: grid_id
02398 Type (Enddef_search), Intent (In) :: search
02399 Integer, Intent (In) :: ndim
02400 Type (integer_vector), Intent (InOut) :: found (search%npart, ndim)
02401 Integer, Intent (Out) :: ierror
02402
02403 End Subroutine
02404
02405 subroutine psmile_compact_neighbors_3d (neighbors_3d, nloc, num_neigh, &
02406 grid_valid_shape, extra_search, &
02407 send_info, neighbors, ierror)
02408 Use PSMILe_common
02409
02410 Integer, Intent (In) :: nloc, num_neigh
02411 Integer, Intent (In) :: neighbors_3d (ndim_3d, nloc, num_neigh)
02412 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
02413 Type(Extra_search_info), Intent(in) :: extra_search
02414 Type (Send_information), Intent (InOut) :: send_info
02415 Integer, Intent (Out) :: neighbors (nloc, num_neigh)
02416 Integer, Intent (Out) :: ierror
02417 End Subroutine
02418
02419 subroutine psmile_move0_neighbors (neighbors, nloc, num_neigh, ierror)
02420 Integer, Intent (In) :: nloc, num_neigh
02421 Integer, Intent (InOut) :: neighbors (nloc, num_neigh)
02422 Integer, Intent (Out) :: ierror
02423 End Subroutine
02424
02425
02426
02427 subroutine psmile_quicksort ( a, n )
02428 Integer, Intent(In) :: n
02429 Integer, Intent(InOut) :: a(n)
02430 End Subroutine PSMILe_Quicksort
02431
02432 subroutine psmile_quicksort_index ( a, n, t )
02433 Integer, Intent(In) :: n
02434 Integer, Intent(InOut) :: a(n)
02435 Integer, Intent(InOut) :: t(n)
02436 End Subroutine PSMILe_Quicksort_index
02437
02438 subroutine psmile_type_create_subarray (ndims, array_of_sizes, &
02439 array_of_subsizes, array_of_starts, &
02440 oldtype, newtype, ierror)
02441 Integer, Intent (In) :: ndims, oldtype
02442 Integer, Intent (In) :: array_of_sizes (ndims)
02443 Integer, Intent (In) :: array_of_subsizes (ndims)
02444 Integer, Intent (In) :: array_of_starts (ndims)
02445 Integer, Intent (Out) :: newtype
02446 Integer, Intent (Out) :: ierror
02447 End Subroutine
02448
02449
02450
02451 subroutine psmile_bsend_init (ftypes, flengths, number_of_ftypes, ierror)
02452 Integer, Intent (In) :: number_of_ftypes
02453 Integer, Intent (In) :: ftypes (number_of_ftypes)
02454 Integer, Intent (In) :: flengths (number_of_ftypes)
02455 Integer, Intent (Out) :: ierror
02456 End Subroutine
02457
02458
02459
02460
02461
02462
02463
02464 subroutine psmile_copy_subarray_3d_int (dest_vector, size, &
02465 iarray, idlow, idhigh, jdlow, jdhigh, kdlow, kdhigh, &
02466 sub, ierror)
02467 Use PSMILe_common
02468
02469 Integer(kind=int64), Intent (In) :: size
02470 Integer, Intent (In) :: idlow, idhigh, jdlow, jdhigh,
02471 kdlow, kdhigh
02472 Integer, Intent (In) :: sub (2, ndim_3d)
02473 Integer, Intent (In) :: iarray (idlow:idhigh, jdlow:jdhigh,
02474 kdlow:kdhigh)
02475 Integer, Intent (Out) :: dest_vector (size)
02476 Integer, Intent (Out) :: ierror
02477 End Subroutine
02478
02479
02480
02481 subroutine psmile_ext_compact_list_log2int (send_info, extra_search, &
02482 array, shape, grid_valid_shape, &
02483 dest_vector, dest_size, ierror)
02484 Use PSMILe_common
02485 Type(Send_information), Intent(In) :: send_info
02486 Type (Extra_search_info), Intent (InOut) :: extra_search
02487 Logical, Intent (In) :: array (*)
02488 Integer, Intent (In) :: shape (2, ndim_3d)
02489 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
02490 Integer, Intent (In) :: dest_size
02491 Integer, Intent (Out) :: dest_vector (dest_size)
02492 Integer, Intent (Out) :: ierror
02493 End Subroutine
02494
02495 subroutine psmile_ext_compact_list_3d_int (send_info, array, shape, &
02496 grid_valid_shape, &
02497 dest_vector, dest_size, ierror)
02498 Use PSMILe_common
02499 Type(Send_information), Intent(In) :: send_info
02500 Integer, Intent (In) :: array (*)
02501 Integer, Intent (In) :: shape (2, ndim_3d)
02502 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
02503 Integer, Intent (In) :: dest_size
02504 Integer, Intent (Out) :: dest_vector (dest_size)
02505 Integer, Intent (Out) :: ierror
02506 End Subroutine
02507
02508 subroutine psmile_extract_indices_3d_int (array, shape, &
02509 dstijk, ncpl, &
02510 dest_vector, ierror)
02511 Use PSMILe_common
02512 Integer, Intent (In) :: array (*)
02513 Integer, Intent (In) :: shape (2, ndim_3d)
02514 Integer, Intent (In) :: ncpl
02515 Integer, Intent (In) :: dstijk (ndim_3d, ncpl)
02516 Integer, Intent (Out) :: dest_vector (ncpl)
02517 Integer, Intent (Out) :: ierror
02518 End Subroutine
02519
02520 subroutine psmile_get_field_int (field_id, data_array, len, &
02521 nbr_fields, ierror)
02522
02523 Integer, Intent (In) :: field_id
02524 Integer, Intent (In) :: len, nbr_fields
02525 Integer, Intent (InOut) :: data_array(*)
02526 Integer, Intent (Out) :: ierror
02527 End Subroutine
02528
02529 subroutine psmile_get_irr_field_int (data_array, data_shape, nbr_fields, &
02530 dstijk, npoints, dstars, nars, nloc, &
02531 source, tag, comm, ierror)
02532 Use PSMILe_common
02533
02534 Integer, Intent (In) :: nars, nloc, npoints, nbr_fields
02535 Integer, Intent (In) :: source, tag, comm
02536 Integer, Intent (In) :: data_shape (2, ndim_3d)
02537 Integer, Intent (In) :: dstijk (ndim_3d, npoints)
02538 Integer, Intent (In) :: dstars (2, ndim_3d, nars)
02539 Integer, Intent (InOut) :: data_array (*)
02540 Integer, Intent (Out) :: ierror
02541 End Subroutine
02542
02543 subroutine psmile_put_compact_list_3d_int (source_list, dstijk, nloc, &
02544 array, shape, nbr_fields, &
02545 ierror)
02546 Use PSMILe_common
02547 Integer, Intent (InOut) :: array (*)
02548 Integer, Intent (In) :: shape (2, ndim_3d)
02549 Integer, Intent (In) :: nloc, nbr_fields
02550 Integer, Intent (In) :: dstijk (ndim_3d, nbr_fields)
02551 Integer, Intent (In) :: source_list (nloc, nbr_fields)
02552 Integer, Intent (Out) :: ierror
02553 End Subroutine
02554
02555 subroutine psmile_put_field_int (field_id, task_id, data_array, len, &
02556 nbr_fields, ierror)
02557
02558 Integer, Intent (In) :: field_id
02559 Integer, Intent (In) :: task_id
02560 Integer, Intent (In) :: len, nbr_fields
02561 Integer, Intent (In) :: data_array(*)
02562 Integer, Intent (Out) :: ierror
02563 End Subroutine
02564
02565 subroutine psmile_put_field_gauss2_int (data_array, data_shape, nbr_fields, &
02566 srcloc, nparts, nloc, npoints, &
02567 dest, tag, comm, ierror)
02568 Use PSMILe_common
02569
02570 Integer, Intent (In) :: nloc, dest, tag, comm, nbr_fields
02571 Integer, Intent (In) :: nparts
02572 Integer, Intent (In) :: npoints (2, nparts)
02573 Integer, Intent (In) :: data_shape (2, ndim_3d)
02574 Type (integer_vector), Intent (In) :: srcloc (2, nparts)
02575 Integer, Intent (In) :: data_array (*)
02576 Integer, Intent (Out) :: ierror
02577 End Subroutine
02578
02579 subroutine psmile_put_field_21d_int (data_array, data_shape, nbr_fields, &
02580 srcloc, nparts, nloc, npoints, &
02581 dest, tag, comm, ierror)
02582 Use PSMILe_common
02583
02584 Integer, Intent (In) :: nloc, dest, tag, comm, nbr_fields
02585 Integer, Intent (In) :: nparts
02586 Integer, Intent (In) :: npoints (2, nparts)
02587 Integer, Intent (In) :: data_shape (2, ndim_3d)
02588 Type (integer_vector), Intent (In) :: srcloc (2, nparts)
02589 Integer, Intent (In) :: data_array (*)
02590 Integer, Intent (Out) :: ierror
02591 End Subroutine
02592
02593 subroutine psmile_put_field_3d_int (data_array, data_shape, nbr_fields, &
02594 srcloc, nparts, nloc, npoints, &
02595 dest, tag, comm, ierror)
02596 Use PSMILe_common
02597
02598 Integer, Intent (In) :: nloc, dest, tag, comm, nbr_fields
02599 Integer, Intent (In) :: nparts
02600 Integer, Intent (In) :: npoints (ndim_3d, nparts)
02601 Integer, Intent (In) :: data_shape (2, ndim_3d)
02602 Type (integer_vector), Intent (In) :: srcloc (ndim_3d, nparts)
02603 Integer, Intent (In) :: data_array (*)
02604 Integer, Intent (Out) :: ierror
02605 End Subroutine
02606
02607 subroutine psmile_put_irr_field_int (data_array, data_shape, nbr_fields, &
02608 srcloc, npoints, srcars, nars, nloc, &
02609 dest, tag, comm, ierror)
02610 Use PSMILe_common
02611
02612 Integer, Intent (In) :: nars, nloc, npoints, nbr_fields
02613 Integer, Intent (In) :: dest, tag, comm
02614 Integer, Intent (In) :: data_shape (2, ndim_3d)
02615 Integer, Intent (In) :: srcloc (ndim_3d, npoints)
02616 Integer, Intent (In) :: srcars (2, ndim_3d, nars)
02617 Integer, Intent (In) :: data_array (*)
02618 Integer, Intent (Out) :: ierror
02619 End Subroutine
02620
02621
02622
02623
02624
02625
02626 subroutine psmile_copy_subarray_2d_log (dest_vector, size, &
02627 darray, idlow, idhigh, jdlow, jdhigh, &
02628 ibeg, iend, jbeg, jend, ierror)
02629 Use PSMILe_common
02630 Integer(kind=int64), Intent (In) :: size
02631 Integer, Intent (In) :: idlow, idhigh, jdlow, jdhigh
02632 Integer, Intent (In) :: ibeg, iend, jbeg, jend
02633 Logical, Intent (In) :: darray (idlow:idhigh, jdlow:jdhigh)
02634 Logical, Intent (Out) :: dest_vector (size)
02635 Integer, Intent (Out) :: ierror
02636 End Subroutine
02637
02638 subroutine psmile_copy_subarray_3d_log (dest_vector, size, &
02639 iarray, idlow, idhigh, jdlow, jdhigh, kdlow, kdhigh, &
02640 sub, ierror)
02641 Use PSMILe_common
02642
02643 Integer(kind=int64), Intent (In) :: size
02644 Integer, Intent (In) :: idlow, idhigh, jdlow, jdhigh,
02645 kdlow, kdhigh
02646 Integer, Intent (In) :: sub (2, ndim_3d)
02647 Logical, Intent (In) :: iarray (idlow:idhigh, jdlow:jdhigh,
02648 kdlow:kdhigh)
02649 Logical, Intent (Out) :: dest_vector (size)
02650 Integer, Intent (Out) :: ierror
02651 End Subroutine
02652
02653
02654
02655
02656
02657 subroutine psmile_add_nn_found_real (search, extra_search, &
02658 index_sent, found, n_send, &
02659 index_found, distance, n_found, nb_extra, &
02660 selected, sel_info, nrecv, ierror)
02661 Use PSMILe_common
02662
02663 Integer, Intent (InOut) :: nrecv
02664 Type (Enddef_search), Intent (In) :: search
02665 Type (Extra_search_info), Intent (InOut) :: extra_search
02666 Type (Select_search_info), Intent (InOut) :: sel_info (nrecv)
02667 Integer, Intent (In) :: nb_extra, n_found, n_send
02668 Integer, Intent (In) :: index_sent (n_send)
02669 Integer, Intent (In) :: found (n_send)
02670 Integer, Intent (In) :: index_found (n_found)
02671 Real, Intent (In) :: distance (n_found)
02672 Integer, Intent (InOut) :: selected (2, extra_search%n_extra)
02673 Integer, Intent (Out) :: ierror
02674 End Subroutine
02675
02676 subroutine psmile_bbcells_1d_real (array, shape, range, &
02677 corners, corner_shape, nbr_corners, &
02678 chmin, chmax, levdim, ierror)
02679 Integer, Intent (In) :: shape (2)
02680 Integer, Intent (In) :: range (2)
02681 Real, Intent (In) :: array (shape(1):shape(2))
02682 Integer, Intent (In) :: corner_shape (2), nbr_corners
02683 Real, Intent (In) :: corners (corner_shape(1):corner_shape(2),
02684 nbr_corners)
02685 Integer, Intent (In) :: levdim
02686 Real, Intent (Out) :: chmin (range(1)-1:range(2))
02687 Real, Intent (Out) :: chmax (range(1)-1:range(2))
02688 Integer, Intent (Out) :: ierror
02689 End Subroutine
02690
02691 subroutine psmile_bbcells_2d_real ( &
02692 coords, coords_shape, sub_range, &
02693 corner_shape, &
02694 chmin, chmax, midp, levdim, &
02695 period, ierror)
02696 Use psmile_common
02697 Integer, Intent (In) :: coords_shape (2, ndim_2d)
02698 Integer, Intent (In) :: sub_range (2, ndim_2d)
02699 Integer, Intent (In) :: corner_shape (2, ndim_2d)
02700 Real, Intent (In) ::
02701 coords(coords_shape(1,1):coords_shape(2,1),
02702 coords_shape(1,2):coords_shape(2,2))
02703 Integer, Intent (In) :: levdim (ndim_2d)
02704 Real, Intent (In) :: period
02705 Real, Intent (Out) ::
02706 chmin (sub_range(1,1)-1:sub_range(2,1),
02707 sub_range(1,2)-1:sub_range(2,2))
02708 Real, Intent (Out) ::
02709 chmax (sub_range(1,1)-1:sub_range(2,1),
02710 sub_range(1,2)-1:sub_range(2,2))
02711 Real, Intent (Out) ::
02712 midp (sub_range(1,1)-1:sub_range(2,1),
02713 sub_range(1,2)-1:sub_range(2,2))
02714 Integer, Intent (Out) :: ierror
02715 End Subroutine
02716
02717 subroutine psmile_bbcells_virt_2d_real (method_id, &
02718 coords1, coords2, coords_shape, coords_range, &
02719 corners1, corners2, corner_shape, nbr_corners, &
02720 chmin1_corner, chmin2_corner, &
02721 chmax1_corner, chmax2_corner, levdim_corner, &
02722 chmin1, chmin2, chmax1, chmax2, midp1, midp2, &
02723 levdim, period, bmaski, bmaskj, ierror)
02724 Use PSMILe_common
02725 Integer, Intent (In) :: method_id, nbr_corners
02726 Integer, Intent (In) :: coords_shape (2, ndim_2d)
02727 Integer, Intent (In) :: coords_range (2, ndim_2d)
02728 Integer, Intent (In) :: corner_shape (2, ndim_2d)
02729 Integer, Intent (In) :: levdim_corner (2, ndim_2d)
02730 Integer, Intent (In) :: levdim (ndim_2d)
02731 Real, Intent (In) :: period
02732 Real, Intent (InOut) ::
02733 coords1(coords_shape(1,1):coords_shape(2,1),
02734 coords_shape(1,2):coords_shape(2,2))
02735 Real, Intent (InOut) ::
02736 coords2(coords_shape(1,1):coords_shape(2,1),
02737 coords_shape(1,2):coords_shape(2,2))
02738 Real, Intent (In) ::
02739 corners1 (corner_shape(1,1):corner_shape(2,1),
02740 corner_shape(1,2):corner_shape(2,2),
02741 nbr_corners)
02742 Real, Intent (In) ::
02743 corners2 (corner_shape(1,1):corner_shape(2,1),
02744 corner_shape(1,2):corner_shape(2,2),
02745 nbr_corners)
02746 Real, Intent (In) ::
02747 chmin1_corner (levdim_corner(1,1):levdim_corner(2,1),
02748 levdim_corner(1,2):levdim_corner(2,2))
02749 Real, Intent (In) ::
02750 chmin2_corner (levdim_corner(1,1):levdim_corner(2,1),
02751 levdim_corner(1,2):levdim_corner(2,2))
02752 Real, Intent (In) ::
02753 chmax1_corner (levdim_corner(1,1):levdim_corner(2,1),
02754 levdim_corner(1,2):levdim_corner(2,2))
02755 Real, Intent (In) ::
02756 chmax2_corner (levdim_corner(1,1):levdim_corner(2,1),
02757 levdim_corner(1,2):levdim_corner(2,2))
02758 Real, Intent (InOut) ::
02759 chmin1 (coords_range(1,1)-1:coords_range(2,1),
02760 coords_range(1,2)-1:coords_range(2,2))
02761 Real, Intent (InOut) ::
02762 chmin2 (coords_range(1,1)-1:coords_range(2,1),
02763 coords_range(1,2)-1:coords_range(2,2))
02764 Real, Intent (InOut) ::
02765 chmax1 (coords_range(1,1)-1:coords_range(2,1),
02766 coords_range(1,2)-1:coords_range(2,2))
02767 Real, Intent (InOut) ::
02768 chmax2 (coords_range(1,1)-1:coords_range(2,1),
02769 coords_range(1,2)-1:coords_range(2,2))
02770 Real, Intent (InOut) ::
02771 midp1 (coords_range(1,1)-1:coords_range(2,1),
02772 coords_range(1,2)-1:coords_range(2,2))
02773 Real, Intent (InOut) ::
02774 midp2 (coords_range(1,1)-1:coords_range(2,1),
02775 coords_range(1,2)-1:coords_range(2,2))
02776 Integer, Intent (Out) ::
02777 bmaski (coords_range(1,1)-1:coords_range(2,1)+1, 2)
02778 Integer, Intent (Out) ::
02779 bmaskj (coords_range(1,2)-1:coords_range(2,2)+1, 2)
02780 Integer, Intent (Out) :: ierror
02781 End Subroutine
02782
02783 subroutine psmile_bbcells_3d_real (method_id, array, shape, range, &
02784 corners, corner_shape, nbr_corners, &
02785 chmin, chmax, midp, levdim, cyclic, &
02786 period, ierror)
02787 Use PSMILe_common
02788 Integer, Intent (In) :: method_id
02789 Integer, Intent (In) :: shape (2, ndim_3d)
02790 Integer, Intent (In) :: range (2, ndim_3d)
02791 Integer, Intent (In) :: corner_shape (2, ndim_3d), nbr_corners
02792 Real, Intent (In) :: array(shape(1,1):shape(2,1),
02793 shape(1,2):shape(2,2),
02794 shape(1,3):shape(2,3))
02795 Integer, Intent (In) :: levdim (ndim_3d)
02796 Real, Intent (In) :: corners (corner_shape(1,1):
02797 corner_shape(2,1),
02798 corner_shape(1,2):
02799 corner_shape(2,2),
02800 corner_shape(1,3):
02801 corner_shape(2,3),
02802 nbr_corners)
02803 Logical, Intent (In) :: cyclic
02804 Real, Intent (In) :: period
02805 Real, Intent (Out) :: chmin (range(1,1)-1:range(2,1),
02806 range(1,2)-1:range(2,2),
02807 range(1,3)-1:range(2,3))
02808 Real, Intent (Out) :: chmax (range(1,1)-1:range(2,1),
02809 range(1,2)-1:range(2,2),
02810 range(1,3)-1:range(2,3))
02811 Real, Intent (Out) :: midp (range(1,1)-1:range(2,1),
02812 range(1,2)-1:range(2,2),
02813 range(1,3)-1:range(2,3))
02814 Integer, Intent (Out) :: ierror
02815 End Subroutine
02816
02817 subroutine psmile_bbcells_gauss2_real (array_x, array_y, &
02818 shape, range, nbr_lats, &
02819 points_per_lat, corners_y, &
02820 corner_shape, nbr_corners, &
02821 chmin_x, chmax_x, midp_x, &
02822 chmin_y, chmax_y, midp_y, &
02823 nbrs, levdim, ierror )
02824
02825 Integer, Intent (In) :: shape (2)
02826 Real, Intent (In) :: array_x(shape(1):shape(2))
02827 Real, Intent (In) :: array_y(shape(1):shape(2))
02828 Integer, Intent (In) :: range (2)
02829 Integer, Intent (In) :: corner_shape (2)
02830 Integer, Intent (In) :: nbr_lats
02831 Integer, Intent (In) :: points_per_lat(nbr_lats,1)
02832 Integer, Intent (In) :: nbr_corners
02833 Real, Intent (In) :: corners_y (corner_shape(1):corner_shape(2),
02834 nbr_corners)
02835 Integer, Intent (In) :: levdim(1)
02836 Real, Intent (Out) :: chmin_x (range(1)-1:range(2))
02837 Real, Intent (Out) :: chmax_x (range(1)-1:range(2))
02838 Real, Intent (Out) :: midp_x (range(1)-1:range(2))
02839 Real, Intent (Out) :: chmin_y (range(1)-1:range(2))
02840 Real, Intent (Out) :: chmax_y (range(1)-1:range(2))
02841 Real, Intent (Out) :: midp_y (range(1)-1:range(2))
02842 Integer, Intent (Out) :: nbrs (range(2)-range(1)+1,4)
02843 Integer, Intent (Out) :: ierror
02844 End Subroutine
02845
02846 subroutine psmile_bbcells_pole_dble ( &
02847 coords_shape, coords_x, coords_y, &
02848 corner_shape, sub_range, &
02849 chmin_x, chmax_x, chmin_y, chmax_y, &
02850 midp_x, midp_y, pole_array, period, &
02851 ierror)
02852 use psmile_common, only : ndim_2d, ndim_3d
02853 integer, intent (in) :: coords_shape (2, ndim_2d)
02854 double precision, intent (in) ::
02855 coords_x(coords_shape(1,1):coords_shape(2,1),
02856 coords_shape(1,2):coords_shape(2,2)),
02857 coords_y(coords_shape(1,1):coords_shape(2,1),
02858 coords_shape(1,2):coords_shape(2,2))
02859 integer, intent (in) :: corner_shape (2, ndim_3d)
02860 integer, intent (in) :: sub_range (2, ndim_2d)
02861 integer, intent (in) :: pole_array(:)
02862 double precision, intent (in) :: period
02863 double precision, intent (inout) :: chmin_x (sub_range(1,1)-1:sub_range(2,1),
02864 sub_range(1,2)-1:sub_range(2,2))
02865 double precision, intent (inout) :: chmax_x (sub_range(1,1)-1:sub_range(2,1),
02866 sub_range(1,2)-1:sub_range(2,2))
02867 double precision, intent (inout) :: chmin_y (sub_range(1,1)-1:sub_range(2,1),
02868 sub_range(1,2)-1:sub_range(2,2))
02869 double precision, intent (inout) :: chmax_y (sub_range(1,1)-1:sub_range(2,1),
02870 sub_range(1,2)-1:sub_range(2,2))
02871 double precision, intent (inout) :: midp_x(sub_range(1,1)-1:sub_range(2,1),
02872 sub_range(1,2)-1:sub_range(2,2))
02873 double precision, intent (inout) :: midp_y(sub_range(1,1)-1:sub_range(2,1),
02874 sub_range(1,2)-1:sub_range(2,2))
02875 integer, intent (out) :: ierror
02876 end subroutine psmile_bbcells_pole_dble
02877
02878 subroutine psmile_bbcells_pole_real ( &
02879 coords_shape, coords_x, coords_y, &
02880 corner_shape, sub_range, &
02881 chmin_x, chmax_x, chmin_y, chmax_y, &
02882 midp_x, midp_y, pole_array, period, &
02883 ierror)
02884 use psmile_common, only : ndim_2d, ndim_3d
02885 integer, intent (in) :: coords_shape (2, ndim_2d)
02886 real, intent (in) ::
02887 coords_x(coords_shape(1,1):coords_shape(2,1),
02888 coords_shape(1,2):coords_shape(2,2)),
02889 coords_y(coords_shape(1,1):coords_shape(2,1),
02890 coords_shape(1,2):coords_shape(2,2))
02891 integer, intent (in) :: corner_shape (2, ndim_3d)
02892 integer, intent (in) :: sub_range (2, ndim_2d)
02893 integer, intent (in) :: pole_array(:)
02894 real, intent (in) :: period
02895 real, intent (inout) :: chmin_x (sub_range(1,1)-1:sub_range(2,1),
02896 sub_range(1,2)-1:sub_range(2,2))
02897 real, intent (inout) :: chmax_x (sub_range(1,1)-1:sub_range(2,1),
02898 sub_range(1,2)-1:sub_range(2,2))
02899 real, intent (inout) :: chmin_y (sub_range(1,1)-1:sub_range(2,1),
02900 sub_range(1,2)-1:sub_range(2,2))
02901 real, intent (inout) :: chmax_y (sub_range(1,1)-1:sub_range(2,1),
02902 sub_range(1,2)-1:sub_range(2,2))
02903 real, intent (inout) :: midp_x(sub_range(1,1)-1:sub_range(2,1),
02904 sub_range(1,2)-1:sub_range(2,2))
02905 real, intent (inout) :: midp_y(sub_range(1,1)-1:sub_range(2,1),
02906 sub_range(1,2)-1:sub_range(2,2))
02907 integer, intent (out) :: ierror
02908 end subroutine psmile_bbcells_pole_real
02909
02910 subroutine psmile_celltest_real ( grid_id, range, sense, ierror )
02911 Use PSMILe_common
02912 Integer, Intent (In) :: grid_id
02913 Integer, Intent (In) :: range(2,ndim_2d)
02914 Integer, Intent (Out) :: sense
02915 Integer, Intent (Out) :: ierror
02916 End Subroutine
02917
02918 subroutine psmile_ccompact_gauss2_real ( send_info, &
02919 grid_valid_shape, shape, nb_corners, &
02920 array_x, array_y, array_z, &
02921 extra_search, dest_size, nbr_cells_tot, &
02922 source_cell_index, &
02923 neighcells, dest_x, dest_y, dest_z, ierror )
02924
02925 USE PSMILe_Common
02926
02927 Type (Send_information), Intent (InOut) :: send_info
02928 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
02929 Integer, Intent (In) :: shape (2, ndim_3d)
02930 Integer, Intent (In) :: nb_corners
02931 Real, Intent (In) :: array_x ( shape(1,1):shape(2,1),
02932 nb_corners )
02933 Real, Intent (In) :: array_y ( shape(1,1):shape(2,1),
02934 nb_corners )
02935 Real, Intent (In) :: array_z ( shape(1,3):shape(2,3) )
02936 Integer, Intent (In) :: dest_size
02937 Integer, Intent (In) :: nbr_cells_tot
02938 Type (Extra_search_info), Intent (InOut) :: extra_search
02939 Integer, Intent (InOut) :: source_cell_index (nbr_cells_tot)
02940 Integer, Intent (InOut) :: neighcells (nbr_cells_tot, nb_corners)
02941 Real, Intent (Out) :: dest_x (2*dest_size)
02942 Real, Intent (Out) :: dest_y (2*dest_size)
02943 Real, Intent (Out) :: dest_z (2*dest_size)
02944 Integer, Intent (Out) :: ierror
02945 End Subroutine
02946
02947 subroutine psmile_ccompact_irreg2_real ( send_info, &
02948 grid_valid_shape, shape, nb_corners, &
02949 array_x, array_y, array_z, &
02950 extra_search, dest_size, nbr_cells_tot, &
02951 source_cell_index, &
02952 neighcells, dest_x, dest_y, dest_z, ierror )
02953
02954 USE PSMILe_Common
02955
02956 Type (Send_information), Intent (InOut) :: send_info
02957 Type (Extra_search_info), Intent (InOut) :: extra_search
02958
02959 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
02960 Integer, Intent (In) :: shape (2, ndim_3d)
02961 Integer, Intent (In) :: nb_corners
02962 Real, Intent (In) :: array_x ( shape(1,1):shape(2,1),
02963 shape(1,2):shape(2,2),
02964 nb_corners )
02965 Real, Intent (In) :: array_y ( shape(1,1):shape(2,1),
02966 shape(1,2):shape(2,2),
02967 nb_corners )
02968 Real, Intent (In) :: array_z ( shape(1,3):shape(2,3) )
02969 Integer, Intent (In) :: dest_size
02970 Integer, Intent (In) :: nbr_cells_tot
02971 Integer, Intent (InOut) :: source_cell_index (nbr_cells_tot)
02972 Integer, Intent (InOut) :: neighcells(nbr_cells_tot, nb_corners)
02973 Real, Intent (Out) :: dest_x (dest_size)
02974 Real, Intent (Out) :: dest_y (dest_size)
02975 Real, Intent (Out) :: dest_z (dest_size)
02976 Integer, Intent (Out) :: ierror
02977 End Subroutine
02978
02979 subroutine psmile_ccompact_3d_reg_real ( send_info, &
02980 grid_valid_shape, shape, nb_corners, &
02981 array_x, array_y, array_z, &
02982 extra_search, dest_size, nbr_cells_tot, &
02983 source_cell_index, &
02984 neighcells, dest_x, dest_y, dest_z, ierror )
02985
02986 USE PSMILe_Common
02987
02988 Type (Send_information), Intent (InOut) :: send_info
02989 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
02990 Integer, Intent (In) :: shape (2, ndim_3d)
02991 Integer, Intent (In) :: nb_corners
02992 Real, Intent (In) :: array_x ( shape(1,1):shape(2,1),
02993 nb_corners )
02994 Real, Intent (In) :: array_y ( shape(1,2):shape(2,2),
02995 nb_corners )
02996 Real, Intent (In) :: array_z ( shape(1,3):shape(2,3) )
02997 Type (Extra_search_info), Intent (InOut) :: extra_search
02998 Integer, Intent (In) :: dest_size
02999 Integer, Intent (In) :: nbr_cells_tot
03000 Integer, Intent (InOut) :: source_cell_index (nbr_cells_tot)
03001 Real, Intent (Out) :: dest_x (dest_size)
03002 Real, Intent (Out) :: dest_y (dest_size)
03003 Real, Intent (Out) :: dest_z (dest_size)
03004 Integer, Intent (InOut) :: neighcells (nbr_cells_tot, nb_corners)
03005 Integer, Intent (Out) :: ierror
03006 End Subroutine
03007
03008 subroutine psmile_control_cell_2d_real (grid_id, &
03009 ic, nc, icdim1, list, j, k, &
03010 coords1, coords2, shape, &
03011 corners1, corners2, corner_shape, nbr_corners, &
03012 tol, fnd, ierror)
03013 Use PSMILe_common
03014
03015 Integer, Intent (In) :: grid_id, nc, icdim1
03016 Integer, Intent (In) :: ic (icdim1, ndim_2d)
03017 Integer, Intent (In) :: list (nc), j, k
03018 Integer, Intent (In) :: shape (2, ndim_3d)
03019 Real, Intent (In) :: coords1 (shape(1,1):shape(2,1),
03020 shape(1,2):shape(2,2),
03021 shape(1,3):shape(2,3))
03022 Real, Intent (In) :: coords2 (shape(1,1):shape(2,1),
03023 shape(1,2):shape(2,2),
03024 shape(1,3):shape(2,3))
03025 Integer, Intent (In) :: corner_shape (2, ndim_2d)
03026 Integer, Intent (In) :: nbr_corners
03027 Real, Intent (In) ::
03028 corners1 ( corner_shape(1,1):corner_shape(2,1),
03029 corner_shape(1,2):corner_shape(2,2), nbr_corners)
03030 Real, Intent (In) ::
03031 corners2 ( corner_shape(1,1):corner_shape(2,1),
03032 corner_shape(1,2):corner_shape(2,2), nbr_corners)
03033 Real, Intent (In) :: tol
03034 Logical, Intent (Out) :: fnd (nc)
03035 Integer, Intent (Out) :: ierror
03036 End Subroutine
03037
03038 subroutine psmile_control_cell_gauss2_real (grid_id, &
03039 ic, nc, list, j, k, &
03040 coords1, coords2, shape, &
03041 corners1, corners2, corner_shape, nbr_corners, &
03042 tol, fnd, ierror)
03043 Use PSMILe_common
03044
03045 Integer, Intent (In) :: grid_id, nc
03046 Integer, Intent (In) :: ic (nc)
03047 Integer, Intent (In) :: list (nc), j, k
03048 Integer, Intent (In) :: shape (2, ndim_3d)
03049 Real, Intent (In) ::
03050 coords1 (shape(1,1):shape(2,1), shape(1,2):shape(2,2),
03051 shape(1,3):shape(2,3))
03052 Real, Intent (In) ::
03053 coords2 (shape(1,1):shape(2,1), shape(1,2):shape(2,2),
03054 shape(1,3):shape(2,3))
03055 Integer, Intent (In) :: corner_shape (2, ndim_2d)
03056 Integer, Intent (In) :: nbr_corners
03057 Real, Intent (In) ::
03058 corners1 ( corner_shape(1,1):corner_shape(2,1),
03059 corner_shape(1,2):corner_shape(2,2), nbr_corners)
03060 Real, Intent (In) ::
03061 corners2 ( corner_shape(1,1):corner_shape(2,1),
03062 corner_shape(1,2):corner_shape(2,2), nbr_corners)
03063 Real, Intent (In) :: tol
03064 Logical, Intent (Out) :: fnd (nc)
03065 Integer, Intent (Out) :: ierror
03066 End Subroutine
03067
03068 subroutine psmile_ext_compact_irreg2_real (send_info, array, shape, &
03069 grid_valid_shape, &
03070 dest_vector, dest_size, ierror)
03071 Use PSMILe_common
03072 Type(Send_information), Intent(InOut) :: send_info
03073 Real, Intent (In) :: array (*)
03074 Integer, Intent (In) :: shape (2, ndim_2d)
03075 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
03076 Integer, Intent (In) :: dest_size
03077 Real, Intent (Out) :: dest_vector (dest_size)
03078 Integer, Intent (Out) :: ierror
03079 End Subroutine
03080
03081 subroutine psmile_ext_compact_list_3d_real (send_info, array, shape, &
03082 grid_valid_shape, &
03083 dest_vector, dest_size, ierror)
03084 Use PSMILe_common
03085 Type(Send_information), Intent(In) :: send_info
03086 Real, Intent (In) :: array (*)
03087 Integer, Intent (In) :: shape (2, ndim_3d)
03088 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
03089 Integer, Intent (In) :: dest_size
03090 Real, Intent (Out) :: dest_vector (dest_size)
03091 Integer, Intent (Out) :: ierror
03092 End Subroutine
03093
03094 subroutine psmile_put_compact_list_3d_real (source_list, dstijk, nloc, &
03095 array, shape, nbr_fields, &
03096 ierror)
03097 Use PSMILe_common
03098 Real, Intent (InOut) :: array (*)
03099 Integer, Intent (In) :: shape (2, ndim_3d)
03100 Integer, Intent (In) :: nloc, nbr_fields
03101 Integer, Intent (In) :: dstijk (ndim_3d, nbr_fields)
03102 Real, Intent (In) :: source_list (nloc, nbr_fields)
03103 Integer, Intent (Out) :: ierror
03104 End Subroutine
03105
03106 subroutine psmile_extract_indices_2d_real (array, shape, &
03107 dstijk, ncpl, &
03108 dest_vector, ierror)
03109 Use PSMILe_common
03110 Real, Intent (In) :: array (*)
03111 Integer, Intent (In) :: shape (2, ndim_2d)
03112 Integer, Intent (In) :: ncpl
03113 Integer, Intent (In) :: dstijk (ndim_3d, ncpl)
03114 Real, Intent (Out) :: dest_vector (ncpl)
03115 Integer, Intent (Out) :: ierror
03116 End Subroutine
03117
03118 subroutine psmile_extract_indices_3d_real (array, shape, &
03119 dstijk, ncpl, &
03120 dest_vector, ierror)
03121 Use PSMILe_common
03122 Real, Intent (In) :: array (*)
03123 Integer, Intent (In) :: shape (2, ndim_3d)
03124 Integer, Intent (In) :: ncpl
03125 Integer, Intent (In) :: dstijk (ndim_3d, ncpl)
03126 Real, Intent (Out) :: dest_vector (ncpl)
03127 Integer, Intent (Out) :: ierror
03128 End Subroutine
03129
03130 subroutine psmile_extent_subgrid_1d_real ( &
03131 array, idlow, idhigh, nbr_corners, &
03132 ibeg, iend, &
03133 extent, ierror)
03134 Integer, Intent (In) :: idlow, idhigh, nbr_corners
03135 Integer, Intent (In) :: ibeg, iend
03136 Real, Intent (In) :: array (idlow:idhigh, nbr_corners)
03137 Real, Intent (Out) :: extent (2)
03138 Integer, Intent (Out) :: ierror
03139 End Subroutine
03140
03141 subroutine psmile_extent_subgrid_2d_real ( &
03142 array, idlow, idhigh, jdlow, jdhigh, nbr_corners, &
03143 ibeg, iend, jbeg, jend, &
03144 extent, ierror)
03145 Integer, Intent (In) :: idlow, idhigh
03146 Integer, Intent (In) :: jdlow, jdhigh, nbr_corners
03147 Integer, Intent (In) :: ibeg, iend, jbeg, jend
03148 Real, Intent (In) :: array (idlow:idhigh,
03149 jdlow:jdhigh, nbr_corners)
03150 Real, Intent (Out) :: extent (2)
03151 Integer, Intent (Out) :: ierror
03152 End Subroutine
03153
03154 subroutine psmile_extent_subgrid_3d_real ( &
03155 array, idlow, idhigh, jdlow, jdhigh, &
03156 kdlow, kdhigh, nbr_corners, &
03157 grid_shape, &
03158 extent, ierror)
03159 Use PSMILe_common
03160 Integer, Intent (In) :: idlow, idhigh, jdlow, jdhigh
03161 Integer, Intent (In) :: kdlow, kdhigh, nbr_corners
03162 Integer, Intent (In) :: grid_shape (2, ndim_3d)
03163 Real, Intent (In) :: array (idlow:idhigh, jdlow:jdhigh,
03164 kdlow:kdhigh, nbr_corners)
03165 Real, Intent (Out) :: extent (2)
03166 Integer, Intent (Out) :: ierror
03167 End Subroutine
03168
03169 subroutine psmile_gauss_setup_real (grid_id, counts, displs, ierror)
03170 Integer, Intent (In) :: grid_id
03171 Integer, Intent (In) :: counts (*)
03172 Integer, Intent (In) :: displs (*)
03173 Integer, Intent (Out) :: ierror
03174 End Subroutine PSMILe_gauss_setup_real
03175
03176 subroutine psmile_generate_1d_3d_real ( &
03177 vector1, vector2, vector3, shape, &
03178 dest_array, dest_shape, &
03179 grid_valid_shape, ierror)
03180 Use PSMILe_common
03181
03182 Real, Intent (In) :: vector1 (*)
03183 Real, Intent (In) :: vector2 (*)
03184 Real, Intent (In) :: vector3 (*)
03185 Integer, Intent (In) :: shape (2, ndim_3d)
03186 Integer, Intent (In) :: dest_shape (2, ndim_3d)
03187 Real, Intent (Out) :: dest_array (
03188 dest_shape(1,1):dest_shape(2,1),
03189 dest_shape(1,2):dest_shape(2,2),
03190 dest_shape(1,3):dest_shape(2,3))
03191 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
03192 Integer, Intent (Out) :: ierror
03193 End Subroutine
03194
03195 subroutine psmile_get_cyclic_dir_3d_real ( &
03196 chmin, chmin2, chmin3, &
03197 chmax, chmax2, chmax3, levdim, &
03198 corners, corners2, corners3, &
03199 corner_shape, nbr_corners, &
03200 grid_valid_shape, &
03201 len_cyclic, rtol, index, cyclic, ierror)
03202 Use PSMILe_common
03203
03204 Real, Intent (In) :: chmin (*)
03205 Real, Intent (In) :: chmax (*)
03206 Real, Intent (In) :: chmin2 (*)
03207 Real, Intent (In) :: chmax2 (*)
03208 Real, Intent (In) :: chmin3 (*)
03209 Real, Intent (In) :: chmax3 (*)
03210 Integer, Intent (In) :: levdim (ndim_3d)
03211 Real, Intent (In) :: corners (*)
03212 Real, Intent (In) :: corners2 (*)
03213 Real, Intent (In) :: corners3 (*)
03214 Integer, Intent (In) :: corner_shape (2, ndim_3d)
03215 Integer, Intent (In) :: nbr_corners
03216 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
03217 Real, Intent (In) :: len_cyclic, rtol
03218 Integer, Intent (In) :: index
03219 Logical, Intent (Out) :: cyclic
03220 Integer, Intent (Out) :: ierror
03221 End Subroutine
03222
03223 subroutine psmile_get_faces_3d_real (search, extra_search, &
03224 corners1, corners2, corners3, &
03225 corner_shape, nbr_corners, grid_valid_shape, &
03226 neighbors_3d, nloc, num_neigh, &
03227 faces, n_faces, nreq, ierror)
03228 Use PSMILe_common
03229
03230 Type (Enddef_search), Intent (In) :: search
03231 Type (Extra_search_info), Intent (In) :: extra_search
03232 Integer, Intent (In) :: nbr_corners, nloc, num_neigh
03233 Integer, Intent (In) :: nreq
03234 Integer, Intent (In) :: corner_shape (2, ndim_3d)
03235 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
03236 Real, Intent (In) ::
03237 corners1 ( corner_shape(1,1):corner_shape(2,1),
03238 corner_shape(1,2):corner_shape(2,2),
03239 corner_shape(1,3):corner_shape(2,3), nbr_corners)
03240 Real, Intent (In) ::
03241 corners2 ( corner_shape(1,1):corner_shape(2,1),
03242 corner_shape(1,2):corner_shape(2,2),
03243 corner_shape(1,3):corner_shape(2,3), nbr_corners)
03244 Real, Intent (In) ::
03245 corners3 ( corner_shape(1,1):corner_shape(2,1),
03246 corner_shape(1,2):corner_shape(2,2),
03247 corner_shape(1,3):corner_shape(2,3), nbr_corners)
03248 Integer, Intent (In) ::
03249 neighbors_3d (ndim_3d, nloc, num_neigh)
03250
03251 Real, Intent (Out) :: faces (2, ndim_3d, nreq)
03252 Integer, Intent (Out) :: n_faces (nreq)
03253 Integer, Intent (Out) :: ierror
03254 End Subroutine
03255
03256 subroutine psmile_get_faces_3d_reg_real (search, extra_search, &
03257 corners1, corners2, corners3, &
03258 corner_shape, nbr_corners, grid_valid_shape, &
03259 neighbors_3d, nloc, num_neigh, &
03260 faces, n_faces, nreq, ierror)
03261 Use PSMILe_common
03262
03263 Type (Enddef_search), Intent (In) :: search
03264 Type (Extra_search_info), Intent (In) :: extra_search
03265 Integer, Intent (In) :: nbr_corners, nloc, num_neigh
03266 Integer, Intent (In) :: nreq
03267 Integer, Intent (In) :: corner_shape (2, ndim_3d)
03268 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
03269 Real, Intent (In) ::
03270 corners1 ( corner_shape(1,1):corner_shape(2,1), 2)
03271 Real, Intent (In) ::
03272 corners2 ( corner_shape(1,2):corner_shape(2,2), 2)
03273 Real, Intent (In) ::
03274 corners3 ( corner_shape(1,3):corner_shape(2,3), 2)
03275 Integer, Intent (In) ::
03276 neighbors_3d (ndim_3d, nloc, num_neigh)
03277
03278 Real, Intent (Out) :: faces (2, ndim_3d, nreq)
03279 Integer, Intent (Out) :: n_faces (nreq)
03280 Integer, Intent (Out) :: ierror
03281 End Subroutine
03282
03283 subroutine psmile_get_faces_gauss2_real (search, extra_search, &
03284 corners1, corners2, corners3, &
03285 corner_shape, nbr_corners, grid_valid_shape, &
03286 neighbors_3d, nloc, num_neigh, &
03287 faces, nreq, ierror)
03288
03289 Use PSMILe_common
03290
03291 Type (Enddef_search), Intent (In) :: search
03292 Type (Extra_search_info), Intent (In) :: extra_search
03293 Integer, Intent (In) :: nbr_corners, nloc, num_neigh
03294 Integer, Intent (In) :: nreq
03295 Integer, Intent (In) :: corner_shape (2, ndim_3d)
03296 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
03297 Real, Intent (In) ::
03298 corners1 ( corner_shape(1,1):corner_shape(2,1), 2 )
03299 Real, Intent (In) ::
03300 corners2 ( corner_shape(1,1):corner_shape(2,1), 2 )
03301 Real, Intent (In) ::
03302 corners3 ( corner_shape(1,3):corner_shape(2,3), 2 )
03303 Integer, Intent (In) ::
03304 neighbors_3d (ndim_3d, nloc, num_neigh)
03305
03306 Real, Intent (Out) :: faces (2, ndim_3d, nreq)
03307 Integer, Intent (Out) :: ierror
03308 End Subroutine
03309
03310 subroutine psmile_get_faces_irreg2_real (search, extra_search, &
03311 corners1, corners2, corners3, &
03312 corner_shape, nbr_corners, grid_valid_shape, &
03313 neighbors_3d, nloc, num_neigh, &
03314 faces, n_faces, nreq, ierror)
03315 Use PSMILe_common
03316
03317 Type (Enddef_search), Intent (In) :: search
03318 Type (Extra_search_info), Intent (In) :: extra_search
03319 Integer, Intent (In) :: nbr_corners, nloc, num_neigh
03320 Integer, Intent (In) :: nreq
03321 Integer, Intent (In) :: corner_shape (2, ndim_3d)
03322 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
03323 Real, Intent (In) ::
03324 corners1 ( corner_shape(1,1):corner_shape(2,1),
03325 corner_shape(1,2):corner_shape(2,2), nbr_corners/2)
03326 Real, Intent (In) ::
03327 corners2 ( corner_shape(1,1):corner_shape(2,1),
03328 corner_shape(1,2):corner_shape(2,2), nbr_corners/2)
03329 Real, Intent (In) ::
03330 corners3 ( corner_shape(1,3):corner_shape(2,3), 2)
03331 Integer, Intent (In) ::
03332 neighbors_3d (ndim_3d, nloc, num_neigh)
03333
03334 Real, Intent (Out) :: faces (2, ndim_3d, nreq)
03335 Integer, Intent (Out) :: n_faces (nreq)
03336 Integer, Intent (Out) :: ierror
03337 End Subroutine
03338
03339 subroutine psmile_get_grid_extent_real (grid_id, extent, ierror)
03340 Use PSMILe_common
03341 Integer, Intent (In) :: grid_id
03342 Real (PSMILe_float_kind), Intent (Out) :: extent (2, ndim_3d)
03343 Integer, Intent (Out) :: ierror
03344 End Subroutine
03345
03346 subroutine psmile_global_search_nnx_real (comp_info, &
03347 search, var_id, &
03348 tgt_coords_x, tgt_coords_y, tgt_coords_z, &
03349 neighbors_3d, nloc, num_neigh, nb_extra, &
03350 extra_search, send_index, &
03351 ierror)
03352 Use PSMILe_common
03353
03354 Type (Enddef_comp), Intent (In) :: comp_info
03355 Type (Enddef_search), Intent (InOut) :: search
03356 Integer, Intent (In) :: var_id
03357 Integer, Intent (In) :: send_index
03358 Integer, Intent (In) :: nb_extra, nloc, num_neigh
03359 Real, Intent (In) :: tgt_coords_x (nloc)
03360 Real, Intent (In) :: tgt_coords_y (nloc)
03361 Real, Intent (In) :: tgt_coords_z (nloc)
03362 Integer, Intent (InOut) ::
03363 neighbors_3d (ndim_3d, nloc, num_neigh)
03364 Type (Extra_search_info), Intent (InOut) :: extra_search
03365 Integer, Intent (Out) :: ierror
03366 End Subroutine
03367
03368 subroutine psmile_global_search_real (comp_info, &
03369 control, len_cpl, var_id, grid_valid_shape, &
03370 search, tgt_coords, &
03371 neighbors_3d, nloc, num_neigh, extra_search, &
03372 interpolation_methods, interpolation_search, n_intmethods, &
03373 send_index, &
03374 mask_available, use_mask, use_how, &
03375 grid_type, ierror)
03376 Use PSMILe_common
03377
03378 Type (Enddef_comp), Intent (In) :: comp_info
03379 Type (Enddef_search), Intent (InOut) :: search
03380 Type (real_vector), Intent (In) :: tgt_coords (ndim_3d)
03381 Integer, Intent (In) :: control (2, ndim_3d,
03382 search%npart)
03383 Integer, Intent (In) :: len_cpl (search%npart)
03384 Integer, Intent (In) :: var_id
03385 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
03386 Integer, Intent (In) :: send_index
03387 Integer, Intent (In) :: nloc, num_neigh
03388 Integer, Intent (In) :: n_intmethods
03389 Integer, Intent (In) :: interpolation_methods (n_intmethods)
03390 Logical, Intent (In) :: interpolation_search (n_intmethods)
03391 Logical, Intent (In) :: mask_available, use_mask
03392 Integer, Intent (In) :: use_how
03393 Integer, Intent (In) :: grid_type
03394 Integer, Intent (InOut) :: neighbors_3d (ndim_3d, nloc,
03395 num_neigh)
03396 Type (Extra_search_info), Intent (InOut) :: extra_search
03397 Integer, Intent (Out) :: ierror
03398 End Subroutine
03399
03400 subroutine psmile_global_search_cell_real ( grid_id, var_id, &
03401 comp_info, send_info, search, extra_search, ncpl, &
03402 nbr_cells, n_intmethods, interpolation_methods, &
03403 interpolation_search, ierror )
03404 Use PSMILe_common
03405
03406 Integer, Intent (In) :: grid_id
03407 Integer, Intent (In) :: var_id
03408 Type (Enddef_comp), Intent (In) :: comp_info
03409 Type (Send_information), Intent (InOut) :: send_info
03410 Type (Enddef_search), Intent (InOut) :: search
03411 Type (Extra_search_info), Intent (InOut) :: extra_search
03412 Integer, Intent (In) :: ncpl
03413 Integer, Intent (InOut) :: nbr_cells(ncpl)
03414 Integer, Intent (In) :: n_intmethods
03415 Integer, Intent (In) :: interpolation_methods (n_intmethods)
03416 Logical, Intent (In) :: interpolation_search (n_intmethods)
03417 Integer, Intent (Out) :: ierror
03418 End Subroutine
03419
03420 subroutine psmile_return_extra_off_real (comp_info, search, var_id, &
03421 found, distance, nd_dist, nb_extra, ierror)
03422 Use PSMILe_common
03423
03424 Type (Enddef_comp), Intent (In) :: comp_info
03425 Type (Enddef_global_search), Intent (InOut) :: search
03426 Integer, Intent (In) :: var_id
03427 Integer, Intent (In) :: nd_dist, nb_extra
03428 Integer, Intent (In) :: found (nd_dist)
03429 Real, Intent (In) :: distance (nd_dist,
03430 nb_extra)
03431
03432 Integer, Intent (Out) :: ierror
03433 End Subroutine
03434
03435 subroutine psmile_sel_grid_range_real (grid_id, dinter, inter, ierror)
03436 Use PSMILe_common
03437 Integer, Intent (In) :: grid_id
03438 Real (PSMILe_float_kind), Intent (In) :: dinter (2, ndim_3d)
03439 Integer, Intent (Out) :: inter (2, ndim_3d)
03440 Integer, Intent (Out) :: ierror
03441 End Subroutine
03442
03443 subroutine psmile_range_subgrid_1d_real ( &
03444 array, idlow, idhigh, nbr_corners, &
03445 ibeg, iend, &
03446 extent, inter, ierror)
03447 Integer, Intent (In) :: idlow, idhigh, nbr_corners
03448 Integer, Intent (In) :: ibeg, iend
03449 Real, Intent (In) :: array (idlow:idhigh, nbr_corners)
03450 Real, Intent (In) :: extent (2)
03451 Integer, Intent (Out) :: inter (2)
03452 Integer, Intent (Out) :: ierror
03453 End Subroutine
03454
03455 subroutine psmile_range_subgrid_2d_real ( &
03456 array1, array2, &
03457 idlow, idhigh, jdlow, jdhigh, nbr_corners, &
03458 ibeg, iend, jbeg, jend, &
03459 extent, inter, ierror)
03460 Integer, Intent (In) :: idlow, idhigh
03461 Integer, Intent (In) :: jdlow, jdhigh, nbr_corners
03462 Integer, Intent (In) :: ibeg, iend, jbeg, jend
03463 Real, Intent (In) :: array1(idlow:idhigh,
03464 jdlow:jdhigh, nbr_corners)
03465 Real, Intent (In) :: array2(idlow:idhigh,
03466 jdlow:jdhigh, nbr_corners)
03467 Real, Intent (In) :: extent (2,2)
03468 Integer, Intent (Out) :: inter (2,2)
03469 Integer, Intent (Out) :: ierror
03470 End Subroutine
03471
03472 subroutine psmile_range_subgrid_3d_real ( &
03473 array1, array2, array3, &
03474 idlow, idhigh, jdlow, jdhigh, &
03475 kdlow, kdhigh, nbr_corners, &
03476 grid_shape, &
03477 rinter, inter, ierror)
03478 Use PSMILe_common
03479 Integer, Intent (In) :: idlow, idhigh, jdlow, jdhigh
03480 Integer, Intent (In) :: kdlow, kdhigh, nbr_corners
03481 Real, Intent (In) :: array1(idlow:idhigh, jdlow:jdhigh,
03482 kdlow:kdhigh, nbr_corners)
03483 Real, Intent (In) :: array2(idlow:idhigh, jdlow:jdhigh,
03484 kdlow:kdhigh, nbr_corners)
03485 Real, Intent (In) :: array3(idlow:idhigh, jdlow:jdhigh,
03486 kdlow:kdhigh, nbr_corners)
03487 Integer, Intent (In) :: grid_shape (2, ndim_3d)
03488 Real, Intent (In) :: rinter (2, ndim_3d)
03489 Integer, Intent (Out) :: inter (2, ndim_3d)
03490 Integer, Intent (Out) :: ierror
03491 End Subroutine
03492
03493 subroutine psmile_mg_ctrl_subgrid_1d_real ( &
03494 array, corner_shape, nbr_corners, &
03495 range, &
03496 chmin, chmax, levdim, period, &
03497 grid_id, ind, ierror)
03498 Integer, Intent (In) :: nbr_corners
03499 Integer, Intent (In) :: corner_shape (2)
03500 Integer, Intent (In) :: range (2)
03501 Integer, Intent (In) :: levdim
03502 Real, Intent (In) :: period
03503 Real, Intent (In) :: array(corner_shape(1):
03504 corner_shape(2),
03505 nbr_corners)
03506 Real, Intent (In) :: chmin (0:levdim)
03507 Real, Intent (In) :: chmax (0:levdim)
03508 Integer, Intent (In) :: grid_id, ind
03509 Integer, Intent (Out) :: ierror
03510 End Subroutine
03511
03512 subroutine psmile_mg_ctrl_subgrid_2d_real ( &
03513 array, corner_shape, nbr_corners, &
03514 range, &
03515 chmin, chmax, levdim, period, &
03516 grid_id, ind, ierror)
03517 Integer, Intent (In) :: nbr_corners
03518 Integer, Intent (In) :: corner_shape (2, 2)
03519 Integer, Intent (In) :: range (2, 2)
03520 Integer, Intent (In) :: levdim (2)
03521 Real, Intent (In) :: period
03522 Real, Intent (In) :: array(corner_shape(1,1):
03523 corner_shape(2,1),
03524 corner_shape(1,2):
03525 corner_shape(2,2),
03526 nbr_corners)
03527 Real, Intent (In) :: chmin (0:levdim(1), 0:levdim(2))
03528 Real, Intent (In) :: chmax (0:levdim(1), 0:levdim(2))
03529 Integer, Intent (In) :: grid_id, ind
03530 Integer, Intent (Out) :: ierror
03531 End Subroutine
03532
03533 subroutine psmile_mg_ctrl_subgrid_3d_real ( &
03534 array, corner_shape, nbr_corners, &
03535 range, &
03536 chmin, chmax, levdim, period, &
03537 grid_id, ind, ierror)
03538 Use PSMILe_common
03539 Integer, Intent (In) :: nbr_corners
03540 Integer, Intent (In) :: corner_shape (2, ndim_3d)
03541 Integer, Intent (In) :: range (2, ndim_3d)
03542 Integer, Intent (In) :: levdim (ndim_3d)
03543 Real, Intent (In) :: period
03544 Real, Intent (In) :: array(corner_shape(1,1):
03545 corner_shape(2,1),
03546 corner_shape(1,2):
03547 corner_shape(2,2),
03548 corner_shape(1,3):
03549 corner_shape(2,3),
03550 nbr_corners)
03551 Real, Intent (In) :: chmin (0:levdim(1), 0:levdim(2),
03552 0:levdim(3))
03553 Real, Intent (In) :: chmax (0:levdim(1), 0:levdim(2),
03554 0:levdim(3))
03555 Integer, Intent (In) :: grid_id, ind
03556 Integer, Intent (Out) :: ierror
03557 End Subroutine
03558
03559
03560 subroutine psmile_mg_first_level_real (grid_id, range, &
03561 mg_info, tol, simplified_grid, ierror)
03562 Use PSMILe_common
03563 Integer, Intent (In) :: grid_id
03564 Integer, Intent (In) :: range (2, ndim_3d)
03565 Type (Enddef_mg), Intent (InOut) :: mg_info
03566 Real (PSMILe_float_kind), Intent (In) :: tol
03567 Logical, Intent (In) :: simplified_grid
03568 Integer, Intent (Out) :: ierror
03569 End Subroutine
03570
03571 subroutine psmile_mg_first_subgrid_1d_real ( &
03572 array, idlow, idhigh, nbr_corners, &
03573 range, &
03574 chmin, chmax, midp, &
03575 levdim, ierror)
03576 Integer, Intent (In) :: idlow, idhigh, nbr_corners
03577 Integer, Intent (In) :: range (2)
03578 Integer, Intent (In) :: levdim
03579 Real, Intent (In) :: array (idlow:idhigh, nbr_corners)
03580 Real, Intent (Out) :: chmin (0:levdim)
03581 Real, Intent (Out) :: chmax (0:levdim)
03582 Real, Intent (Out) :: midp (0:levdim)
03583 Integer, Intent (Out) :: ierror
03584 End Subroutine
03585
03586 subroutine psmile_mg_first_subgrid_2d_real (array, &
03587 idlow, idhigh, jdlow, jdhigh, nbr_corners, &
03588 range, &
03589 chmin, chmax, midp, &
03590 levdim1, levdim2, ierror)
03591 Integer, Intent (In) :: idlow, idhigh, jdlow, jdhigh
03592 Integer, Intent (In) :: nbr_corners
03593 Integer, Intent (In) :: range (2, 2)
03594 Integer, Intent (In) :: levdim1, levdim2
03595 Real, Intent (In) :: array (idlow:idhigh, jdlow:jdhigh,
03596 nbr_corners)
03597 Real, Intent (Out) :: chmin (0:levdim1, 0:levdim2)
03598 Real, Intent (Out) :: chmax (0:levdim1, 0:levdim2)
03599 Real, Intent (Out) :: midp (0:levdim1, 0:levdim2)
03600 Integer, Intent (Out) :: ierror
03601 End Subroutine
03602
03603 subroutine psmile_mg_first_subgrid_3d_real (array, &
03604 idlow, idhigh, jdlow, jdhigh, kdlow, kdhigh, &
03605 nbr_corners, &
03606 range, &
03607 chmin, chmax, midp, &
03608 levdim1, levdim2, levdim3, ierror)
03609 Use PSMILe_common
03610 Integer, Intent (In) :: idlow, idhigh, jdlow, jdhigh, kdlow, kdhigh
03611 Integer, Intent (In) :: nbr_corners
03612 Real, Intent (In) :: array (idlow:idhigh, jdlow:jdhigh,
03613 kdlow:kdhigh, nbr_corners)
03614 Integer, Intent (In) :: range (2, ndim_3d)
03615 Integer, Intent (In) :: levdim1, levdim2, levdim3
03616 Real, Intent (Out) :: chmin (0:levdim1, 0:levdim2, 0:levdim3)
03617 Real, Intent (Out) :: chmax (0:levdim1, 0:levdim2, 0:levdim3)
03618 Real, Intent (Out) :: midp (0:levdim1, 0:levdim2, 0:levdim3)
03619 Integer, Intent (Out) :: ierror
03620 End Subroutine
03621
03622 subroutine psmile_mg_coars_level_real (grid_id, mg_info_fine, &
03623 mg_info_coarse, &
03624 icoarse, ierror)
03625 Use PSMILe_common
03626 Integer, Intent (In) :: grid_id
03627 Type (Enddef_mg), Intent (In) :: mg_info_fine
03628 Type (Enddef_mg), Intent (InOut):: mg_info_coarse
03629 Integer, Intent (In) :: icoarse (ndim_3d)
03630 Integer, Intent (Out) :: ierror
03631 End Subroutine
03632
03633 subroutine psmile_mg_coars_subgrid_3d_real ( chfmin, chfmax, midfp, &
03634 levdim1_fine, levdim2_fine, levdim3_fine, &
03635 chcmin, chcmax, midcp, &
03636 levdim1, levdim2, levdim3, &
03637 icoarse, ierror)
03638 Use PSMILe_common
03639 Integer, Intent (In) :: levdim1_fine, levdim2_fine,
03640 levdim3_fine
03641 Integer, Intent (In) :: levdim1, levdim2, levdim3
03642 Real, Intent (In) :: chfmin (0:levdim1_fine,
03643 0:levdim2_fine,
03644 0:levdim3_fine)
03645 Real, Intent (In) :: chfmax (0:levdim1_fine,
03646 0:levdim2_fine,
03647 0:levdim3_fine)
03648 Real, Intent (In) :: midfp (0:levdim1_fine,
03649 0:levdim2_fine,
03650 0:levdim3_fine)
03651 Real, Intent (Out) :: chcmin (0:levdim1, 0:levdim2,
03652 0:levdim3)
03653 Real, Intent (Out) :: chcmax (0:levdim1, 0:levdim2,
03654 0:levdim3)
03655 Real, Intent (Out) :: midcp (0:levdim1, 0:levdim2,
03656 0:levdim3)
03657 Integer, Intent (In) :: icoarse (ndim_3d)
03658 Integer, Intent (Out) :: ierror
03659 End Subroutine
03660
03661 subroutine psmile_mg_get_cyclic_real (grid_id, range, &
03662 tol, ierror)
03663 Use PSMILe_common
03664
03665 Integer, Intent (In) :: grid_id
03666 Integer, Intent (In) :: range (2, ndim_3d)
03667 Real, Intent (In) :: tol
03668 Integer, Intent (Out) :: ierror
03669 End Subroutine
03670
03671 subroutine psmile_neigh_extra_search_real (search, extra_search, &
03672 nb_extra, ierror)
03673 Use PSMILe_common
03674
03675 Type (Enddef_search), Intent (In) :: search
03676 Type (Extra_search_info), Intent (InOut) :: extra_search
03677 Integer, Intent (In) :: nb_extra
03678 Integer, Intent (Out) :: ierror
03679 End Subroutine
03680
03681 subroutine psmile_send_req_coords_real (msg_intersections, &
03682 dest, tag, ierror)
03683 use psmile_common, only : enddef_msg_intersections
03684
03685 Integer, Intent (In) :: dest, tag
03686 Type (enddef_msg_intersections), Intent (In) :: msg_intersections
03687 Integer, Intent (Out) :: ierror
03688 End Subroutine
03689
03690 subroutine psmile_send_req_corners_real (msg_intersections, &
03691 dest, tag, ierror)
03692 use psmile_common, only : enddef_msg_intersections
03693
03694 Integer, Intent (In) :: dest, tag
03695 Type (enddef_msg_intersections), Intent (In) :: msg_intersections
03696 Integer, Intent (Out) :: ierror
03697
03698 End Subroutine
03699
03700 subroutine psmile_recv_req_coords_real (sender, tag, search, &
03701 recv_req, recv_mask, new_search, ierror)
03702 Use PSMILe_common
03703 Integer, Intent (In) :: sender, tag
03704 Logical, Intent (In) :: recv_mask, new_search
03705 Type (Enddef_search), Intent (InOut) :: search
03706 Integer, Intent (Out) :: recv_req (ndim_3d+2, *)
03707 Integer, Intent (Out) :: ierror
03708 End Subroutine
03709
03710 subroutine psmile_recv_req_corners_real (sender, tag, &
03711 search, recv_req, &
03712 recv_mask, new_search, &
03713 ierror)
03714 Use PSMILe_common
03715 Integer, Intent (In) :: sender, tag
03716 Logical, Intent (In) :: recv_mask, new_search
03717 Type (Enddef_search), Intent (InOut) :: search
03718 Integer, Intent (Out) :: recv_req (ndim_3d+2, *)
03719 Integer, Intent (Out) :: ierror
03720 End Subroutine
03721
03722 subroutine psmile_search_donor_1d_real (grid_id, idim, found, &
03723 locations, coords, len, &
03724 tol, ierror)
03725 Use PSMILe_common
03726
03727 Integer, Intent (In) :: grid_id
03728 Integer, Intent (In) :: idim
03729 Integer, Intent (In) :: len
03730 Integer, Intent (InOut) :: found (len)
03731 Integer, Intent (InOut) :: locations (len)
03732 Real, Intent (In) :: coords (len)
03733 Real, Intent (In) :: tol
03734 Integer, Intent (Out) :: ierror
03735 End Subroutine
03736
03737 subroutine psmile_search_donor_2d_real (found, &
03738 locations, len, &
03739 search, ipart, &
03740 grid_id, method_id, var_id, &
03741 tol, ierror)
03742 Use PSMILe_common
03743
03744 Integer, Intent (In) :: len
03745 Integer, Intent (InOut) :: found (len)
03746 Integer, Intent (InOut) :: locations (ndim_2d, len)
03747 Type (Enddef_search) :: search
03748 Integer, Intent (In) :: ipart
03749 Integer, Intent (In) :: grid_id, method_id, var_id
03750 Real, Intent (In) :: tol
03751 Integer, Intent (Out) :: ierror
03752 End Subroutine
03753
03754 subroutine psmile_search_donor_3d_real (comp_info, found, &
03755 locations, len, search, &
03756 field_list, n_vars, &
03757 grid_id, method_id, var_id, &
03758 tol, ierror)
03759 Use PSMILe_common
03760
03761 Type (Enddef_comp), Intent (In) :: comp_info
03762 Type (integer_vector) :: found (*)
03763 Type (integer_vector) :: locations (*)
03764 Integer, Intent (In) :: len (*)
03765 Type (Enddef_search) :: search
03766 Integer, Intent (In) :: grid_id
03767 Integer, Intent (InOut) :: method_id, var_id
03768 Integer, Intent (In) :: n_vars
03769 Integer, Intent (In) :: field_list (nd_field_list, n_vars)
03770 Real, Intent (In) :: tol
03771 Integer, Intent (Out) :: ierror
03772 End Subroutine
03773
03774 subroutine psmile_search_donor_3d_reg_real (comp_info, &
03775 found, locations, len, &
03776 search, field_list, n_vars, &
03777 grid_id, method_id, var_id, &
03778 tol, ierror)
03779 Use PSMILe_common
03780
03781 Type (Enddef_comp), Intent (In) :: comp_info
03782 Type (Enddef_search) :: search
03783 Type (integer_vector), Intent (InOut) :: found (ndim_3d, *)
03784 Type (integer_vector), Intent (InOut) :: locations (ndim_3d, *)
03785 Integer, Intent (In) :: len (search%npart)
03786 Integer, Intent (In) :: grid_id
03787 Integer, Intent (InOut) :: method_id, var_id
03788 Integer, Intent (In) :: n_vars
03789 Integer, Intent (In) :: field_list (nd_field_list, n_vars)
03790 Real, Intent (In) :: tol
03791 Integer, Intent (Out) :: ierror
03792 End Subroutine
03793
03794 subroutine psmile_search_donor_gauss2_real (comp_info, found, &
03795 locations, len, search, &
03796 field_list, n_vars, &
03797 grid_id, method_id, var_id, &
03798 tol, ierror)
03799 Use PSMILe_common
03800
03801 Type (Enddef_comp), Intent (In) :: comp_info
03802 Type (Enddef_search) :: search
03803 Type (integer_vector) :: found (search%npart, 2)
03804 Type (integer_vector) :: locations (search%npart, 2)
03805 Integer, Intent (In) :: len (search%npart, 2)
03806 Integer, Intent (In) :: grid_id
03807 Integer, Intent (InOut) :: method_id, var_id
03808 Integer, Intent (In) :: n_vars
03809 Integer, Intent (In) :: field_list (nd_field_list, n_vars)
03810 Real, Intent (In) :: tol
03811 Integer, Intent (Out) :: ierror
03812 End Subroutine
03813
03814 subroutine psmile_search_donor_irreg2_real (comp_info, found, &
03815 locations, len, search, &
03816 field_list, n_vars, grid_id, method_id, var_id, &
03817 tol, ierror)
03818 Use PSMILe_common
03819
03820 Type (Enddef_comp), Intent (In) :: comp_info
03821 Type (Enddef_search) :: search
03822 Type (integer_vector) :: found (search%npart, 2)
03823 Type (integer_vector) :: locations (search%npart, 2)
03824 Integer, Intent (In) :: len (search%npart, 2)
03825 Integer, Intent (In) :: grid_id
03826 Integer, Intent (InOut) :: method_id, var_id
03827 Integer, Intent (In) :: n_vars
03828 Integer, Intent (In) :: field_list (nd_field_list, n_vars)
03829 Real, Intent (In) :: tol
03830 Integer, Intent (Out) :: ierror
03831 End Subroutine
03832
03833 subroutine psmile_search_donor_nnx_real (comp_info, search, var_id, &
03834 coords1, coords2, coords3, distance, &
03835 nfound, locations, n_send, nb_extra, &
03836 tol, ierror)
03837 Use PSMILe_common
03838
03839 Type (Enddef_comp), Intent (In) :: comp_info
03840 Integer, Intent (In) :: var_id
03841 Integer, Intent (In) :: n_send
03842 Integer, Intent (In) :: nb_extra
03843 Real, Intent (In) :: coords1 (n_send)
03844 Real, Intent (In) :: coords2 (n_send)
03845 Real, Intent (In) :: coords3 (n_send)
03846 Real, Intent (InOut) :: distance (n_send)
03847 Real, Intent (In) :: tol
03848 Type (Enddef_global_search), Intent (InOut) :: search
03849 Integer, Intent (InOut) :: nfound (n_send)
03850 Integer, Intent (Out) :: locations (ndim_3d, n_send)
03851 Integer, Intent (Out) :: ierror
03852 End Subroutine
03853
03854 subroutine psmile_search_nn_3d_real ( &
03855 sin_search, cos_search, z_search, distance, &
03856 nfound, locations, n_send, &
03857 x_coords, y_coords, z_coords, coords_shape, &
03858 sin_values, cos_values, grid_valid_shape, &
03859 mask_array, mask_shape, mask_available, &
03860 tol, ierror)
03861 Use PSMILe_common
03862
03863 Integer, Intent (In) :: n_send
03864 Real, Intent (In) :: sin_search (n_send, 2)
03865 Real, Intent (In) :: cos_search (n_send, 2)
03866 Real, Intent (In) :: z_search (n_send)
03867 Integer, Intent (In) :: coords_shape (2, ndim_3d)
03868 Real, Intent (In) ::
03869 x_coords (coords_shape(1,1):coords_shape(2,1),
03870 coords_shape(1,2):coords_shape(2,2),
03871 coords_shape(1,3):coords_shape(2,3))
03872 Real, Intent (In) ::
03873 y_coords (coords_shape(1,1):coords_shape(2,1),
03874 coords_shape(1,2):coords_shape(2,2),
03875 coords_shape(1,3):coords_shape(2,3))
03876 Real, Intent (In) ::
03877 z_coords (coords_shape(1,1):coords_shape(2,1),
03878 coords_shape(1,2):coords_shape(2,2),
03879 coords_shape(1,3):coords_shape(2,3))
03880
03881 Integer, Intent (In) :: mask_shape (2, ndim_3d)
03882 Logical, Intent (In) ::
03883 mask_array (mask_shape (1,1):mask_shape (2,1),
03884 mask_shape (1,2):mask_shape (2,2),
03885 mask_shape (1,3):mask_shape (2,3))
03886 Logical, Intent (In) :: mask_available
03887 Integer, Intent (In) ::
03888 grid_valid_shape (2, ndim_3d)
03889
03890 Real, Intent (In) ::
03891 sin_values (grid_valid_shape(1,1):grid_valid_shape(2,1),
03892 grid_valid_shape(1,2):grid_valid_shape(2,2), 2)
03893 Real, Intent (In) ::
03894 cos_values (grid_valid_shape(1,1):grid_valid_shape(2,1),
03895 grid_valid_shape(1,2):grid_valid_shape(2,2), 2)
03896 Real, Intent (In) :: tol
03897 Real, Intent (InOut) :: distance (n_send)
03898 Integer, Intent (InOut) :: nfound (n_send)
03899 Integer, Intent (Out) :: locations (ndim_3d, n_send)
03900 Integer, Intent (Out) :: ierror
03901 End Subroutine
03902
03903 subroutine psmile_search_nn_3d_reg_real ( &
03904 sin_search, cos_search, z_search, distance, &
03905 nfound, locations, n_send, &
03906 x_coords, y_coords, z_coords, coords_shape, &
03907 sin_values_lon, cos_values_lon, &
03908 sin_values_lat, cos_values_lat, &
03909 grid_valid_shape, &
03910 mask_array, mask_shape, mask_available, &
03911 tol, ierror)
03912 Use PSMILe_common
03913
03914 Integer, Intent (In) :: n_send
03915 Real, Intent (In) :: sin_search (n_send, 2)
03916 Real, Intent (In) :: cos_search (n_send, 2)
03917 Real, Intent (In) :: z_search (n_send)
03918 Integer, Intent (In) :: coords_shape (2, ndim_3d)
03919 Real, Intent (In) ::
03920 x_coords (coords_shape(1,1):coords_shape(2,1))
03921 Real, Intent (In) ::
03922 y_coords (coords_shape(1,1):coords_shape(2,1))
03923 Real, Intent (In) ::
03924 z_coords (coords_shape(1,3):coords_shape(2,3))
03925
03926 Integer, Intent (In) :: mask_shape (2, ndim_3d)
03927 Logical, Intent (In) ::
03928 mask_array (mask_shape (1,1):mask_shape (2,1),
03929 mask_shape (1,2):mask_shape (2,2),
03930 mask_shape (1,3):mask_shape (2,3))
03931 Logical, Intent (In) :: mask_available
03932 Integer, Intent (In) ::
03933 grid_valid_shape (2, ndim_3d)
03934
03935 Real, Intent (In) ::
03936 sin_values_lon (grid_valid_shape(1,1):grid_valid_shape(2,1))
03937 Real, Intent (In) ::
03938 cos_values_lon (grid_valid_shape(1,1):grid_valid_shape(2,1))
03939 Real, Intent (In) ::
03940 sin_values_lat (grid_valid_shape(1,2):grid_valid_shape(2,2))
03941 Real, Intent (In) ::
03942 cos_values_lat (grid_valid_shape(1,2):grid_valid_shape(2,2))
03943 Real, Intent (In) :: tol
03944 Real, Intent (InOut) :: distance (n_send)
03945 Integer, Intent (InOut) :: nfound (n_send)
03946 Integer, Intent (Out) :: locations (ndim_3d, n_send)
03947 Integer, Intent (Out) :: ierror
03948 End Subroutine
03949
03950 subroutine psmile_search_nn_irreg2_real ( &
03951 sin_search, cos_search, z_search, distance, &
03952 nfound, locations, n_send, &
03953 x_coords, y_coords, z_coords, coords_shape, &
03954 sin_values, cos_values, grid_valid_shape, &
03955 mask_array, mask_shape, mask_available, &
03956 tol, ierror)
03957 Use PSMILe_common
03958
03959 Integer, Intent (In) :: n_send
03960 Real, Intent (In) :: sin_search (n_send, 2)
03961 Real, Intent (In) :: cos_search (n_send, 2)
03962 Real, Intent (In) :: z_search (n_send)
03963 Integer, Intent (In) :: coords_shape (2, ndim_3d)
03964 Real, Intent (In) :: x_coords(
03965 coords_shape(1,1):coords_shape(2,1),
03966 coords_shape(1,2):coords_shape(2,2))
03967 Real, Intent (In) :: y_coords(
03968 coords_shape(1,1):coords_shape(2,1),
03969 coords_shape(1,2):coords_shape(2,2))
03970 Real, Intent (In) :: z_coords(
03971 coords_shape(1,3):coords_shape(2,3))
03972
03973 Integer, Intent (In) :: mask_shape (2, ndim_3d)
03974 Logical, Intent (In) :: mask_array (
03975 mask_shape (1,1):mask_shape (2,1),
03976 mask_shape (1,2):mask_shape (2,2),
03977 mask_shape (1,3):mask_shape (2,3))
03978 Logical, Intent (In) :: mask_available
03979 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
03980
03981 Real, Intent (In) :: sin_values (
03982 grid_valid_shape(1,1):grid_valid_shape(2,1),
03983 grid_valid_shape(1,2):grid_valid_shape(2,2),
03984 2)
03985 Real, Intent (In) :: cos_values (
03986 grid_valid_shape(1,1):grid_valid_shape(2,1),
03987 grid_valid_shape(1,2):grid_valid_shape(2,2),
03988 2)
03989 Real, Intent (In) :: tol
03990 Real, Intent (InOut) :: distance (n_send)
03991 Integer, Intent (InOut) :: nfound (n_send)
03992 Integer, Intent (Out) :: locations (ndim_3d, n_send)
03993 Integer, Intent (Out) :: ierror
03994 End Subroutine
03995
03996 subroutine psmile_select_nn_found (search, extra_search, &
03997 send_info, &
03998 selected, sel_info, nrecv, nb_extra, &
03999 neighbors_3d, nloc, num_neigh, &
04000 grid_valid_shape, ierror)
04001 Use PSMILe_common
04002
04003 Type (Enddef_search), Intent (In) :: search
04004 Integer, Intent (In) :: nb_extra
04005 Integer, Intent (In) :: nloc
04006 Integer, Intent (In) :: num_neigh
04007 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
04008 Integer, Intent (InOut) :: nrecv
04009 Type (Extra_search_info), Intent (InOut) :: extra_search
04010 Type (Send_information), Intent (InOut) :: send_info
04011 Integer, Intent (InOut) :: selected (2, extra_search%n_extra)
04012 Type (Select_search_info), Intent (InOut) :: sel_info (nrecv)
04013 Integer, Intent (InOut) :: neighbors_3d (ndim_3d, nloc,
04014 num_neigh)
04015 Integer, Intent (Out) :: ierror
04016 End Subroutine
04017
04018 subroutine psmile_store_faces_3d_real (indices_req, required, &
04019 nreq, &
04020 tgt_coords1, tgt_coords2, tgt_coords3, ncpl, &
04021 corners1, corners2, corners3, &
04022 corner_shape, nbr_corners, grid_valid_shape, &
04023 send_mask, srcloc_ind, &
04024 ibuf, len_item, ndibuf, ipia, &
04025 buf, len_rtem, ndrbuf, ipa, ierror)
04026 Use PSMILe_common
04027
04028 Integer, Intent (In) :: nreq, ncpl
04029 Integer, Intent (In) :: indices_req (nreq)
04030 Integer, Intent (In) :: required (nreq)
04031 Integer, Intent (In) :: nbr_corners
04032 Integer, Intent (In) :: corner_shape (2, ndim_3d)
04033 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
04034 Real, Intent (In) :: tgt_coords1 (ncpl)
04035 Real, Intent (In) :: tgt_coords2 (ncpl)
04036 Real, Intent (In) :: tgt_coords3 (ncpl)
04037 Real, Intent (In) :: corners1 (
04038 corner_shape(1,1):corner_shape(2,1),
04039 corner_shape(1,2):corner_shape(2,2),
04040 corner_shape(1,3):corner_shape(2,3),
04041 nbr_corners)
04042 Real, Intent (In) :: corners2 (
04043 corner_shape(1,1):corner_shape(2,1),
04044 corner_shape(1,2):corner_shape(2,2),
04045 corner_shape(1,3):corner_shape(2,3),
04046 nbr_corners)
04047 Real, Intent (In) :: corners3 (
04048 corner_shape(1,1):corner_shape(2,1),
04049 corner_shape(1,2):corner_shape(2,2),
04050 corner_shape(1,3):corner_shape(2,3),
04051 nbr_corners)
04052 Logical, Intent (In) :: send_mask (nreq)
04053 Integer, Intent (In) :: len_item, len_rtem, ndibuf, ndrbuf
04054 Integer, Intent (In) :: srcloc_ind (ndim_3d, ndibuf)
04055 Real, Intent (InOut) :: buf (len_rtem, ndrbuf)
04056 Integer, Intent (InOut) :: ibuf (len_item, ndibuf)
04057 Integer, Intent (InOut) :: ipa, ipia
04058 Integer, Intent (Out) :: ierror
04059 End Subroutine
04060
04061 subroutine psmile_store_faces_3d_reg_real (indices_req, required, &
04062 nreq, &
04063 tgt_coords1, tgt_coords2, tgt_coords3, ncpl, &
04064 corners1, corners2, corners3, &
04065 corner_shape, nbr_corners, grid_valid_shape, &
04066 send_mask, srcloc_ind, &
04067 ibuf, len_item, ndibuf, ipia, &
04068 buf, len_rtem, ndrbuf, ipa, ierror)
04069 Use PSMILe_common
04070
04071 Integer, Intent (In) :: nreq, ncpl
04072 Integer, Intent (In) :: indices_req (nreq)
04073 Integer, Intent (In) :: required (nreq)
04074 Integer, Intent (In) :: nbr_corners
04075 Integer, Intent (In) :: corner_shape (2, ndim_3d)
04076 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
04077 Real, Intent (In) :: tgt_coords1 (ncpl)
04078 Real, Intent (In) :: tgt_coords2 (ncpl)
04079 Real, Intent (In) :: tgt_coords3 (ncpl)
04080 Real, Intent (In) :: corners1 (
04081 corner_shape(1,1):corner_shape(2,1),
04082 2)
04083 Real, Intent (In) :: corners2 (
04084 corner_shape(1,2):corner_shape(2,2),
04085 2)
04086 Real, Intent (In) :: corners3 (
04087 corner_shape(1,3):corner_shape(2,3),
04088 2)
04089 Logical, Intent (In) :: send_mask (nreq)
04090 Integer, Intent (In) :: len_item, len_rtem, ndibuf, ndrbuf
04091 Integer, Intent (In) :: srcloc_ind (ndim_3d, ndibuf)
04092 Real, Intent (InOut) :: buf (len_rtem, ndrbuf)
04093 Integer, Intent (InOut) :: ibuf (len_item, ndibuf)
04094 Integer, Intent (InOut) :: ipa, ipia
04095 Integer, Intent (Out) :: ierror
04096 End Subroutine
04097
04098 subroutine psmile_store_faces_gauss2_real (indices_req, &
04099 required, nreq, &
04100 tgt_coords1, tgt_coords2, tgt_coords3, ncpl, &
04101 corners1, corners2, corners3, corner_shape, &
04102 nbr_corners, grid_id, grid_valid_shape, &
04103 send_mask, srcloc_ind, &
04104 virtual_ind, virtual_cell_available, &
04105 ibuf, len_item, ndibuf, ipia, &
04106 buf, len_rtem, ndrbuf, ipa, ierror)
04107 Use PSMILe_common
04108
04109 Integer, Intent (In) :: nreq
04110 Integer, Intent (In) :: indices_req (nreq)
04111 Integer, Intent (In) :: required (nreq)
04112 Integer, Intent (In) :: corner_shape (2, ndim_3d)
04113 Integer, Intent (In) :: nbr_corners
04114 Integer, Intent (In) :: grid_id
04115 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
04116 Integer, Intent (In) :: ncpl
04117 Real, Intent (In) :: tgt_coords1 (ncpl)
04118 Real, Intent (In) :: tgt_coords2 (ncpl)
04119 Real, Intent (In) :: tgt_coords3 (ncpl)
04120 Real, Intent (In) :: corners1 ( corner_shape(1,1):corner_shape(2,1), 2)
04121 Real, Intent (In) :: corners2 ( corner_shape(1,1):corner_shape(2,1), 2)
04122 Real, Intent (In) :: corners3 ( corner_shape(1,3):corner_shape(2,3), 2)
04123 Logical, Intent (In) :: send_mask (nreq)
04124 Integer, Intent (In) :: ndibuf
04125 Integer, Intent (In) :: srcloc_ind (ndim_3d, ndibuf)
04126 Integer, Intent (In) :: virtual_ind (ndibuf)
04127 Logical, Intent (In) :: virtual_cell_available
04128 Integer, Intent (In) :: len_item
04129 Integer, Intent (In) :: ndrbuf
04130 Integer, Intent (In) :: len_rtem
04131 Real, Intent (InOut) :: buf (len_rtem, ndrbuf)
04132 Integer, Intent (InOut) :: ipa
04133 Integer, Intent (InOut) :: ibuf (len_item, ndibuf)
04134 Integer, Intent (InOut) :: ipia
04135 Integer, Intent (Out) :: ierror
04136 End Subroutine
04137
04138 subroutine psmile_store_faces_irreg2_real (indices_req, required, &
04139 nreq, &
04140 tgt_coords1, tgt_coords2, tgt_coords3, ncpl, &
04141 corners1, corners2, corners3, &
04142 corner_shape, nbr_corners, grid_valid_shape, &
04143 send_mask, srcloc_ind, &
04144 ibuf, len_item, ndibuf, ipia, &
04145 buf, len_rtem, ndrbuf, ipa, ierror)
04146 Use PSMILe_common
04147
04148 Integer, Intent (In) :: nreq, ncpl
04149 Integer, Intent (In) :: indices_req (nreq)
04150 Integer, Intent (In) :: required (nreq)
04151 Integer, Intent (In) :: nbr_corners
04152 Integer, Intent (In) :: corner_shape (2, ndim_3d)
04153 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
04154 Real, Intent (In) :: tgt_coords1 (ncpl)
04155 Real, Intent (In) :: tgt_coords2 (ncpl)
04156 Real, Intent (In) :: tgt_coords3 (ncpl)
04157 Real, Intent (In) ::
04158 corners1 ( corner_shape(1,1):corner_shape(2,1),
04159 corner_shape(1,2):corner_shape(2,2), nbr_corners/2)
04160 Real, Intent (In) ::
04161 corners2 ( corner_shape(1,1):corner_shape(2,1),
04162 corner_shape(1,2):corner_shape(2,2), nbr_corners/2)
04163 Real, Intent (In) ::
04164 corners3 ( corner_shape(1,3):corner_shape(2,3), 2)
04165 Logical, Intent (In) :: send_mask (nreq)
04166 Integer, Intent (In) :: len_item, len_rtem
04167 Integer, Intent (In) :: ndibuf, ndrbuf
04168 Integer, Intent (In) :: srcloc_ind (ndim_3d, ndibuf)
04169
04170 Real, Intent (InOut) :: buf (len_rtem, ndrbuf)
04171 Integer, Intent (InOut) :: ibuf (len_item, ndibuf)
04172 Integer, Intent (InOut) :: ipa, ipia
04173 Integer, Intent (Out) :: ierror
04174 End Subroutine
04175
04176 subroutine psmile_trf_lonlat_1d_real (x_coords, y_coords, &
04177 coords_shape, grid_valid_shape, &
04178 sin_values_lon, cos_values_lon, &
04179 sin_values_lat, cos_values_lat, ierror)
04180 Use PSMILe_common
04181
04182 Integer, Intent (In) :: coords_shape (2, ndim_2d)
04183 Integer, Intent (In) :: grid_valid_shape (2, ndim_2d)
04184
04185 Real, Intent (In) :: x_coords(coords_shape(1,1):
04186 coords_shape(2,1))
04187 Real, Intent (In) :: y_coords(coords_shape(1,2):
04188 coords_shape(2,2))
04189 Real, Intent (Out) :: sin_values_lon (grid_valid_shape(1,1):
04190 grid_valid_shape(2,1))
04191 Real, Intent (Out) :: sin_values_lat (grid_valid_shape(1,2):
04192 grid_valid_shape(2,2))
04193 Real, Intent (Out) :: cos_values_lon (grid_valid_shape(1,1):
04194 grid_valid_shape(2,1))
04195 Real, Intent (Out) :: cos_values_lat (grid_valid_shape(1,2):
04196 grid_valid_shape(2,2))
04197 Integer, Intent (Out) :: ierror
04198 End Subroutine
04199
04200 subroutine psmile_trf_lonlat_2d_real (x_coords, y_coords, &
04201 coords_shape, grid_valid_shape, &
04202 sin_values, cos_values, ierror)
04203 Use PSMILe_common
04204
04205 Integer, Intent (In) :: coords_shape (2, ndim_2d)
04206 Integer, Intent (In) :: grid_valid_shape (2, ndim_2d)
04207
04208 Real, Intent (In) :: x_coords(coords_shape(1,1):
04209 coords_shape(2,1),
04210 coords_shape(1,2):
04211 coords_shape(2,2))
04212 Real, Intent (In) :: y_coords(coords_shape(1,1):
04213 coords_shape(2,1),
04214 coords_shape(1,2):
04215 coords_shape(2,2))
04216 Real, Intent (Out) :: sin_values (grid_valid_shape(1,1):
04217 grid_valid_shape(2,1),
04218 grid_valid_shape(1,2):
04219 grid_valid_shape(2,2),
04220 2)
04221 Real, Intent (Out) :: cos_values (grid_valid_shape(1,1):
04222 grid_valid_shape(2,1),
04223 grid_valid_shape(1,2):
04224 grid_valid_shape(2,2),
04225 2)
04226 Integer, Intent (Out) :: ierror
04227 End Subroutine
04228
04229 subroutine psmile_trf_lonlat_3d_real (x_coords, y_coords, &
04230 coords_shape, grid_valid_shape, &
04231 sin_values, cos_values, ierror)
04232 Use PSMILe_common
04233
04234 Integer, Intent (In) :: coords_shape (2, ndim_3d)
04235 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
04236
04237 Real, Intent (In) :: x_coords(coords_shape(1,1):
04238 coords_shape(2,1),
04239 coords_shape(1,2):
04240 coords_shape(2,2),
04241 coords_shape(1,3):
04242 coords_shape(2,3))
04243 Real, Intent (In) :: y_coords(coords_shape(1,1):
04244 coords_shape(2,1),
04245 coords_shape(1,2):
04246 coords_shape(2,2),
04247 coords_shape(1,3):
04248 coords_shape(2,3))
04249 Real, Intent (Out) :: sin_values (grid_valid_shape(1,1):
04250 grid_valid_shape(2,1),
04251 grid_valid_shape(1,2):
04252 grid_valid_shape(2,2),
04253 grid_valid_shape(1,3):
04254 grid_valid_shape(2,3),
04255 2)
04256 Real, Intent (Out) :: cos_values (grid_valid_shape(1,1):
04257 grid_valid_shape(2,1),
04258 grid_valid_shape(1,2):
04259 grid_valid_shape(2,2),
04260 grid_valid_shape(1,3):
04261 grid_valid_shape(2,3),
04262 2)
04263 Integer, Intent (Out) :: ierror
04264 End Subroutine
04265
04266 subroutine psmile_info_coords_3d_reg_real ( &
04267 x_coords, y_coords, z_coords, &
04268 coords_shape, grid_valid_shape, &
04269 sinvec, cosvec, ierror)
04270 Use PSMILe_common
04271
04272 Integer, Intent (In) :: coords_shape (2, ndim_3d)
04273 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
04274
04275 Real, Intent (In) :: x_coords(*)
04276 Real, Intent (In) :: y_coords(*)
04277 Real, Intent (In) :: z_coords(*)
04278
04279 Type (real_vector) :: sinvec (ndim_2d)
04280 Type (real_vector) :: cosvec (ndim_2d)
04281 Integer, Intent (Out) :: ierror
04282 End Subroutine
04283
04284 subroutine psmile_info_coords_irreg2_real ( &
04285 x_coords, y_coords, z_coords, &
04286 coords_shape, grid_valid_shape, &
04287 sinvec, cosvec, ierror)
04288 Use PSMILe_common
04289
04290 Integer, Intent (In) :: coords_shape (2, ndim_3d)
04291 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
04292
04293 Real, Intent (In) :: x_coords(*)
04294 Real, Intent (In) :: y_coords(*)
04295 Real, Intent (In) :: z_coords(*)
04296
04297 Type (real_vector) :: sinvec
04298 Type (real_vector) :: cosvec
04299 Integer, Intent (Out) :: ierror
04300 End Subroutine
04301
04302 subroutine psmile_info_trf_coords_3d_real ( &
04303 x_coords, y_coords, z_coords, &
04304 coords_shape, grid_valid_shape, &
04305 sinvec, cosvec, ierror)
04306 Use PSMILe_common
04307
04308 Integer, Intent (In) :: coords_shape (2, ndim_3d)
04309 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
04310
04311 Real, Intent (In) :: x_coords(*)
04312 Real, Intent (In) :: y_coords(*)
04313 Real, Intent (In) :: z_coords(*)
04314
04315 Type (real_vector) :: sinvec
04316 Type (real_vector) :: cosvec
04317 Integer, Intent (Out) :: ierror
04318 End Subroutine
04319
04320 subroutine psmile_info_trs_locs_3d_real (comp_info, &
04321 coords, shape, control, &
04322 len_cpl, &
04323 var_id, grid_valid_shape, &
04324 search, &
04325 method_id, send_index, &
04326 ierror)
04327 Use PSMILe_common
04328
04329 Type (Enddef_comp), Intent (In) :: comp_info
04330 Type (Enddef_search), Intent (InOut) :: search
04331 Type (real_vector), Intent (In) :: coords (ndim_3d, search%npart)
04332 Integer, Intent (In) :: shape (2, ndim_3d, search%npart)
04333 Integer, Intent (In) :: control (2, ndim_3d, search%npart)
04334 Integer, Intent (In) :: len_cpl (search%npart)
04335 Integer, Intent (In) :: var_id, method_id
04336 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
04337 Integer, Intent (InOut) :: send_index
04338 Integer, Intent (Out) :: ierror
04339 End Subroutine
04340
04341 subroutine psmile_info_trs_loc_3d_reg_real (comp_info, &
04342 coords, shape, control, &
04343 len_cpl, &
04344 var_id, grid_valid_shape, &
04345 search, &
04346 method_id, send_index, &
04347 ierror)
04348 Use PSMILe_common
04349
04350 Type (Enddef_comp), Intent (In) :: comp_info
04351 Type (Enddef_search), Intent (InOut) :: search
04352 Type (real_vector), Intent (In) :: coords (ndim_3d, search%npart)
04353 Integer, Intent (In) :: shape (2, ndim_3d, search%npart)
04354 Integer, Intent (In) :: control (2, ndim_3d, search%npart)
04355 Integer, Intent (InOut) :: len_cpl (search%npart)
04356 Integer, Intent (In) :: var_id, method_id
04357 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
04358 Integer, Intent (InOut) :: send_index
04359 Integer, Intent (Out) :: ierror
04360 End Subroutine
04361
04362 subroutine psmile_info_trs_loc_irreg2_real (comp_info, &
04363 coords, shape, control, &
04364 len_cpl, &
04365 var_id, grid_valid_shape, &
04366 search, &
04367 method_id, send_index, &
04368 ierror)
04369 Use PSMILe_common
04370
04371 Type (Enddef_comp), Intent (In) :: comp_info
04372 Type (Enddef_search), Intent (InOut) :: search
04373 Type (real_vector), Intent (In) :: coords (ndim_3d, search%npart)
04374 Integer, Intent (In) :: shape (2, ndim_3d, search%npart)
04375 Integer, Intent (In) :: control (2, ndim_3d, search%npart)
04376 Integer, Intent (InOut) :: len_cpl (search%npart)
04377 Integer, Intent (In) :: var_id, method_id
04378 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
04379 Integer, Intent (InOut) :: send_index
04380 Integer, Intent (Out) :: ierror
04381 End Subroutine
04382
04383 subroutine psmile_info_trs_loc_gauss2_real (comp_info, &
04384 coords, shape, control, len_cpl, &
04385 var_id, grid_valid_shape, &
04386 search, method_id, &
04387 send_index, ierror)
04388 Use PSMILe_common
04389
04390 Type (Enddef_comp), Intent (In) :: comp_info
04391 Type (Enddef_search), Intent (InOut) :: search
04392 Type (real_vector), Intent (In) :: coords (ndim_3d, search%npart)
04393 Integer, Intent (In) :: shape (2, ndim_3d, search%npart)
04394 Integer, Intent (In) :: control (2, ndim_3d, search%npart)
04395 Integer, Intent (InOut) :: len_cpl (search%npart)
04396 Integer, Intent (In) :: var_id, method_id
04397 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
04398 Integer, Intent (InOut) :: send_index
04399 Integer, Intent (Out) :: ierror
04400 End Subroutine
04401
04402 subroutine psmile_neigh_cells_3d_real ( use_how, &
04403 grid_shape, interpolation_mode, cyclic, &
04404 corner_shape_3d, nbr_corners, &
04405 corner_x, corner_y, corner_z, &
04406 search, control, tgt_cell, tgt_corners, &
04407 npoints, srclocs, msklocs, ncpl, &
04408 num_neigh, nbr_cells, ierror )
04409
04410 USE PSMILe_Common
04411
04412 Integer, Intent (In) :: use_how(3)
04413 Integer, Intent (In) :: grid_shape (2, ndim_3d)
04414 Integer, Intent (In) :: interpolation_mode
04415 Logical, Intent (In) :: cyclic (ndim_3d)
04416 Integer, Intent (In) :: corner_shape_3d (2,ndim_3d,ndim_3d)
04417 Integer, Intent (In) :: nbr_corners(ndim_3d)
04418 Type (Enddef_search), Intent (InOut) :: search
04419 Integer, Intent (In) :: control (2, ndim_3d, search%npart)
04420 Type (real_vector), Intent (InOut) :: tgt_cell(ndim_3d)
04421 Integer, Intent (In) :: tgt_corners(ndim_3d)
04422 Integer, Intent (In) :: npoints
04423 Integer, Intent (In) :: ncpl
04424 Integer, Intent (In) :: srclocs (ndim_3d, npoints)
04425 Logical, Intent (In) :: msklocs (npoints)
04426 Integer, Intent (In) :: num_neigh
04427 Real, Intent (In) :: corner_x (corner_shape_3d (1,1,1):corner_shape_3d(2,1,1),
04428 corner_shape_3d (1,2,1):corner_shape_3d(2,2,1),
04429 corner_shape_3d (1,3,1):corner_shape_3d(2,3,1),
04430 nbr_corners(1))
04431
04432 Real, Intent (In) :: corner_y (corner_shape_3d (1,1,2):corner_shape_3d(2,1,2),
04433 corner_shape_3d (1,2,2):corner_shape_3d(2,2,2),
04434 corner_shape_3d (1,3,2):corner_shape_3d(2,3,2),
04435 nbr_corners(2))
04436
04437 Real, Intent (In) :: corner_z (corner_shape_3d (1,1,3):corner_shape_3d(2,1,3),
04438 corner_shape_3d (1,2,3):corner_shape_3d(2,2,3),
04439 corner_shape_3d (1,3,3):corner_shape_3d(2,3,3),
04440 nbr_corners(3))
04441 Integer, Intent (Out) :: nbr_cells(ncpl)
04442 Integer, Intent (Out) :: ierror
04443 End Subroutine
04444
04445 subroutine psmile_neigh_cells_3d_reg_real ( &
04446 grid_valid_shape, interpolation_mode, &
04447 cyclic, grid_id, search, corners, &
04448 npoints, srclocs, ncpl, nbr_cells, &
04449 ierror )
04450
04451 USE PSMILe_Common
04452
04453 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
04454 Integer, Intent (In) :: interpolation_mode
04455 Logical, Intent (In) :: cyclic (ndim_3d)
04456 Integer, Intent (In) :: grid_id
04457 Type (Enddef_search), Intent (In) :: search
04458 Type (real_vector), Intent (In) :: corners (ndim_3d, search%npart)
04459 Integer, Intent (In) :: npoints (ndim_3d, search%npart)
04460 Type (integer_vector), Intent (In) :: srclocs (ndim_3d, search%npart)
04461 Integer, Intent (In) :: ncpl
04462 Integer, Intent (Out) :: nbr_cells(ncpl)
04463 Integer, Intent (Out) :: ierror
04464 End Subroutine
04465
04466 subroutine psmile_neigh_cells_irreg2_real ( use_how, &
04467 grid_shape, interpolation_mode, cyclic, &
04468 corner_shape_3d, nbr_corners, &
04469 corner_x, corner_y, &
04470 search, control, tgt_cell, tgt_corners, &
04471 npoints, srclocs, msklocs, ncpl, &
04472 num_neigh, nbr_cells, ierror )
04473
04474 USE PSMILe_Common
04475
04476 Integer, Intent (In) :: use_how(3)
04477 Integer, Intent (In) :: grid_shape (2, ndim_3d)
04478 Integer, Intent (In) :: interpolation_mode
04479 Logical, Intent (In) :: cyclic (ndim_3d)
04480 Integer, Intent (In) :: corner_shape_3d(2,ndim_3d,ndim_3d)
04481 Integer, Intent (In) :: nbr_corners(ndim_3d)
04482 Type (Enddef_search), Intent (InOut) :: search
04483 Integer, Intent (In) :: control (2, ndim_3d, search%npart)
04484 Type (real_vector), Intent (InOut) :: tgt_cell(ndim_3d)
04485 Integer, Intent (In) :: tgt_corners
04486 Integer, Intent (In) :: npoints (ndim_2d, search%npart)
04487 Integer, Intent (In) :: ncpl
04488 Type (integer_vector), Intent (In) :: srclocs (2,search%npart)
04489 Type (logical_vector), Intent (In) :: msklocs (2,search%npart)
04490 Integer, Intent (In) :: num_neigh
04491 Real, Intent (In) :: corner_x (corner_shape_3d (1,1,1):corner_shape_3d(2,1,1),
04492 corner_shape_3d (1,2,1):corner_shape_3d(2,2,1),
04493 nbr_corners(1))
04494 Real, Intent (In) :: corner_y (corner_shape_3d (1,1,2):corner_shape_3d(2,1,2),
04495 corner_shape_3d (1,2,2):corner_shape_3d(2,2,2),
04496 nbr_corners(2))
04497 Integer, Intent (Out) :: nbr_cells(ncpl)
04498 Integer, Intent (Out) :: ierror
04499 End Subroutine
04500
04501 subroutine psmile_neigh_near_irr2_3d_real (grid_id, &
04502 coords1, coords2, coords3, &
04503 x_coords, y_coords, z_coords, &
04504 coords_shape, &
04505 mask_array, mask_shape, mask_available, &
04506 sin_values, cos_values, grid_valid_shape, &
04507 search_mode, &
04508 srcloc, nloc, nprev, nsearch, &
04509 neighbors_3d, num_neigh, &
04510 extra_search, ierror)
04511
04512 Use PSMILe_common
04513
04514 Integer, Intent (In) :: grid_id
04515 Integer, Intent (In) :: nloc, nprev, nsearch, search_mode
04516 Real, Intent (In) :: coords1 (nloc)
04517 Real, Intent (In) :: coords2 (nloc)
04518 Real, Intent (In) :: coords3 (nloc)
04519 Integer, Intent (In) :: coords_shape (2, ndim_3d)
04520 Real, Intent (In) :: x_coords (*)
04521 Real, Intent (In) :: y_coords (*)
04522 Real, Intent (In) :: z_coords (*)
04523 Logical, Intent (In) :: mask_array (*)
04524 Integer, Intent (In) :: mask_shape (2, ndim_3d)
04525 Logical, Intent (In) :: mask_available
04526 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
04527 Real, Intent (In) :: sin_values (*)
04528 Real, Intent (In) :: cos_values (*)
04529 Integer, Intent (In) :: srcloc (ndim_3d, nloc)
04530 Integer, Intent (In) :: num_neigh
04531 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc, num_neigh)
04532 Type (Extra_search_info) :: extra_search
04533 Integer, Intent (Out) :: ierror
04534 End Subroutine
04535
04536 subroutine psmile_neigh_near_3d_irr2_real (grid_id, &
04537 coords1, coords2, coords3, &
04538 x_coords, y_coords, z_coords, &
04539 coords_shape, &
04540 mask_array, mask_shape, mask_available, &
04541 sin_values_lon, cos_values_lon, &
04542 sin_values_lat, cos_values_lat, &
04543 grid_valid_shape, search_mode, &
04544 srcloc, srclocz, nlocs, nloc, nprev, &
04545 neighbors_3d, num_neigh, &
04546 extra_search, ierror)
04547
04548 Use PSMILe_common
04549
04550 Integer, Intent (In) :: grid_id
04551 Integer, Intent (In) :: nloc, nprev, search_mode
04552 Integer, Intent (In) :: nlocs (ndim_2d)
04553 Real, Intent (In) :: coords1 (*)
04554 Real, Intent (In) :: coords2 (*)
04555 Real, Intent (In) :: coords3 (*)
04556 Integer, Intent (In) :: coords_shape (2, ndim_3d)
04557 Real, Intent (In) :: x_coords (*)
04558 Real, Intent (In) :: y_coords (*)
04559 Real, Intent (In) :: z_coords (*)
04560 Logical, Intent (In) :: mask_array (*)
04561 Integer, Intent (In) :: mask_shape (2, ndim_3d)
04562 Logical, Intent (In) :: mask_available
04563 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
04564 Real, Intent (In) :: sin_values_lon (*)
04565 Real, Intent (In) :: cos_values_lon (*)
04566 Real, Intent (In) :: sin_values_lat (*)
04567 Real, Intent (In) :: cos_values_lat (*)
04568 Integer, Intent (In) :: srcloc (ndim_2d, nlocs(1))
04569 Integer, Intent (In) :: srclocz (nlocs(2))
04570 Integer, Intent (In) :: num_neigh
04571 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc, num_neigh)
04572 Type (Extra_search_info) :: extra_search
04573 Integer, Intent (Out) :: ierror
04574 End Subroutine
04575
04576 subroutine psmile_neigh_near_3d_irr3_real (grid_id, &
04577 coords1, coords2, coords3, &
04578 x_coords, y_coords, z_coords, &
04579 coords_shape, &
04580 mask_array, mask_shape, mask_available, &
04581 sin_values_lon, cos_values_lon, &
04582 sin_values_lat, cos_values_lat, &
04583 grid_valid_shape, search_mode, &
04584 srcloc, nsearch, nloc, nprev, &
04585 neighbors_3d, num_neigh, &
04586 extra_search, ierror)
04587
04588 Use PSMILe_common
04589
04590 Integer, Intent (In) :: grid_id
04591 Integer, Intent (In) :: nloc, nprev, search_mode
04592 Integer, Intent (In) :: nsearch
04593 Real, Intent (In) :: coords1 (*)
04594 Real, Intent (In) :: coords2 (*)
04595 Real, Intent (In) :: coords3 (*)
04596 Integer, Intent (In) :: coords_shape (2, ndim_3d)
04597 Real, Intent (In) :: x_coords (*)
04598 Real, Intent (In) :: y_coords (*)
04599 Real, Intent (In) :: z_coords (*)
04600 Logical, Intent (In) :: mask_array (*)
04601 Integer, Intent (In) :: mask_shape (2, ndim_3d)
04602 Logical, Intent (In) :: mask_available
04603 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
04604 Real, Intent (In) :: sin_values_lon (*)
04605 Real, Intent (In) :: cos_values_lon (*)
04606 Real, Intent (In) :: sin_values_lat (*)
04607 Real, Intent (In) :: cos_values_lat (*)
04608 Integer, Intent (In) :: srcloc (ndim_3d, nloc)
04609 Integer, Intent (In) :: num_neigh
04610 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc,
04611 num_neigh)
04612 Type (Extra_search_info) :: extra_search
04613 Integer, Intent (Out) :: ierror
04614 End Subroutine
04615
04616 subroutine psmile_neigh_nearx_irr2_3d_real (grid_id, &
04617 coords1, coords2, coords3, &
04618 x_coords, y_coords, z_coords, &
04619 coords_shape, &
04620 mask_array, mask_shape, mask_available, &
04621 sin_values, cos_values, grid_valid_shape, &
04622 search_mode, &
04623 srcloc, nloc, nprev, nsearch, &
04624 neighbors_3d, num_neigh, &
04625 extra_search, ierror)
04626
04627 Use PSMILe_common
04628
04629 Integer, Intent (In) :: grid_id
04630 Integer, Intent (In) :: nloc, nprev, nsearch, search_mode
04631 Real, Intent (In) :: coords1 (nloc)
04632 Real, Intent (In) :: coords2 (nloc)
04633 Real, Intent (In) :: coords3 (nloc)
04634 Integer, Intent (In) :: coords_shape (2, ndim_3d)
04635 Real, Intent (In) :: x_coords (*)
04636 Real, Intent (In) :: y_coords (*)
04637 Real, Intent (In) :: z_coords (*)
04638 Logical, Intent (In) :: mask_array (*)
04639 Integer, Intent (In) :: mask_shape (2, ndim_3d)
04640 Logical, Intent (In) :: mask_available
04641 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
04642 Real, Intent (In) :: sin_values (*)
04643 Real, Intent (In) :: cos_values (*)
04644 Integer, Intent (In) :: srcloc (ndim_3d, nloc)
04645 Integer, Intent (In) :: num_neigh
04646 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc,
04647 num_neigh)
04648 Type (Extra_search_info) :: extra_search
04649 Integer, Intent (Out) :: ierror
04650 End Subroutine
04651
04652 subroutine psmile_neigh_near_3d_reg_real (grid_id, &
04653 coords1, coords2, coords3, &
04654 x_coords, y_coords, z_coords, &
04655 coords_shape, &
04656 mask_array, mask_shape, mask_available, &
04657 sin_values_lon, cos_values_lon, &
04658 sin_values_lat, cos_values_lat, &
04659 grid_valid_shape, search_mode, &
04660 srclocs, nlocs, nloc, nprev, &
04661 neighbors_3d, num_neigh, &
04662 extra_search, ierror)
04663
04664 Use PSMILe_common
04665
04666 Integer, Intent (In) :: grid_id
04667 Integer, Intent (In) :: nloc, nprev, search_mode
04668 Integer, Intent (In) :: nlocs (ndim_3d)
04669 Real, Intent (In) :: coords1 (*)
04670 Real, Intent (In) :: coords2 (*)
04671 Real, Intent (In) :: coords3 (*)
04672 Integer, Intent (In) :: coords_shape (2, ndim_3d)
04673 Real, Intent (In) :: x_coords (*)
04674 Real, Intent (In) :: y_coords (*)
04675 Real, Intent (In) :: z_coords (*)
04676 Logical, Intent (In) :: mask_array (*)
04677 Integer, Intent (In) :: mask_shape (2, ndim_3d)
04678 Logical, Intent (In) :: mask_available
04679 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
04680 Real, Intent (In) :: sin_values_lon (*)
04681 Real, Intent (In) :: cos_values_lon (*)
04682 Real, Intent (In) :: sin_values_lat (*)
04683 Real, Intent (In) :: cos_values_lat (*)
04684 Type (integer_vector), Intent (In) :: srclocs (ndim_3d)
04685 Integer, Intent (In) :: num_neigh
04686 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc, num_neigh)
04687 Type (Extra_search_info) :: extra_search
04688 Integer, Intent (Out) :: ierror
04689 End Subroutine
04690
04691 subroutine psmile_neigh_nearx_3d_irr2_real (grid_id, &
04692 coords1, coords2, coords3, &
04693 x_coords, y_coords, z_coords, &
04694 coords_shape, &
04695 mask_array, mask_shape, mask_available, &
04696 sin_values_lon, cos_values_lon, &
04697 sin_values_lat, cos_values_lat, &
04698 grid_valid_shape, search_mode, &
04699 srcloc, srclocz, nlocs, nloc, nprev, &
04700 neighbors_3d, num_neigh, &
04701 extra_search, ierror)
04702
04703 Use PSMILe_common
04704
04705 Integer, Intent (In) :: grid_id
04706 Integer, Intent (In) :: nloc, nprev, search_mode
04707 Integer, Intent (In) :: nlocs (ndim_2d)
04708 Real, Intent (In) :: coords1 (*)
04709 Real, Intent (In) :: coords2 (*)
04710 Real, Intent (In) :: coords3 (*)
04711 Integer, Intent (In) :: coords_shape (2, ndim_3d)
04712 Real, Intent (In) :: x_coords (*)
04713 Real, Intent (In) :: y_coords (*)
04714 Real, Intent (In) :: z_coords (*)
04715 Logical, Intent (In) :: mask_array (*)
04716 Integer, Intent (In) :: mask_shape (2, ndim_3d)
04717 Logical, Intent (In) :: mask_available
04718 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
04719 Real, Intent (In) :: sin_values_lon (*)
04720 Real, Intent (In) :: cos_values_lon (*)
04721 Real, Intent (In) :: sin_values_lat (*)
04722 Real, Intent (In) :: cos_values_lat (*)
04723 Integer, Intent (In) :: srcloc (ndim_2d, nlocs(1))
04724 Integer, Intent (In) :: srclocz (nlocs(2))
04725 Integer, Intent (In) :: num_neigh
04726 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc, num_neigh)
04727 Type (Extra_search_info) :: extra_search
04728 Integer, Intent (Out) :: ierror
04729 End Subroutine
04730
04731 subroutine psmile_neigh_nearx_3d_irr3_real (grid_id, &
04732 coords1, coords2, coords3, &
04733 x_coords, y_coords, z_coords, &
04734 coords_shape, &
04735 mask_array, mask_shape, mask_available, &
04736 sin_values_lon, cos_values_lon, &
04737 sin_values_lat, cos_values_lat, &
04738 grid_valid_shape, search_mode, &
04739 srcloc, nsearch, nloc, nprev, &
04740 neighbors_3d, num_neigh, &
04741 extra_search, ierror)
04742
04743 Use PSMILe_common
04744
04745 Integer, Intent (In) :: grid_id
04746 Integer, Intent (In) :: nloc, nprev, search_mode
04747 Integer, Intent (In) :: nsearch
04748 Real, Intent (In) :: coords1 (*)
04749 Real, Intent (In) :: coords2 (*)
04750 Real, Intent (In) :: coords3 (*)
04751 Integer, Intent (In) :: coords_shape (2, ndim_3d)
04752 Real, Intent (In) :: x_coords (*)
04753 Real, Intent (In) :: y_coords (*)
04754 Real, Intent (In) :: z_coords (*)
04755 Logical, Intent (In) :: mask_array (*)
04756 Integer, Intent (In) :: mask_shape (2, ndim_3d)
04757 Logical, Intent (In) :: mask_available
04758 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
04759 Real, Intent (In) :: sin_values_lon (*)
04760 Real, Intent (In) :: cos_values_lon (*)
04761 Real, Intent (In) :: sin_values_lat (*)
04762 Real, Intent (In) :: cos_values_lat (*)
04763 Integer, Intent (In) :: srcloc (ndim_3d, nloc)
04764 Integer, Intent (In) :: num_neigh
04765 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc, num_neigh)
04766 Type (Extra_search_info) :: extra_search
04767 Integer, Intent (Out) :: ierror
04768 End Subroutine
04769
04770 subroutine psmile_neigh_nearx_3d_reg_real (grid_id, &
04771 coords1, coords2, coords3, &
04772 x_coords, y_coords, z_coords, &
04773 coords_shape, &
04774 mask_array, mask_shape, mask_available, &
04775 sin_values_lon, cos_values_lon, &
04776 sin_values_lat, cos_values_lat, &
04777 grid_valid_shape, search_mode, &
04778 srclocs, nlocs, nloc, nprev, &
04779 neighbors_3d, num_neigh, &
04780 extra_search, ierror)
04781
04782 Use PSMILe_common
04783
04784 Integer, Intent (In) :: grid_id
04785 Integer, Intent (In) :: nloc, nprev, search_mode
04786 Integer, Intent (In) :: nlocs (ndim_3d)
04787 Real, Intent (In) :: coords1 (*)
04788 Real, Intent (In) :: coords2 (*)
04789 Real, Intent (In) :: coords3 (*)
04790 Integer, Intent (In) :: coords_shape (2, ndim_3d)
04791 Real, Intent (In) :: x_coords (*)
04792 Real, Intent (In) :: y_coords (*)
04793 Real, Intent (In) :: z_coords (*)
04794 Logical, Intent (In) :: mask_array (*)
04795 Integer, Intent (In) :: mask_shape (2, ndim_3d)
04796 Logical, Intent (In) :: mask_available
04797 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
04798 Real, Intent (In) :: sin_values_lon (*)
04799 Real, Intent (In) :: cos_values_lon (*)
04800 Real, Intent (In) :: sin_values_lat (*)
04801 Real, Intent (In) :: cos_values_lat (*)
04802 Type (integer_vector), Intent (In) :: srclocs (ndim_3d)
04803 Integer, Intent (In) :: num_neigh
04804 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc, num_neigh)
04805 Type (Extra_search_info) :: extra_search
04806 Integer, Intent (Out) :: ierror
04807 End Subroutine
04808
04809 subroutine psmile_neigh_near_irreg2_real (grid_id, &
04810 coords1, coords2, coords3, &
04811 x_coords, y_coords, z_coords, &
04812 coords_shape, &
04813 mask_array, mask_shape, mask_available, &
04814 sin_values, cos_values, grid_valid_shape, &
04815 search_mode, &
04816 srcloc, srclocz, nlocs, &
04817 nloc, nprev, &
04818 neighbors_3d, num_neigh, &
04819 extra_search, ierror)
04820
04821 Use PSMILe_common
04822
04823 Integer, Intent (In) :: grid_id
04824 Integer, Intent (In) :: nloc, nprev, search_mode
04825 Integer, Intent (In) :: nlocs (ndim_2d)
04826 Real, Intent (In) :: coords1 (nlocs(1)*nlocs(2))
04827 Real, Intent (In) :: coords2 (nlocs(1)*nlocs(2))
04828 Real, Intent (In) :: coords3 (nlocs(1)*nlocs(2))
04829 Integer, Intent (In) :: coords_shape (2, ndim_3d)
04830 Real, Intent (In) :: x_coords (*)
04831 Real, Intent (In) :: y_coords (*)
04832 Real, Intent (In) :: z_coords (*)
04833 Logical, Intent (In) :: mask_array (*)
04834 Integer, Intent (In) :: mask_shape (2, ndim_3d)
04835 Logical, Intent (In) :: mask_available
04836 Real, Intent (In) :: sin_values (*)
04837 Real, Intent (In) :: cos_values (*)
04838 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
04839 Integer, Intent (In) :: srcloc (ndim_2d, nlocs(1))
04840 Integer, Intent (In) :: srclocz (nlocs(2))
04841 Integer, Intent (In) :: num_neigh
04842 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc, num_neigh)
04843 Type (Extra_search_info) :: extra_search
04844 Integer, Intent (Out) :: ierror
04845 End Subroutine
04846
04847 subroutine psmile_neigh_nearx_irreg2_real (grid_id, &
04848 coords1, coords2, coords3, &
04849 x_coords, y_coords, z_coords, &
04850 coords_shape, &
04851 mask_array, mask_shape, mask_available, &
04852 sin_values, cos_values, grid_valid_shape, &
04853 search_mode, &
04854 srcloc, srclocz, nlocs, &
04855 nloc, nprev, &
04856 neighbors_3d, num_neigh, &
04857 extra_search, ierror)
04858
04859 Use PSMILe_common
04860
04861 Integer, Intent (In) :: grid_id
04862 Integer, Intent (In) :: nloc, nprev, search_mode
04863 Integer, Intent (In) :: nlocs (ndim_2d)
04864 Real, Intent (In) :: coords1 (nlocs(1)*nlocs(2))
04865 Real, Intent (In) :: coords2 (nlocs(1)*nlocs(2))
04866 Real, Intent (In) :: coords3 (nlocs(1)*nlocs(2))
04867 Integer, Intent (In) :: coords_shape (2, ndim_3d)
04868 Real, Intent (In) :: x_coords (*)
04869 Real, Intent (In) :: y_coords (*)
04870 Real, Intent (In) :: z_coords (*)
04871 Logical, Intent (In) :: mask_array (*)
04872 Integer, Intent (In) :: mask_shape (2, ndim_3d)
04873 Logical, Intent (In) :: mask_available
04874 Real, Intent (In) :: sin_values (*)
04875 Real, Intent (In) :: cos_values (*)
04876 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
04877 Integer, Intent (In) :: srcloc (ndim_2d, nlocs(1))
04878 Integer, Intent (In) :: srclocz (nlocs(2))
04879 Integer, Intent (In) :: num_neigh
04880 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc, num_neigh)
04881 Type (Extra_search_info) :: extra_search
04882 Integer, Intent (Out) :: ierror
04883 End Subroutine
04884
04885 subroutine psmile_neigh_nearx_sub_irr_real ( &
04886 grid_id, &
04887 x_coords, y_coords, z_coords, &
04888 coords_shape, &
04889 mask_array, mask_shape, mask_available, &
04890 sin_values, cos_values, &
04891 grid_valid_shape, search_mode, &
04892 neighbors_3d, num_neigh, nloc, &
04893 extra_search, &
04894 ijk, sin_search, cos_search, &
04895 z_search, jbeg, jend, width, ierror)
04896
04897 Use PSMILe_common
04898
04899 Integer, Intent (In) :: grid_id
04900 Integer, Intent (In) :: search_mode
04901 Integer, Intent (In) :: coords_shape (2, ndim_3d)
04902 Real, Intent (In) :: x_coords (*)
04903 Real, Intent (In) :: y_coords (*)
04904 Real, Intent (In) :: z_coords (*)
04905 Logical, Intent (In) :: mask_array (*)
04906 Integer, Intent (In) :: mask_shape (2, ndim_3d)
04907 Logical, Intent (In) :: mask_available
04908 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
04909 Real, Intent (In) :: sin_values (*)
04910 Real, Intent (In) :: cos_values (*)
04911 Integer, Intent (In) :: nloc, num_neigh
04912 Type (Extra_search_info), Intent(InOut) :: extra_search
04913 Integer, Intent (In) :: jbeg, jend
04914 Integer, Intent (In) :: ijk (ndim_3d, jbeg:jend)
04915 Integer, Intent (In) :: width (ndim_3d)
04916 Real, Intent (In) :: sin_search (jbeg:jend, 2)
04917 Real, Intent (In) :: cos_search (jbeg:jend, 2)
04918 Real, Intent (In) :: z_search (jbeg:jend)
04919 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc, num_neigh)
04920 Integer, Intent (Out) :: ierror
04921 End Subroutine
04922
04923 subroutine psmile_neigh_nearx_sub_reg_real ( &
04924 grid_id, &
04925 x_coords, y_coords, z_coords, &
04926 coords_shape, &
04927 mask_array, mask_shape, mask_available, &
04928 sin_values_lon, cos_values_lon, &
04929 sin_values_lat, cos_values_lat, &
04930 grid_valid_shape, search_mode, &
04931 neighbors_3d, num_neigh, nloc, &
04932 extra_search, &
04933 ijk, sin_search, cos_search, &
04934 z_search, jbeg, jend, width, ierror)
04935
04936 Use PSMILe_common
04937
04938 Integer, Intent (In) :: grid_id
04939 Integer, Intent (In) :: search_mode
04940 Integer, Intent (In) :: coords_shape (2, ndim_3d)
04941 Real, Intent (In) :: x_coords (*)
04942 Real, Intent (In) :: y_coords (*)
04943 Real, Intent (In) :: z_coords (*)
04944 Logical, Intent (In) :: mask_array (*)
04945 Integer, Intent (In) :: mask_shape (2, ndim_3d)
04946 Logical, Intent (In) :: mask_available
04947 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
04948 Real, Intent (In) :: sin_values_lon (*)
04949 Real, Intent (In) :: cos_values_lon (*)
04950 Real, Intent (In) :: sin_values_lat (*)
04951 Real, Intent (In) :: cos_values_lat (*)
04952 Integer, Intent (In) :: nloc, num_neigh
04953 Type (Extra_search_info), Intent(In) :: extra_search
04954 Integer, Intent (In) :: jbeg, jend
04955 Integer, Intent (In) :: ijk (ndim_3d, jbeg:jend)
04956 Integer, Intent (In) :: width (ndim_3d)
04957 Real, Intent (In) :: sin_search (jbeg:jend, 2)
04958 Real, Intent (In) :: cos_search (jbeg:jend, 2)
04959 Real, Intent (In) :: z_search (jbeg:jend)
04960 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc, num_neigh)
04961 Integer, Intent (Out) :: ierror
04962 End Subroutine
04963
04964 subroutine psmile_neigh_nearest_3d_real (grid_id, &
04965 coords1, coords2, coords3, &
04966 x_coords, y_coords, z_coords, &
04967 coords_shape, &
04968 mask_array, mask_shape, mask_available, &
04969 sin_values, cos_values, grid_valid_shape, &
04970 srcloc, nloc, nprev, nsearch, &
04971 neighbors_3d, num_neigh, &
04972 extra_search, ierror)
04973
04974 Use PSMILe_common
04975
04976 Integer, Intent (In) :: grid_id
04977 Integer, Intent (In) :: coords_shape (2, ndim_3d)
04978 Integer, Intent (In) :: mask_shape (2, ndim_3d)
04979 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
04980 Real, Intent (In) :: x_coords (*)
04981 Real, Intent (In) :: y_coords (*)
04982 Real, Intent (In) :: z_coords (*)
04983 Logical, Intent (In) :: mask_array (*)
04984 Logical, Intent (In) :: mask_available
04985 Real, Intent (In) :: sin_values (*)
04986 Real, Intent (In) :: cos_values (*)
04987 Integer, Intent (In) :: nloc, nprev, nsearch
04988 Integer, Intent (In) :: srcloc (ndim_3d, nloc)
04989 Real, Intent (In) :: coords1 (nloc)
04990 Real, Intent (In) :: coords2 (nloc)
04991 Real, Intent (In) :: coords3 (nloc)
04992 Integer, Intent (In) :: num_neigh
04993
04994 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc, num_neigh)
04995 Type (Extra_search_info) :: extra_search
04996 Integer, Intent (Out) :: ierror
04997 End Subroutine
04998
04999 subroutine psmile_neigh_nearestx_3d_real (grid_id, &
05000 coords1, coords2, coords3, &
05001 x_coords, y_coords, z_coords, &
05002 coords_shape, &
05003 mask_array, mask_shape, mask_available, &
05004 sin_values, cos_values, grid_valid_shape, &
05005 srcloc, nloc, nprev, nsearch, &
05006 neighbors_3d, num_neigh, &
05007 extra_search, ierror)
05008
05009 Use PSMILe_common
05010
05011 Integer, Intent (In) :: grid_id
05012 Integer, Intent (In) :: nloc, nprev, nsearch
05013 Integer, Intent (In) :: coords_shape (2, ndim_3d)
05014 Integer, Intent (In) :: mask_shape (2, ndim_3d)
05015 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
05016 Real, Intent (In) :: coords1 (nloc)
05017 Real, Intent (In) :: coords2 (nloc)
05018 Real, Intent (In) :: coords3 (nloc)
05019 Real, Intent (In) :: x_coords (*)
05020 Real, Intent (In) :: y_coords (*)
05021 Real, Intent (In) :: z_coords (*)
05022 Logical, Intent (In) :: mask_array (*)
05023 Logical, Intent (In) :: mask_available
05024 Real, Intent (In) :: sin_values (*)
05025 Real, Intent (In) :: cos_values (*)
05026 Integer, Intent (In) :: srcloc (ndim_3d, nloc)
05027 Integer, Intent (In) :: num_neigh
05028 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc, num_neigh)
05029
05030 Type (Extra_search_info) :: extra_search
05031 Integer, Intent (Out) :: ierror
05032 End Subroutine
05033
05034 subroutine psmile_neigh_tricu_3d ( &
05035 grid_valid_shape, interp_mode, cyclic, &
05036 srcloc, nloc,neighbors_3d, num_neigh, ierror)
05037
05038 Use PSMILe_common
05039
05040 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
05041 Integer, Intent (In) :: interp_mode
05042 Logical, Intent (In) :: cyclic (ndim_3d)
05043 Integer, Intent (In) :: nloc
05044 Integer, Intent (In) :: srcloc (ndim_3d, nloc)
05045 Integer, Intent (In) :: num_neigh
05046 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc, num_neigh)
05047 Integer, Intent (Out) :: ierror
05048 End Subroutine
05049
05050 subroutine psmile_neigh_tricu_3d_reg ( &
05051 grid_valid_shape, interp_mode, cyclic, &
05052 srclocs, nlocs, nloc, nprev, neighbors_3d, &
05053 num_neigh, ierror)
05054
05055 Use PSMILe_common
05056
05057 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
05058 Integer, Intent (In) :: interp_mode
05059 Logical, Intent (In) :: cyclic (ndim_3d)
05060 Type (integer_vector), Intent (In) :: srclocs (ndim_3d)
05061 Integer, Intent (In) :: nlocs (ndim_3d)
05062 Integer, Intent (In) :: nloc, nprev
05063 Integer, Intent (In) :: num_neigh
05064 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc, num_neigh)
05065 Integer, Intent (Out) :: ierror
05066 End Subroutine
05067
05068 subroutine psmile_neigh_tricu_gauss2 ( &
05069 grid_id, grid_valid_shape, interp_mode, &
05070 srcloc, virtual_cell, nloc,virtual_cell_available,&
05071 neighbors_3d, num_neigh, neigh_bascule, ierror)
05072
05073 Use PSMILe_common
05074
05075 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
05076 Integer, Intent (In) :: grid_id, interp_mode
05077 Logical, Intent (In) :: virtual_cell_available
05078 Integer, Intent (In) :: nloc
05079 Integer, Intent (In) :: srcloc (ndim_3d, nloc)
05080 Integer, Intent (In) :: virtual_cell (nloc)
05081 Integer, Intent (In) :: num_neigh
05082 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc, num_neigh)
05083 Integer, Intent (Out) :: neigh_bascule(nloc)
05084 Integer, Intent (Out) :: ierror
05085 End Subroutine
05086
05087 subroutine psmile_neigh_tricu_gauss2_irreg ( &
05088 grid_id, grid_valid_shape, interp_mode, &
05089 srcloc, srclocz, virtual_cell, nlocs, nloc, nprev,&
05090 virtual_cell_available, neighbors_3d, num_neigh, &
05091 neigh_bascule, ierror)
05092
05093 Use PSMILe_common
05094
05095 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
05096 Integer, Intent (In) :: grid_id, interp_mode
05097 Integer, Intent (In) :: nlocs (ndim_2d)
05098 Integer, Intent (In) :: srcloc (ndim_2d, nlocs(1))
05099 Integer, Intent (In) :: srclocz (nlocs(2))
05100 Integer, Intent (In) :: virtual_cell (nlocs(1))
05101 Integer, Intent (In) :: nloc, nprev
05102 Integer, Intent (In) :: num_neigh
05103 Logical, Intent (In) :: virtual_cell_available
05104 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc, num_neigh)
05105 Integer, Intent (Out) :: neigh_bascule(nloc)
05106 Integer, Intent (Out) :: ierror
05107 End Subroutine
05108
05109 subroutine psmile_neigh_tricu_irreg2 ( &
05110 grid_valid_shape, interp_mode, cyclic, &
05111 srcloc, srclocz, nlocs, nloc, nprev,neighbors_3d, &
05112 num_neigh, ierror)
05113
05114 Use PSMILe_common
05115
05116 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
05117 Integer, Intent (In) :: interp_mode
05118 Logical, Intent (In) :: cyclic (ndim_3d)
05119 Integer, Intent (In) :: nlocs (ndim_2d)
05120 Integer, Intent (In) :: srcloc (ndim_2d, nlocs(1))
05121 Integer, Intent (In) :: srclocz (nlocs(2))
05122 Integer, Intent (In) :: nloc, nprev
05123 Integer, Intent (In) :: num_neigh
05124 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc, num_neigh)
05125 Integer, Intent (Out) :: ierror
05126 End Subroutine
05127
05128 subroutine psmile_neigh_trili_3d ( &
05129 grid_valid_shape, interp_mode, cyclic, &
05130 srcloc, nloc, neighbors_3d, num_neigh, &
05131 ierror)
05132
05133 Use PSMILe_common
05134
05135 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
05136 Integer, Intent (In) :: interp_mode
05137 Logical, Intent (In) :: cyclic (ndim_3d)
05138 Integer, Intent (In) :: nloc
05139 Integer, Intent (In) :: srcloc (ndim_3d, nloc)
05140 Integer, Intent (In) :: num_neigh
05141 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc, num_neigh)
05142 Integer, Intent (Out) :: ierror
05143 End Subroutine
05144
05145 subroutine psmile_neigh_trili_3d_reg ( &
05146 grid_valid_shape, interp_mode, cyclic, &
05147 srclocs, nlocs, nloc, nprev,neighbors_3d, &
05148 num_neigh, ierror)
05149
05150 Use PSMILe_common
05151
05152 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
05153 Integer, Intent (In) :: interp_mode
05154 Logical, Intent (In) :: cyclic (ndim_3d)
05155 Type (integer_vector), Intent (In) :: srclocs (ndim_3d)
05156 Integer, Intent (In) :: nlocs (ndim_3d)
05157 Integer, Intent (In) :: nloc, nprev
05158 Integer, Intent (In) :: num_neigh
05159 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc, num_neigh)
05160 Integer, Intent (Out) :: ierror
05161 End Subroutine
05162
05163 subroutine psmile_neigh_trili_gauss2 ( &
05164 grid_id, grid_valid_shape, interp_mode, srcloc, &
05165 virtual_cell, nloc, virtual_cell_available, &
05166 neighbors_3d, num_neigh, ierror)
05167
05168 Use PSMILe_common
05169
05170 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
05171 Integer, Intent (In) :: grid_id, interp_mode
05172 Logical, Intent (In) :: virtual_cell_available
05173 Integer, Intent (In) :: nloc
05174 Integer, Intent (In) :: srcloc (ndim_3d, nloc)
05175 Integer, Intent (In) :: virtual_cell (nloc)
05176 Integer, Intent (In) :: num_neigh
05177 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc, num_neigh)
05178 Integer, Intent (Out) :: ierror
05179 End Subroutine
05180
05181 subroutine psmile_neigh_trili_gauss2_irreg ( &
05182 grid_id, grid_valid_shape, interp_mode, &
05183 srcloc, srclocz, virtual_cell, nlocs, &
05184 nloc, nprev, virtual_cell_available,neighbors_3d, &
05185 num_neigh, ierror)
05186
05187 Use PSMILe_common
05188
05189 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
05190 Integer, Intent (In) :: grid_id, interp_mode
05191 Integer, Intent (In) :: nlocs (ndim_2d)
05192 Integer, Intent (In) :: srcloc (ndim_2d, nlocs(1))
05193 Integer, Intent (In) :: srclocz (nlocs(2))
05194 Integer, Intent (In) :: virtual_cell (nlocs(1))
05195 Integer, Intent (In) :: nloc, nprev
05196 Integer, Intent (In) :: num_neigh
05197 Logical, Intent (In) :: virtual_cell_available
05198 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc, num_neigh)
05199 Integer, Intent (Out) :: ierror
05200 End Subroutine
05201
05202 subroutine psmile_neigh_trili_irreg2 ( &
05203 grid_valid_shape, interp_mode, cyclic, &
05204 srcloc, srclocz, nlocs, nloc, nprev, neighbors_3d,&
05205 num_neigh, ierror)
05206
05207 Use PSMILe_common
05208
05209 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
05210 Integer, Intent (In) :: interp_mode
05211 Logical, Intent (In) :: cyclic (ndim_3d)
05212 Integer, Intent (In) :: nlocs (ndim_2d)
05213 Integer, Intent (In) :: srcloc (ndim_2d, nlocs(1))
05214 Integer, Intent (In) :: srclocz (nlocs(2))
05215 Integer, Intent (In) :: nloc, nprev
05216 Integer, Intent (In) :: num_neigh
05217 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc, num_neigh)
05218 Integer, Intent (Out) :: ierror
05219 End Subroutine
05220
05221 subroutine psmile_mg_coarse_1d_real (lev, chmin, chmax, &
05222 found, locations, coords, &
05223 ibeg, iend)
05224 Integer, Intent (In) :: lev
05225 Integer, Intent (InOut) :: ibeg, iend
05226 Real, Intent (In) :: chmin (0:0), chmax (0:0)
05227 Integer, Intent (InOut) :: found (iend)
05228 Integer, Intent (InOut) :: locations (iend)
05229 Real, Intent (In) :: coords (iend)
05230 End Subroutine
05231
05232 subroutine psmile_mg_coarse_2d_real (lev, chmin, chmax, &
05233 found, locations, coords1, &
05234 coords2, ibeg, iend)
05235 Use PSMILe_common
05236
05237 Integer, Intent (In) :: lev
05238 Integer, Intent (InOut) :: ibeg, iend
05239 Type (real_vector), Intent (In) :: chmin (ndim_2d), chmax (ndim_2d)
05240 Integer, Intent (InOut) :: found (iend)
05241 Integer, Intent (InOut) :: locations (iend)
05242 Real, Intent (In) :: coords1 (iend)
05243 Real, Intent (In) :: coords2 (iend)
05244 End Subroutine
05245
05246 subroutine psmile_mg_coarse_3d_real (lev, chmin, chmax, &
05247 found, locations, coords1, &
05248 coords2, coords3, ibeg, iend)
05249 Use PSMILe_common
05250
05251 Integer, Intent (In) :: lev
05252 Integer, Intent (InOut) :: ibeg, iend
05253 Type (real_vector), Intent (In) :: chmin (ndim_3d), chmax (ndim_3d)
05254 Integer, Intent (InOut) :: found (iend)
05255 Integer, Intent (InOut) :: locations (iend)
05256 Real, Intent (In) :: coords1 (iend)
05257 Real, Intent (In) :: coords2 (iend)
05258 Real, Intent (In) :: coords3 (iend)
05259 End Subroutine
05260
05261 subroutine psmile_mg_next_level_1d_real (grid_id, idim, &
05262 lev, nlev, &
05263 chmin, chmax, midp, levdim, &
05264 found, loc, coords, ibeg, iend, &
05265 ijkinc, ijkcoa, ierror)
05266
05267 Use PSMILe_common
05268 Integer, Intent (In) :: grid_id
05269 Integer, Intent (In) :: idim, levdim
05270 Integer, Intent (InOut) :: ibeg, iend
05271 Integer, Intent (In) :: lev, nlev, ijkinc, ijkcoa
05272 Real, Intent (In) :: chmin (0:levdim)
05273 Real, Intent (In) :: chmax (0:levdim)
05274 Real, Intent (In) :: midp (0:levdim)
05275 Integer, Intent (InOut) :: found (iend)
05276 Integer, Intent (InOut) :: loc (iend)
05277 Real, Intent (In) :: coords (iend)
05278 Integer, Intent (Out) :: ierror
05279 End Subroutine
05280
05281 subroutine psmile_mg_next_level_2d_real (grid_id, lev, nlev, &
05282 chmin1, chmin2, &
05283 chmax1, chmax2, &
05284 midp1, midp2, &
05285 levdim, &
05286 found, loc, range, &
05287 coords1, coords2, &
05288 shape, control, &
05289 ijkinc, ijkcoa, ierror)
05290
05291 Use PSMILe_common
05292 Integer, Intent (In) :: grid_id
05293 Integer, Intent (In) :: levdim (ndim_2d)
05294 Integer, Intent (In) :: lev, nlev
05295 Integer, Intent (In) :: ijkinc(ndim_3d), ijkcoa(ndim_2d)
05296 Real, Intent (In) :: chmin1 (*), chmin2 (*)
05297 Real, Intent (In) :: chmax1 (*), chmax2 (*)
05298 Real, Intent (In) :: midp1 (*), midp2 (*)
05299 Integer, Intent (InOut) :: found (*)
05300 Integer, Intent (InOut) :: loc (2, *)
05301 Integer, Intent (In) :: range (2, ndim_3d)
05302 Real, Intent (In) :: coords1 (*)
05303 Real, Intent (In) :: coords2 (*)
05304 Integer, Intent (In) :: shape (2, ndim_3d)
05305 Integer, Intent (InOut) :: control (2, ndim_3d)
05306 Integer, Intent (Out) :: ierror
05307 End Subroutine
05308
05309 subroutine psmile_mg_next_level_3d_real (grid_id, lev, nlev, &
05310 chmin1, chmin2, chmin3, &
05311 chmax1, chmax2, chmax3, &
05312 midp1, midp2, midp3, &
05313 levdim, &
05314 found, loc, range, &
05315 coords1, coords2, coords3, &
05316 shape, control, &
05317 ijkinc, ijkcoa, ierror)
05318
05319 Use PSMILe_common
05320 Integer, Intent (In) :: grid_id
05321 Integer, Intent (In) :: levdim (ndim_3d)
05322 Integer, Intent (In) :: lev, nlev
05323 Integer, Intent (In) :: ijkinc(ndim_3d), ijkcoa(ndim_3d)
05324 Real, Intent (In) :: chmin1 (*), chmin2 (*), chmin3 (*)
05325 Real, Intent (In) :: chmax1 (*), chmax2 (*), chmax3 (*)
05326 Real, Intent (In) :: midp1 (*), midp2 (*), midp3 (*)
05327 Integer, Intent (InOut) :: found (*)
05328 Integer, Intent (InOut) :: loc (ndim_3d, *)
05329 Integer, Intent (In) :: range (2, ndim_3d)
05330 Real, Intent (In) :: coords1 (*)
05331 Real, Intent (In) :: coords2 (*)
05332 Real, Intent (In) :: coords3 (*)
05333 Integer, Intent (In) :: shape (2, ndim_3d)
05334 Integer, Intent (InOut) :: control (2, ndim_3d)
05335 Integer, Intent (Out) :: ierror
05336 End Subroutine
05337
05338 subroutine psmile_mg_prev_levels_1d_real (grid_id, idim, &
05339 lev, nlev, &
05340 lstijk, xyz, found, newijk)
05341 Use PSMILe_common
05342 Integer, Intent (In) :: grid_id
05343 Integer, Intent (In) :: idim
05344 Integer, Intent (In) :: lev, nlev
05345 Integer, Intent (In) :: lstijk
05346 Real, Intent (In) :: xyz
05347 Integer, Intent (Out) :: found, newijk
05348 End Subroutine
05349
05350 subroutine psmile_mg_prev_levels_2d_real (grid_id, &
05351 lev, nlev, &
05352 lstijk, xyz, found, newijk, nc)
05353 Use PSMILe_Common
05354 Integer, Intent (In) :: grid_id
05355 Integer, Intent (In) :: lev, nlev, nc
05356 Integer, Intent (In) :: lstijk (ndim_2d, nc)
05357 Real, Intent (In) :: xyz (ndim_2d, nc)
05358 Integer, Intent (Out) :: found (nc), newijk (ndim_2d, nc)
05359 End Subroutine
05360
05361 subroutine psmile_mg_prev_levels_3d_real (grid_id, &
05362 lev, nlev, &
05363 lstijk, xyz, found, newijk)
05364 Use PSMILe_common
05365 Integer, Intent (In) :: grid_id
05366 Integer, Intent (In) :: lev, nlev
05367 Integer, Intent (In) :: lstijk (ndim_3d)
05368 Real, Intent (In) :: xyz (ndim_3d)
05369 Integer, Intent (Out) :: found, newijk (ndim_3d)
05370 End Subroutine
05371
05372 subroutine psmile_mg_cells_1d_real ( nlev, found, loc, range, &
05373 search_grid_type, &
05374 corners1, search_dim, &
05375 shape, control, &
05376 grid_valid_shape, cyclic, &
05377 chmin, chmax, tol, ierror )
05378 Use PSMILe_common
05379 Integer, Intent (In) :: nlev
05380 Integer, Intent (In) :: search_grid_type
05381 Integer, Intent (In) :: range (2, ndim_3d)
05382 Integer, Intent (In) :: shape (2, ndim_3d)
05383 Integer, Intent (InOut) :: found (range(1,1):range(2,1),
05384 range(1,2):range(2,2),
05385 range(1,3):range(2,3))
05386 Integer, Intent (InOut) :: loc (range(1,1):range(2,1),
05387 range(1,2):range(2,2),
05388 range(1,3):range(2,3))
05389 Real, Intent (In) :: corners1 (shape(1,1):shape(2,1),
05390 shape(1,2):shape(2,2),
05391 shape(1,3):shape(2,3))
05392 Integer, Intent (In) :: control (2, ndim_3d)
05393 Integer, Intent (In) :: search_dim
05394 Integer, Intent (In) :: grid_valid_shape (2)
05395 Logical, Intent (In) :: cyclic
05396 Real, Intent (In) :: chmin (grid_valid_shape(1):
05397 grid_valid_shape(2)+2)
05398 Real, Intent (In) :: chmax (grid_valid_shape(1):
05399 grid_valid_shape(2)+2)
05400 Real, Intent (In) :: tol
05401 Integer, Intent (Out) :: ierror
05402 End Subroutine
05403
05404 subroutine psmile_mg_cells_2d_real ( grid_id, search_grid_type, &
05405 found, loc, loc_fnd_shape, &
05406 tgt_corners_x, tgt_corners_y, &
05407 tgt_corner_shape, control, &
05408 grid_valid_shape, &
05409 ipart, src_corner_shape, nbr_corners, &
05410 src_corners_x, src_corners_y, &
05411 chmin1, chmax1, chmin2, chmax2, &
05412 tol, ierror )
05413 Use PSMILe_common
05414 Integer, Intent (In) :: grid_id
05415 Integer, Intent (In) :: search_grid_type
05416 Integer, Intent (In) :: loc_fnd_shape (2, ndim_3d)
05417 Integer, Intent (In) :: tgt_corner_shape (2, ndim_3d)
05418 Integer, Intent (InOut) :: found (loc_fnd_shape(1,1):loc_fnd_shape(2,1),
05419 loc_fnd_shape(1,2):loc_fnd_shape(2,2),
05420 loc_fnd_shape(1,3):loc_fnd_shape(2,3))
05421 Integer, Intent (InOut) :: loc (ndim_2d,
05422 loc_fnd_shape(1,1):loc_fnd_shape(2,1),
05423 loc_fnd_shape(1,2):loc_fnd_shape(2,2),
05424 loc_fnd_shape(1,3):loc_fnd_shape(2,3))
05425 Real, Intent (In) :: tgt_corners_x (
05426 tgt_corner_shape(1,1):tgt_corner_shape(2,1),
05427 tgt_corner_shape(1,2):tgt_corner_shape(2,2),
05428 tgt_corner_shape(1,3):tgt_corner_shape(2,3))
05429 Real, Intent (In) :: tgt_corners_y (
05430 tgt_corner_shape(1,1):tgt_corner_shape(2,1),
05431 tgt_corner_shape(1,2):tgt_corner_shape(2,2),
05432 tgt_corner_shape(1,3):tgt_corner_shape(2,3))
05433 Integer, Intent (In) :: control (2, ndim_3d)
05434 Integer, Intent (In) :: grid_valid_shape(2,ndim_2d)
05435 Integer, Intent (In) :: ipart
05436 Integer, Intent (In) :: src_corner_shape (2,2)
05437 Integer, Intent (In) :: nbr_corners
05438 Real, Intent (In) :: src_corners_x (
05439 src_corner_shape (1,1):src_corner_shape(2,1),
05440 src_corner_shape (1,2):src_corner_shape(2,2),
05441 nbr_corners)
05442 Real, Intent (In) :: src_corners_y (
05443 src_corner_shape (1,1):src_corner_shape(2,1),
05444 src_corner_shape (1,2):src_corner_shape(2,2),
05445 nbr_corners)
05446 Real, Intent (InOut) :: chmin1 (grid_valid_shape(1,1):
05447 grid_valid_shape(2,1)+1 ,
05448 grid_valid_shape(1,2):
05449 grid_valid_shape(2,2)+1)
05450 Real, Intent (InOut) :: chmin2 (grid_valid_shape(1,1):
05451 grid_valid_shape(2,1)+1,
05452 grid_valid_shape(1,2):
05453 grid_valid_shape(2,2)+1)
05454 Real, Intent (InOut) :: chmax1 (grid_valid_shape(1,1):
05455 grid_valid_shape(2,1)+1 ,
05456 grid_valid_shape(1,2):
05457 grid_valid_shape(2,2)+1)
05458 Real, Intent (InOut) :: chmax2 (grid_valid_shape(1,1):
05459 grid_valid_shape(2,1)+1,
05460 grid_valid_shape(1,2):
05461 grid_valid_shape(2,2)+1)
05462 Real, Intent (In) :: tol
05463 Integer, Intent (Out) :: ierror
05464 End Subroutine
05465
05466 subroutine psmile_mg_control_cell_1d_real ( &
05467 chmin, chmax, midp, levdim, &
05468 ijk, xyz, nold, all, wide, found, newijk)
05469 Use PSMILe_common
05470
05471 Integer, Intent (In) :: levdim
05472 Real, Intent (In) :: chmin (0:levdim)
05473 Real, Intent (In) :: chmax (0:levdim)
05474 Real, Intent (In) :: midp (0:levdim)
05475 Integer, Intent (In) :: ijk, nold
05476 Logical, Intent (In) :: all, wide
05477 Real, Intent (In) :: xyz
05478 Integer, Intent (Out) :: found, newijk
05479 End Subroutine
05480
05481 subroutine psmile_mg_control_cell_2d_real ( &
05482 chmin1, chmin2, &
05483 chmax1, chmax2, &
05484 midp1, midp2, &
05485 levdim, &
05486 ijk, xyz, nold, ignore, wide, found, newijk)
05487 Use PSMILe_common
05488
05489 Real, Intent (In) :: chmin1 (*), chmin2 (*)
05490 Real, Intent (In) :: chmax1 (*), chmax2 (*)
05491 Real, Intent (In) :: midp1 (*), midp2 (*)
05492 Integer, Intent (In) :: levdim (ndim_2d)
05493 Integer, Intent (In) :: ijk(ndim_2d), nold
05494 Integer, Intent (In) :: ignore(ndim_2d)
05495 Logical, Intent (In) :: wide
05496 Real, Intent (In) :: xyz(ndim_2d)
05497 Integer, Intent (Out) :: found, newijk(ndim_2d)
05498 End Subroutine
05499
05500 subroutine psmile_mg_control_cell_3d_real ( &
05501 chmin1, chmin2, chmin3, &
05502 chmax1, chmax2, chmax3, &
05503 midp1, midp2, midp3, &
05504 levdim, &
05505 ijk, xyz, nold, all, wide, found, newijk)
05506 Use PSMILe_common
05507
05508 Real, Intent (In) :: chmin1 (*), chmin2 (*), chmin3 (*)
05509 Real, Intent (In) :: chmax1 (*), chmax2 (*), chmax3 (*)
05510 Real, Intent (In) :: midp1 (*), midp2 (*), midp3 (*)
05511 Integer, Intent (In) :: levdim (ndim_3d)
05512 Integer, Intent (In) :: ijk(ndim_3d), nold
05513 Logical, Intent (In) :: all, wide
05514 Real, Intent (In) :: xyz(ndim_3d)
05515 Integer, Intent (Out) :: found, newijk(ndim_3d)
05516 End Subroutine
05517
05518 subroutine psmile_mg_final_2d_real (grid_id, nlev, &
05519 chmin1, chmin2, chmax1, chmax2, &
05520 midp1, midp2, levdim, &
05521 found, loc, range, &
05522 coords1, coords2, shape, control, &
05523 corners1, corners2, corner_shape, nbr_corners, &
05524 tol, ierror)
05525 Use PSMILe_common
05526
05527 Integer, Intent (In) :: grid_id, nlev
05528 Integer, Intent (In) :: levdim (ndim_2d)
05529 Real, Intent (In) :: chmin1 (0:levdim(1),
05530 0:levdim(2))
05531 Real, Intent (In) :: chmin2 (0:levdim(1),
05532 0:levdim(2))
05533 Real, Intent (In) :: chmax1 (0:levdim(1),
05534 0:levdim(2))
05535 Real, Intent (In) :: chmax2 (0:levdim(1),
05536 0:levdim(2))
05537 Real, Intent (In) :: midp1 (0:levdim(1),
05538 0:levdim(2))
05539 Real, Intent (In) :: midp2 (0:levdim(1),
05540 0:levdim(2))
05541 Integer, Intent (In) :: range (2, ndim_3d)
05542 Integer, Intent (In) :: shape (2, ndim_3d)
05543 Integer, Intent (InOut) :: found (range(1,1):range(2,1),
05544 range(1,2):range(2,2),
05545 range(1,3):range(2,3))
05546 Integer, Intent (InOut) :: loc (ndim_2d,
05547 range(1,1):range(2,1),
05548 range(1,2):range(2,2),
05549 range(1,3):range(2,3))
05550 Real, Intent (In) :: coords1 (shape(1,1):shape(2,1),
05551 shape(1,2):shape(2,2),
05552 shape(1,3):shape(2,3))
05553 Real, Intent (In) :: coords2 (shape(1,1):shape(2,1),
05554 shape(1,2):shape(2,2),
05555 shape(1,3):shape(2,3))
05556 Integer, Intent (In) :: control (2, ndim_3d)
05557 Integer, Intent (In) :: corner_shape (2, ndim_2d)
05558 Integer, Intent (In) :: nbr_corners
05559 Real, Intent (In) ::
05560 corners1 ( corner_shape(1,1):corner_shape(2,1),
05561 corner_shape(1,2):corner_shape(2,2), nbr_corners)
05562 Real, Intent (In) ::
05563 corners2 ( corner_shape(1,1):corner_shape(2,1),
05564 corner_shape(1,2):corner_shape(2,2), nbr_corners)
05565 Real, Intent (In) :: tol
05566 Integer, Intent (Out) :: ierror
05567 End Subroutine
05568
05569 subroutine psmile_mg_final_3d_real (comp_info, nlev, &
05570 found, loc, range, &
05571 coords1, coords2, coords3, &
05572 shape, control, &
05573 grid_id, &
05574 x_coords, y_coords, z_coords, &
05575 coords_shape, &
05576 nbr_corners, &
05577 ijk0, tol, ierror)
05578
05579 Use PSMILe_common
05580 Type (Enddef_comp), Intent (In) :: comp_info
05581 Integer, Intent (In) :: nlev
05582 Integer, Intent (InOut) :: found (*)
05583 Integer, Intent (InOut) :: loc (ndim_3d, *)
05584 Integer, Intent (In) :: range (2, ndim_3d)
05585 Real, Intent (In) :: coords1 (*)
05586 Real, Intent (In) :: coords2 (*)
05587 Real, Intent (In) :: coords3 (*)
05588 Integer, Intent (In) :: shape (2, ndim_3d)
05589 Integer, Intent (InOut) :: control (2, ndim_3d)
05590 Integer, Intent (In) :: grid_id
05591 Integer, Intent (In) :: coords_shape (2, ndim_3d)
05592 Real, Intent (In) :: x_coords (*)
05593 Real, Intent (In) :: y_coords (*)
05594 Real, Intent (In) :: z_coords (*)
05595 Integer, Intent (In) :: nbr_corners
05596 Integer, Intent (In) :: ijk0 (ndim_3d)
05597 Real, Intent (In) :: tol
05598 Integer, Intent (Out) :: ierror
05599 End Subroutine
05600
05601 subroutine psmile_mg_final_gauss2_real ( &
05602 grid_id, found, locations, fnd_loc_range, &
05603 tgt_coords_x, tgt_coords_y, tgt_coords_shape, search_range, &
05604 src_corners_x, src_corners_y, src_corner_shape, nbr_corners, &
05605 ierror)
05606
05607 use psmile_common
05608
05609 integer, intent (in) :: grid_id
05610 integer, intent (in) :: fnd_loc_range (2, ndim_3d)
05611 integer, intent (in) :: tgt_coords_shape (2, ndim_3d)
05612 real, intent (in) ::
05613 tgt_coords_x (tgt_coords_shape(1,1):tgt_coords_shape(2,1),
05614 tgt_coords_shape(1,2):tgt_coords_shape(2,2),
05615 tgt_coords_shape(1,3):tgt_coords_shape(2,3))
05616 real, intent (in) ::
05617 tgt_coords_y (tgt_coords_shape(1,1):tgt_coords_shape(2,1),
05618 tgt_coords_shape(1,2):tgt_coords_shape(2,2),
05619 tgt_coords_shape(1,3):tgt_coords_shape(2,3))
05620 integer, intent (in) :: search_range (2, ndim_3d)
05621 integer, intent (in) :: src_corner_shape (2, ndim_2d)
05622 integer, intent (in) :: nbr_corners
05623 real, intent (in) ::
05624 src_corners_x ( src_corner_shape(1,1):src_corner_shape(2,1), nbr_corners)
05625 real, intent (in) ::
05626 src_corners_y ( src_corner_shape(1,1):src_corner_shape(2,1), nbr_corners)
05627 integer, intent (inout) :: found (fnd_loc_range(1,1):fnd_loc_range(2,1),
05628 fnd_loc_range(1,2):fnd_loc_range(2,2),
05629 fnd_loc_range(1,3):fnd_loc_range(2,3))
05630 integer, intent (inout) :: locations (fnd_loc_range(1,1):fnd_loc_range(2,1),
05631 fnd_loc_range(1,2):fnd_loc_range(2,2),
05632 fnd_loc_range(1,3):fnd_loc_range(2,3))
05633 integer, intent (out) :: ierror
05634 end subroutine
05635
05636 subroutine psmile_mg_final_prev_2d_real (grid_id, nlev, &
05637 lstijk, xyz, found, newijk, nc, &
05638 corners1, corners2, corner_shape, nbr_corners, &
05639 tol, ierror)
05640 Use PSMILe_common
05641
05642 Integer, Intent (In) :: grid_id, nlev
05643 Integer, Intent (In) :: nc
05644 Integer, Intent (In) :: lstijk (ndim_2d, nc)
05645 Real, Intent (In) :: xyz (ndim_2d, nc)
05646 Integer, Intent (In) :: corner_shape (2, ndim_2d)
05647 Integer, Intent (In) :: nbr_corners
05648 Real, Intent (In) ::
05649 corners1 ( corner_shape(1,1):corner_shape(2,1),
05650 corner_shape(1,2):corner_shape(2,2), nbr_corners)
05651 Real, Intent (In) ::
05652 corners2 ( corner_shape(1,1):corner_shape(2,1),
05653 corner_shape(1,2):corner_shape(2,2), nbr_corners)
05654 Real, Intent (In) :: tol
05655
05656 Integer, Intent (Out) :: found (nc)
05657 Integer, Intent (Out) :: newijk (ndim_2d, nc)
05658 Integer, Intent (Out) :: ierror
05659 End Subroutine
05660
05661 subroutine psmile_mg_method_1d_real (comp_info, nlev, &
05662 found, loc, range, &
05663 coords1, &
05664 shape, control, &
05665 method_id, &
05666 x_coords, &
05667 coords_shape, &
05668 grid_valid_shape, cyclic, &
05669 chmin, chmax, &
05670 tol, ierror)
05671
05672 Use PSMILe_common
05673
05674 Type (Enddef_comp), Intent (In) :: comp_info
05675 Integer, Intent (In) :: nlev
05676 Integer, Intent (InOut) :: found (*)
05677 Integer, Intent (InOut) :: loc (*)
05678 Integer, Intent (In) :: range (2, ndim_3d)
05679 Real, Intent (In) :: coords1 (*)
05680 Integer, Intent (In) :: shape (2, ndim_3d)
05681 Integer, Intent (In) :: control (2, ndim_3d)
05682 Integer, Intent (In) :: method_id
05683 Integer, Intent (In) :: coords_shape (2)
05684 Integer, Intent (In) :: grid_valid_shape (2)
05685 Logical, Intent (In) :: cyclic
05686 Real, Intent (In) :: x_coords (*)
05687 Real, Intent (In) :: chmin (*), chmax (*)
05688 Real, Intent (In) :: tol
05689 Integer, Intent (Out) :: ierror
05690 End Subroutine
05691
05692 subroutine psmile_mg_method_2d_real (comp_info, &
05693 nlev, found, loc, range, &
05694 coords1, coords2, search_shape, control, &
05695 x_coords, y_coords, coords_shape, &
05696 grid_valid_shape, cyclic, period, &
05697 chmin1, chmin2, chmax1, chmax2, &
05698 tol, ierror)
05699 Use PSMILe_common
05700
05701 Type (Enddef_comp), Intent (In) :: comp_info
05702 Integer, Intent (In) :: nlev
05703 Integer, Intent (InOut) :: found (*)
05704 Integer, Intent (InOut) :: loc (ndim_2d, *)
05705 Integer, Intent (In) :: range (2, ndim_3d)
05706 Real, Intent (In) :: coords1 (*)
05707 Real, Intent (In) :: coords2 (*)
05708 Integer, Intent (In) :: search_shape (2, ndim_3d)
05709 Integer, Intent (In) :: control (2, ndim_3d)
05710 Integer, Intent (In) :: coords_shape (2, ndim_2d)
05711 Integer, Intent (In) :: grid_valid_shape (2, ndim_2d)
05712 Logical, Intent (In) :: cyclic (ndim_2d)
05713 Real, Intent (In) :: period (ndim_2d)
05714 Real, Intent (In) :: x_coords (*)
05715 Real, Intent (In) :: y_coords (*)
05716 Real, Intent (In) :: chmin1 (*), chmin2 (*)
05717 Real, Intent (In) :: chmax1 (*), chmax2 (*)
05718 Real, Intent (In) :: tol
05719 Integer, Intent (Out) :: ierror
05720 End Subroutine
05721
05722 subroutine psmile_mg_method_3d_real (comp_info, nlev, &
05723 found, loc, range, &
05724 coords1, coords2, coords3, &
05725 shape, control, &
05726 method_id, &
05727 x_coords, y_coords, z_coords, &
05728 coords_shape, &
05729 grid_valid_shape, cyclic, &
05730 chmin1, chmin2, chmin3, &
05731 chmax1, chmax2, chmax3, &
05732 midp1, midp2, midp3, &
05733 tol, ierror)
05734
05735 Use PSMILe_common
05736
05737 Type (Enddef_comp), Intent (In) :: comp_info
05738 Integer, Intent (In) :: nlev
05739 Integer, Intent (InOut) :: found (*)
05740 Integer, Intent (InOut) :: loc (ndim_3d, *)
05741 Integer, Intent (In) :: range (2, ndim_3d)
05742 Real, Intent (In) :: coords1 (*)
05743 Real, Intent (In) :: coords2 (*)
05744 Real, Intent (In) :: coords3 (*)
05745 Integer, Intent (In) :: shape (2, ndim_3d)
05746 Integer, Intent (In) :: control (2, ndim_3d)
05747 Integer, Intent (In) :: method_id
05748 Integer, Intent (In) :: coords_shape (2, ndim_3d)
05749 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
05750 Logical, Intent (In) :: cyclic (ndim_3d)
05751 Real, Intent (In) :: x_coords (*)
05752 Real, Intent (In) :: y_coords (*)
05753 Real, Intent (In) :: z_coords (*)
05754 Real, Intent (In) :: tol
05755 Real, Intent (In) :: chmin1 (*), chmin2 (*), chmin3 (*)
05756 Real, Intent (In) :: chmax1 (*), chmax2 (*), chmax3 (*)
05757 Real, Intent (In) :: midp1 (*), midp2 (*), midp3 (*)
05758 Integer, Intent (Out) :: ierror
05759 End Subroutine
05760
05761 subroutine psmile_mg_method_gauss2_real (method_id, search_range, &
05762 tgt_shape, tgt_coords_x, &
05763 tgt_coords_y, loc_fnd_shape, &
05764 found, loc, virtual_cell, &
05765 ierror)
05766
05767 use psmile_common
05768
05769 Integer, Intent (In) :: method_id
05770 Integer, Intent (In) :: search_range (2, ndim_3d)
05771 Integer, Intent (In) :: loc_fnd_shape (2, ndim_3d)
05772 Integer, Intent (In) :: tgt_shape (2, ndim_3d)
05773 Real, Intent (In) :: tgt_coords_x (tgt_shape(1,1):tgt_shape(2,1),
05774 tgt_shape(1,2):tgt_shape(2,2),
05775 tgt_shape(1,3):tgt_shape(2,3)),
05776 tgt_coords_y (tgt_shape(1,1):tgt_shape(2,1),
05777 tgt_shape(1,2):tgt_shape(2,2),
05778 tgt_shape(1,3):tgt_shape(2,3))
05779 Integer, Intent (InOut) :: found (loc_fnd_shape(1,1):loc_fnd_shape(2,1),
05780 loc_fnd_shape(1,2):loc_fnd_shape(2,2),
05781 loc_fnd_shape(1,3):loc_fnd_shape(2,3))
05782 Integer, Intent (InOut) :: loc (loc_fnd_shape(1,1):loc_fnd_shape(2,1),
05783 loc_fnd_shape(1,2):loc_fnd_shape(2,2),
05784 loc_fnd_shape(1,3):loc_fnd_shape(2,3))
05785 Integer, Intent (Out) :: virtual_cell (loc_fnd_shape(1,1):loc_fnd_shape(2,1),
05786 loc_fnd_shape(1,2):loc_fnd_shape(2,2),
05787 loc_fnd_shape(1,3):loc_fnd_shape(2,3))
05788 Integer, Intent (Out) :: ierror
05789 end subroutine
05790
05791 subroutine psmile_mg_method_irreg2_real (comp_info, &
05792 found, locations, search, &
05793 array, shape_2d, range_2d, control_2d, &
05794 shape_1d, range_1d, control_1d, &
05795 m_arrays, m_levdim, &
05796 grid_id, method_id, tol, ierror)
05797
05798 Use PSMILe_common
05799
05800 Type (Enddef_comp), Intent (In) :: comp_info
05801 Type (Enddef_search) :: search
05802 Integer, Intent (In) :: grid_id, method_id
05803 Real, Intent (In) :: tol
05804 Type (real_vector), Intent (In) :: array ( ndim_3d, search%npart)
05805 Integer, Intent (In) :: shape_2d (2, ndim_3d, search%npart)
05806 Integer, Intent (In) :: range_2d (2, ndim_3d, search%npart)
05807 Integer, Intent (In) :: control_2d (2, ndim_3d, search%npart)
05808 Integer, Intent (In) :: shape_1d (2, ndim_3d, search%npart)
05809 Integer, Intent (In) :: range_1d (2, ndim_3d, search%npart)
05810 Integer, Intent (In) :: control_1d (2, ndim_3d, search%npart)
05811 Type (Enddef_mg_real) :: m_arrays
05812 Integer, Intent (In) :: m_levdim (ndim_3d)
05813 Type (integer_vector) :: found (search%npart, 2)
05814 Type (integer_vector) :: locations (search%npart, 2)
05815 Integer, Intent (Out) :: ierror
05816 End Subroutine
05817
05818 subroutine psmile_mg_srch_nneigh_reg_real (grid_id, nn_srch, &
05819 arrays, search_mode, nref_3d, grid_valid_shape, &
05820 neighbors_3d, nloc, num_neigh, &
05821 sin_search, cos_search, z_search, &
05822 dist_real, dim1, indices, jbeg, jend, &
05823 mask_array, mask_shape, mask_available, &
05824 tol, ierror)
05825
05826 Use PSMILe_common
05827
05828 Integer, Intent (In) :: grid_id
05829 Type (Extra_search_nn), Intent (In) :: nn_srch
05830 Type (Extra_search_real) :: arrays
05831 Integer, Intent (In) :: search_mode, nref_3d
05832 Integer, Intent (In) :: jbeg, jend, nloc
05833 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
05834 Integer, Intent (In) :: mask_shape (2, ndim_3d)
05835 Integer, Intent (In) :: num_neigh
05836 Integer, Intent (In) :: indices (:), dim1 (2)
05837 Real, Intent (In) :: sin_search (jbeg:jend, 2)
05838 Real, Intent (In) :: cos_search (jbeg:jend, 2)
05839 Real, Intent (In) :: z_search (jbeg:jend)
05840 Logical, Intent (In) ::
05841 mask_array (mask_shape (1,1):mask_shape (2,1),
05842 mask_shape (1,2):mask_shape (2,2),
05843 mask_shape (1,3): mask_shape (2,3))
05844 Logical, Intent (In) :: mask_available
05845 Real, Intent (In) :: tol
05846
05847 Real, Intent (InOut) ::
05848 dist_real (dim1(1):dim1(2), num_neigh)
05849
05850 Integer, Intent (Out) ::
05851 neighbors_3d (ndim_3d, nloc, num_neigh)
05852 Integer, Intent (Out) :: ierror
05853 End Subroutine
05854
05855 subroutine psmile_mg_srch_nneigh_irr_real (grid_id, &
05856 arrays, search_mode, nref_3d, &
05857 sin_values, cos_values, grid_valid_shape, &
05858 z_coords, coords_shape, &
05859 neighbors_3d, nloc, num_neigh, &
05860 sin_search, cos_search, z_search, &
05861 dist_dble, dim1, indices, jbeg, jend, &
05862 mask_ind, &
05863 mask_array, mask_shape, mask_available, &
05864 tol, ierror)
05865
05866 Use PSMILe_common
05867
05868 Integer, Intent (In) :: grid_id
05869 Type (Extra_search_real) :: arrays
05870 Integer, Intent (In) :: nref_3d
05871 Integer, Intent (In) :: nloc
05872 Integer, Intent (In) :: search_mode
05873 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
05874 Real, Intent (In) :: sin_values (grid_valid_shape(1,1):
05875 grid_valid_shape(2,1),
05876 grid_valid_shape(1,2):
05877 grid_valid_shape(2,2),
05878 2)
05879 Real, Intent (In) :: cos_values (grid_valid_shape(1,1):
05880 grid_valid_shape(2,1),
05881 grid_valid_shape(1,2):
05882 grid_valid_shape(2,2),
05883 2)
05884 Integer, Intent (In) :: coords_shape (2, ndim_3d)
05885 Real, Intent (In) :: z_coords(coords_shape(1,3):
05886 coords_shape(2,3))
05887 Integer, Intent (In) :: num_neigh
05888 Integer, Intent (In) :: jbeg, jend
05889 Integer, Intent (In) :: indices (:), dim1 (2)
05890 Real, Intent (InOut) :: dist_dble (dim1(1):dim1(2), num_neigh)
05891 Real, Intent (In) :: sin_search (jbeg:jend, 2)
05892 Real, Intent (In) :: cos_search (jbeg:jend, 2)
05893 Real, Intent (In) :: z_search (jbeg:jend)
05894 Logical, Intent (In) :: mask_ind (jbeg:jend)
05895 Integer, Intent (In) :: mask_shape (2, ndim_3d)
05896 Logical, Intent (In) :: mask_array (mask_shape (1,1):
05897 mask_shape (2,1),
05898 mask_shape (1,2):
05899 mask_shape (2,2),
05900 mask_shape (1,3):
05901 mask_shape (2,3))
05902 Logical, Intent (In) :: mask_available
05903 Real, Intent (In) :: tol
05904 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc, num_neigh)
05905 Integer, Intent (Out) :: ierror
05906 End Subroutine
05907
05908 subroutine psmile_print_3d_coord_real (x, y, z, shape, &
05909 ind, nloc, message)
05910 Use PSMILe_common
05911
05912 Integer, Intent (In) :: shape (2, ndim_3d)
05913 Real, Intent (In) :: x (*), y (*), z (*)
05914 Integer, Intent(In) :: nloc
05915 Integer, Intent(In) :: ind (ndim_3d, nloc)
05916 Character (len=*), Intent(In) :: message
05917 End Subroutine
05918
05919 subroutine psmile_print_3d_reg_coord_real (x, y, z, shape, &
05920 ind, nloc, message)
05921 Use PSMILe_common
05922
05923 Integer, Intent (In) :: shape (2, ndim_3d)
05924 Real, Intent (In) :: x (*), y (*), z (*)
05925 Integer, Intent(In) :: nloc
05926 Integer, Intent(In) :: ind (ndim_3d, nloc)
05927 Character (len=*), Intent(In) :: message
05928 End Subroutine
05929
05930 subroutine psmile_print_irreg2_coord_real (x, y, z, shape, &
05931 ind, nloc, message)
05932 Use PSMILe_common
05933
05934 Integer, Intent (In) :: shape (2, ndim_3d)
05935 Real, Intent (In) :: x (*), y (*), z (*)
05936 Integer, Intent(In) :: nloc
05937 Integer, Intent(In) :: ind (ndim_3d, nloc)
05938 Character (len=*), Intent(In) :: message
05939 End Subroutine
05940
05941
05942
05943
05944
05945
05946
05947
05948
05949
05950
05951
05952
05953
05954
05955
05956
05957
05958
05959
05960 subroutine psmile_put_field_real (field_id, task_id, data_array, len, &
05961 nbr_fields, ierror)
05962
05963 Integer, Intent (In) :: field_id
05964 Integer, Intent (In) :: task_id
05965 Integer, Intent (In) :: len, nbr_fields
05966 Real, Intent (In) :: data_array(*)
05967 Integer, Intent (Out) :: ierror
05968 End Subroutine
05969
05970 subroutine psmile_put_field_gauss2_real (data_array, data_shape, nbr_fields, &
05971 srcloc, nparts, nloc, npoints, &
05972 dest, tag, comm, ierror)
05973 Use PSMILe_common
05974
05975 Integer, Intent (In) :: nloc, dest, tag, comm, nbr_fields
05976 Integer, Intent (In) :: nparts
05977 Integer, Intent (In) :: npoints (2, nparts)
05978 Integer, Intent (In) :: data_shape (2, ndim_3d)
05979 Type (integer_vector), Intent (In) :: srcloc (2, nparts)
05980 Real, Intent (In) :: data_array (*)
05981 Integer, Intent (Out) :: ierror
05982 End Subroutine
05983
05984 subroutine psmile_put_field_21d_real (data_array, data_shape, nbr_fields, &
05985 srcloc, nparts, nloc, npoints, &
05986 dest, tag, comm, ierror)
05987 Use PSMILe_common
05988
05989 Integer, Intent (In) :: nloc, dest, tag, comm, nbr_fields
05990 Integer, Intent (In) :: nparts
05991 Integer, Intent (In) :: npoints (ndim_3d, nparts)
05992 Integer, Intent (In) :: data_shape (2, ndim_3d)
05993 Type (integer_vector), Intent (In) :: srcloc (ndim_3d, nparts)
05994 Real, Intent (In) :: data_array (*)
05995 Integer, Intent (Out) :: ierror
05996 End Subroutine
05997
05998 subroutine psmile_put_field_3d_real (data_array, data_shape, nbr_fields, &
05999 srcloc, nparts, nloc, npoints, &
06000 dest, tag, comm, ierror)
06001 Use PSMILe_common
06002
06003 Integer, Intent (In) :: nloc, dest, tag, comm, nbr_fields
06004 Integer, Intent (In) :: nparts
06005 Integer, Intent (In) :: npoints (ndim_3d, nparts)
06006 Integer, Intent (In) :: data_shape (2, ndim_3d)
06007 Type (integer_vector), Intent (In) :: srcloc (ndim_3d, nparts)
06008 Real, Intent (In) :: data_array (*)
06009 Integer, Intent (Out) :: ierror
06010 End Subroutine
06011
06012 subroutine psmile_put_irr_field_real (data_array, data_shape, nbr_fields, &
06013 srcloc, npoints, srcars, nars, nloc, &
06014 dest, tag, comm, ierror)
06015 Use PSMILe_common
06016
06017 Integer, Intent (In) :: nars, nloc, npoints, nbr_fields
06018 Integer, Intent (In) :: dest, tag, comm
06019 Integer, Intent (In) :: data_shape (2, ndim_3d)
06020 Integer, Intent (In) :: srcloc (ndim_3d, npoints)
06021 Integer, Intent (In) :: srcars (2, ndim_3d, nars)
06022 Real, Intent (In) :: data_array (*)
06023 Integer, Intent (Out) :: ierror
06024 End Subroutine
06025
06026 subroutine psmile_get_field_real (field_id, data_array, len, &
06027 nbr_fields, ierror)
06028
06029 Integer, Intent (In) :: field_id
06030 Integer, Intent (In) :: len, nbr_fields
06031 Real, Intent (InOut) :: data_array(*)
06032 Integer, Intent (Out) :: ierror
06033 End Subroutine
06034
06035 subroutine psmile_get_irr_field_real (data_array, data_shape, nbr_fields, &
06036 dstijk, npoints, dstars, nars, nloc, &
06037 source, tag, comm, ierror)
06038 Use PSMILe_common
06039
06040 Integer, Intent (In) :: nars, nloc, npoints, nbr_fields
06041 Integer, Intent (In) :: source, tag, comm
06042 Integer, Intent (In) :: data_shape (2, ndim_3d)
06043 Integer, Intent (In) :: dstijk (ndim_3d, npoints)
06044 Integer, Intent (In) :: dstars (2, ndim_3d, nars)
06045 Real, Intent (InOut) :: data_array (*)
06046 Integer, Intent (Out) :: ierror
06047 End Subroutine
06048
06049
06050
06051 subroutine psmile_copy_subarray_2d_real (dest_vector, size, &
06052 darray, idlow, idhigh, jdlow, jdhigh, &
06053 ibeg, iend, jbeg, jend, ierror)
06054 Use PSMILe_common
06055 Integer(kind=int64), Intent (In) :: size
06056 Integer, Intent (In) :: idlow, idhigh, jdlow, jdhigh
06057 Integer, Intent (In) :: ibeg, iend, jbeg, jend
06058 Real, Intent (In) :: darray (idlow:idhigh, jdlow:jdhigh)
06059 Real, Intent (Out) :: dest_vector (size)
06060 Integer, Intent (Out) :: ierror
06061 End Subroutine
06062
06063 subroutine psmile_copy_subarray_3d_real (dest_vector, size, &
06064 darray, idlow, idhigh, jdlow, jdhigh, kdlow, kdhigh, &
06065 sub, ierror)
06066 Use PSMILe_common
06067
06068 Integer(kind=int64), Intent (In) :: size
06069 Integer, Intent (In) :: idlow, idhigh, jdlow, jdhigh,
06070 kdlow, kdhigh
06071 Integer, Intent (In) :: sub (2, ndim_3d)
06072 Real, Intent (In) :: darray (idlow:idhigh, jdlow:jdhigh,
06073 kdlow:kdhigh)
06074 Real, Intent (Out) :: dest_vector (size)
06075 Integer, Intent (Out) :: ierror
06076 End Subroutine
06077
06078
06079
06080
06081
06082 subroutine psmile_add_nn_found_dble (search, extra_search, &
06083 index_sent, found, n_send, &
06084 index_found, distance, n_found, nb_extra, &
06085 selected, sel_info, nrecv, ierror)
06086 Use PSMILe_common
06087
06088 Integer, Intent (InOut) :: nrecv
06089 Type (Enddef_search), Intent (In) :: search
06090 Type (Extra_search_info), Intent (InOut) :: extra_search
06091 Type (Select_search_info), Intent (InOut) :: sel_info (nrecv)
06092 Integer, Intent (In) :: nb_extra, n_found, n_send
06093 Integer, Intent (In) :: index_sent (n_send)
06094 Integer, Intent (In) :: found (n_send)
06095 Integer, Intent (In) :: index_found (n_found)
06096 Double Precision, Intent (In) :: distance (n_found)
06097 Integer, Intent (InOut) :: selected (2, extra_search%n_extra)
06098 Integer, Intent (Out) :: ierror
06099 End Subroutine
06100
06101 subroutine psmile_bbcells_1d_dble (array, shape, range, &
06102 corners, corner_shape, nbr_corners, &
06103 chmin, chmax, levdim, ierror)
06104 Integer, Intent (In) :: shape (2)
06105 Integer, Intent (In) :: range (2)
06106 Double Precision, Intent (In) :: array (shape(1):shape(2))
06107 Integer, Intent (In) :: corner_shape (2), nbr_corners
06108 Double Precision, Intent (In) :: corners (corner_shape(1):corner_shape(2),
06109 nbr_corners)
06110 Integer, Intent (In) :: levdim
06111 Double Precision, Intent (Out) :: chmin (range(1)-1:range(2))
06112 Double Precision, Intent (Out) :: chmax (range(1)-1:range(2))
06113 Integer, Intent (Out) :: ierror
06114 End Subroutine
06115
06116 subroutine psmile_bbcells_2d_dble ( &
06117 coords, coords_shape, sub_range, &
06118 corner_shape, &
06119 chmin, chmax, midp, levdim, &
06120 period, ierror)
06121 Use psmile_common
06122 Integer, Intent (In) :: coords_shape (2, ndim_2d)
06123 Integer, Intent (In) :: sub_range (2, ndim_2d)
06124 Integer, Intent (In) :: corner_shape (2, ndim_2d)
06125 Double Precision, Intent (In) ::
06126 coords(coords_shape(1,1):coords_shape(2,1),
06127 coords_shape(1,2):coords_shape(2,2))
06128 Integer, Intent (In) :: levdim (ndim_2d)
06129 Double Precision, Intent (In) :: period
06130 Double Precision, Intent (Out) ::
06131 chmin (sub_range(1,1)-1:sub_range(2,1),
06132 sub_range(1,2)-1:sub_range(2,2))
06133 Double Precision, Intent (Out) ::
06134 chmax (sub_range(1,1)-1:sub_range(2,1),
06135 sub_range(1,2)-1:sub_range(2,2))
06136 Double Precision, Intent (Out) ::
06137 midp (sub_range(1,1)-1:sub_range(2,1),
06138 sub_range(1,2)-1:sub_range(2,2))
06139 Integer, Intent (Out) :: ierror
06140 End Subroutine
06141
06142 subroutine psmile_bbcells_virt_2d_dble (method_id, &
06143 coords1, coords2, coords_shape, coords_range, &
06144 corners1, corners2, corner_shape, nbr_corners, &
06145 chmin1_corner, chmin2_corner, &
06146 chmax1_corner, chmax2_corner, levdim_corner, &
06147 chmin1, chmin2, chmax1, chmax2, midp1, midp2, &
06148 levdim, period, bmaski, bmaskj, ierror)
06149 Use PSMILe_common
06150 Integer, Intent (In) :: method_id, nbr_corners
06151 Integer, Intent (In) :: coords_shape (2, ndim_2d)
06152 Integer, Intent (In) :: coords_range (2, ndim_2d)
06153 Integer, Intent (In) :: corner_shape (2, ndim_2d)
06154 Integer, Intent (In) :: levdim_corner (2, ndim_2d)
06155 Integer, Intent (In) :: levdim (ndim_2d)
06156 Double Precision, Intent (In) :: period
06157 Double Precision, Intent (InOut) ::
06158 coords1(coords_shape(1,1):coords_shape(2,1),
06159 coords_shape(1,2):coords_shape(2,2))
06160 Double Precision, Intent (InOut) ::
06161 coords2(coords_shape(1,1):coords_shape(2,1),
06162 coords_shape(1,2):coords_shape(2,2))
06163 Double Precision, Intent (In) ::
06164 corners1 (corner_shape(1,1):corner_shape(2,1),
06165 corner_shape(1,2):corner_shape(2,2),
06166 nbr_corners)
06167 Double Precision, Intent (In) ::
06168 corners2 (corner_shape(1,1):corner_shape(2,1),
06169 corner_shape(1,2):corner_shape(2,2),
06170 nbr_corners)
06171 Double Precision, Intent (In) ::
06172 chmin1_corner (levdim_corner(1,1):levdim_corner(2,1),
06173 levdim_corner(1,2):levdim_corner(2,2))
06174 Double Precision, Intent (In) ::
06175 chmin2_corner (levdim_corner(1,1):levdim_corner(2,1),
06176 levdim_corner(1,2):levdim_corner(2,2))
06177 Double Precision, Intent (In) ::
06178 chmax1_corner (levdim_corner(1,1):levdim_corner(2,1),
06179 levdim_corner(1,2):levdim_corner(2,2))
06180 Double Precision, Intent (In) ::
06181 chmax2_corner (levdim_corner(1,1):levdim_corner(2,1),
06182 levdim_corner(1,2):levdim_corner(2,2))
06183 Double Precision, Intent (InOut) ::
06184 chmin1 (coords_range(1,1)-1:coords_range(2,1),
06185 coords_range(1,2)-1:coords_range(2,2))
06186 Double Precision, Intent (InOut) ::
06187 chmin2 (coords_range(1,1)-1:coords_range(2,1),
06188 coords_range(1,2)-1:coords_range(2,2))
06189 Double Precision, Intent (InOut) ::
06190 chmax1 (coords_range(1,1)-1:coords_range(2,1),
06191 coords_range(1,2)-1:coords_range(2,2))
06192 Double Precision, Intent (InOut) ::
06193 chmax2 (coords_range(1,1)-1:coords_range(2,1),
06194 coords_range(1,2)-1:coords_range(2,2))
06195 Double Precision, Intent (InOut) ::
06196 midp1 (coords_range(1,1)-1:coords_range(2,1),
06197 coords_range(1,2)-1:coords_range(2,2))
06198 Double Precision, Intent (InOut) ::
06199 midp2 (coords_range(1,1)-1:coords_range(2,1),
06200 coords_range(1,2)-1:coords_range(2,2))
06201 Integer, Intent (Out) ::
06202 bmaski (coords_range(1,1)-1:coords_range(2,1)+1, 2)
06203 Integer, Intent (Out) ::
06204 bmaskj (coords_range(1,2)-1:coords_range(2,2)+1, 2)
06205 Integer, Intent (Out) :: ierror
06206 End Subroutine
06207
06208 subroutine psmile_bbcells_3d_dble (method_id, array, shape, range, &
06209 corners, corner_shape, nbr_corners, &
06210 chmin, chmax, midp, &
06211 levdim, cyclic, period, ierror)
06212 Use PSMILe_common
06213 Integer, Intent (In) :: method_id
06214 Integer, Intent (In) :: shape (2, ndim_3d)
06215 Integer, Intent (In) :: range (2, ndim_3d)
06216 Integer, Intent (In) :: corner_shape (2, ndim_3d), nbr_corners
06217 Double Precision, Intent (In) :: array(shape(1,1):shape(2,1),
06218 shape(1,2):shape(2,2),
06219 shape(1,3):shape(2,3))
06220 Double Precision, Intent (In) :: corners (corner_shape(1,1):
06221 corner_shape(2,1),
06222 corner_shape(1,2):
06223 corner_shape(2,2),
06224 corner_shape(1,3):
06225 corner_shape(2,3),
06226 nbr_corners)
06227 Integer, Intent (In) :: levdim (ndim_3d)
06228 Logical, Intent (In) :: cyclic
06229 Double Precision, Intent (In) :: period
06230 Double Precision, Intent (Out) :: chmin (range(1,1)-1:range(2,1),
06231 range(1,2)-1:range(2,2),
06232 range(1,3)-1:range(2,3))
06233 Double Precision, Intent (Out) :: chmax (range(1,1)-1:range(2,1),
06234 range(1,2)-1:range(2,2),
06235 range(1,3)-1:range(2,3))
06236 Double Precision, Intent (Out) :: midp (range(1,1)-1:range(2,1),
06237 range(1,2)-1:range(2,2),
06238 range(1,3)-1:range(2,3))
06239 Integer, Intent (Out) :: ierror
06240 End Subroutine
06241
06242 subroutine psmile_bbcells_gauss2_dble (array_x, array_y, &
06243 shape, range, nbr_lats, &
06244 points_per_lat, corners_y, &
06245 corner_shape, nbr_corners, &
06246 chmin_x, chmax_x, midp_x, &
06247 chmin_y, chmax_y, midp_y, &
06248 nbrs, levdim, ierror )
06249
06250 Integer, Intent (In) :: shape (2)
06251 Double Precision, Intent (In) :: array_x(shape(1):shape(2))
06252 Double Precision, Intent (In) :: array_y(shape(1):shape(2))
06253 Integer, Intent (In) :: range (2)
06254 Integer, Intent (In) :: corner_shape (2)
06255 Integer, Intent (In) :: nbr_lats
06256 Integer, Intent (In) :: points_per_lat(nbr_lats,1)
06257 Integer, Intent (In) :: nbr_corners
06258 Double Precision, Intent (In) :: corners_y (corner_shape(1):corner_shape(2),
06259 nbr_corners)
06260 Integer, Intent (In) :: levdim(1)
06261 Double Precision, Intent (Out) :: chmin_x (range(1)-1:range(2))
06262 Double Precision, Intent (Out) :: chmax_x (range(1)-1:range(2))
06263 Double Precision, Intent (Out) :: midp_x (range(1)-1:range(2))
06264 Double Precision, Intent (Out) :: chmin_y (range(1)-1:range(2))
06265 Double Precision, Intent (Out) :: chmax_y (range(1)-1:range(2))
06266 Double Precision, Intent (Out) :: midp_y (range(1)-1:range(2))
06267 Integer, Intent (Out) :: nbrs (range(2)-range(1)+1,4)
06268 Integer, Intent (Out) :: ierror
06269 End Subroutine
06270
06271 subroutine psmile_celltest_dble ( grid_id, range, sense, ierror )
06272 Use PSMILe_common
06273 Integer, Intent (In) :: grid_id
06274 Integer, Intent (In) :: range(2,ndim_2d)
06275 Integer, Intent (Out) :: sense
06276 Integer, Intent (Out) :: ierror
06277 End Subroutine
06278
06279 subroutine psmile_ccompact_gauss2_dble ( send_info, &
06280 grid_valid_shape, shape, nb_corners, &
06281 array_x, array_y, array_z, &
06282 extra_search, dest_size, nbr_cells_tot, &
06283 source_cell_index, &
06284 neighcells, dest_x, dest_y, dest_z, ierror )
06285
06286 USE PSMILe_Common
06287
06288 Type (Send_information), Intent (InOut) :: send_info
06289 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
06290 Integer, Intent (In) :: shape (2, ndim_3d)
06291 Integer, Intent (In) :: nb_corners
06292 Double Precision, Intent (In) :: array_x ( shape(1,1):shape(2,1),
06293 nb_corners )
06294 Double Precision, Intent (In) :: array_y ( shape(1,1):shape(2,1),
06295 nb_corners )
06296 Double Precision, Intent (In) :: array_z ( shape(1,3):shape(2,3) )
06297 Integer, Intent (In) :: dest_size
06298 Integer, Intent (In) :: nbr_cells_tot
06299 Type (Extra_search_info), Intent (InOut) :: extra_search
06300 Integer, Intent (InOut) :: source_cell_index (nbr_cells_tot)
06301 Integer, Intent (InOut) :: neighcells (nbr_cells_tot, nb_corners)
06302 Double Precision, Intent (Out) :: dest_x (2*dest_size)
06303 Double Precision, Intent (Out) :: dest_y (2*dest_size)
06304 Double Precision, Intent (Out) :: dest_z (2*dest_size)
06305 Integer, Intent (Out) :: ierror
06306 End Subroutine
06307
06308 subroutine psmile_ccompact_irreg2_dble ( send_info, &
06309 grid_valid_shape, shape, nb_corners, &
06310 array_x, array_y, array_z, &
06311 extra_search, dest_size, nbr_cells_tot, &
06312 source_cell_index, &
06313 neighcells, dest_x, dest_y, dest_z, ierror )
06314
06315 USE PSMILe_Common
06316
06317 Type (Send_information), Intent (InOut) :: send_info
06318 Type (Extra_search_info), Intent (InOut) :: extra_search
06319
06320 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
06321 Integer, Intent (In) :: shape (2, ndim_3d)
06322 Integer, Intent (In) :: nb_corners
06323 Double Precision, Intent (In) :: array_x ( shape(1,1):shape(2,1),
06324 shape(1,2):shape(2,2),
06325 nb_corners )
06326 Double Precision, Intent (In) :: array_y ( shape(1,1):shape(2,1),
06327 shape(1,2):shape(2,2),
06328 nb_corners )
06329 Double Precision, Intent (In) :: array_z ( shape(1,3):shape(2,3) )
06330 Integer, Intent (In) :: dest_size
06331 Integer, Intent (In) :: nbr_cells_tot
06332 Integer, Intent (InOut) :: source_cell_index (nbr_cells_tot)
06333 Integer, Intent (InOut) :: neighcells(nbr_cells_tot, nb_corners)
06334 Double Precision, Intent (Out) :: dest_x (dest_size)
06335 Double Precision, Intent (Out) :: dest_y (dest_size)
06336 Double Precision, Intent (Out) :: dest_z (dest_size)
06337 Integer, Intent (Out) :: ierror
06338 End Subroutine
06339
06340 subroutine psmile_ccompact_3d_reg_dble ( send_info, &
06341 grid_valid_shape, shape, nb_corners, &
06342 array_x, array_y, array_z, &
06343 extra_search, dest_size, nbr_cells_tot, &
06344 source_cell_index, &
06345 neighcells, dest_x, dest_y, dest_z, ierror )
06346
06347 USE PSMILe_Common
06348
06349 Type (Send_information), Intent (InOut) :: send_info
06350 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
06351 Integer, Intent (In) :: shape (2, ndim_3d)
06352 Integer, Intent (In) :: nb_corners
06353 Double Precision, Intent (In) :: array_x ( shape(1,1):shape(2,1),
06354 nb_corners )
06355 Double Precision, Intent (In) :: array_y ( shape(1,2):shape(2,2),
06356 nb_corners )
06357 Double Precision, Intent (In) :: array_z ( shape(1,3):shape(2,3) )
06358 Type (Extra_search_info), Intent (InOut) :: extra_search
06359 Integer, Intent (In) :: dest_size
06360 Integer, Intent (In) :: nbr_cells_tot
06361 Integer, Intent (InOut) :: source_cell_index (nbr_cells_tot)
06362 Double Precision, Intent (Out) :: dest_x (dest_size)
06363 Double Precision, Intent (Out) :: dest_y (dest_size)
06364 Double Precision, Intent (Out) :: dest_z (dest_size)
06365 Integer, Intent (InOut) :: neighcells (nbr_cells_tot, nb_corners)
06366 Integer, Intent (Out) :: ierror
06367 End Subroutine
06368
06369 subroutine psmile_control_cell_2d_dble (grid_id, &
06370 ic, nc, icdim1, list, j, k, &
06371 coords1, coords2, shape, &
06372 corners1, corners2, corner_shape, nbr_corners, &
06373 tol, fnd, ierror)
06374 Use PSMILe_common
06375
06376 Integer, Intent (In) :: grid_id, nc, icdim1
06377 Integer, Intent (In) :: ic (icdim1, ndim_2d)
06378 Integer, Intent (In) :: list (nc), j, k
06379 Integer, Intent (In) :: shape (2, ndim_3d)
06380 Double Precision, Intent (In) :: coords1 (shape(1,1):shape(2,1),
06381 shape(1,2):shape(2,2),
06382 shape(1,3):shape(2,3))
06383 Double Precision, Intent (In) :: coords2 (shape(1,1):shape(2,1),
06384 shape(1,2):shape(2,2),
06385 shape(1,3):shape(2,3))
06386 Integer, Intent (In) :: corner_shape (2, ndim_2d)
06387 Integer, Intent (In) :: nbr_corners
06388 Double Precision, Intent (In) ::
06389 corners1 ( corner_shape(1,1):corner_shape(2,1),
06390 corner_shape(1,2):corner_shape(2,2), nbr_corners)
06391 Double Precision, Intent (In) ::
06392 corners2 ( corner_shape(1,1):corner_shape(2,1),
06393 corner_shape(1,2):corner_shape(2,2), nbr_corners)
06394 Double Precision, Intent (In) :: tol
06395 Logical, Intent (Out) :: fnd (nc)
06396 Integer, Intent (Out) :: ierror
06397 End Subroutine
06398
06399 subroutine psmile_control_cell_gauss2_dble (grid_id, &
06400 ic, nc, list, j, k, &
06401 coords1, coords2, shape, &
06402 corners1, corners2, corner_shape, nbr_corners, &
06403 tol, fnd, ierror)
06404 Use PSMILe_common
06405
06406 Integer, Intent (In) :: grid_id, nc
06407 Integer, Intent (In) :: ic (nc)
06408 Integer, Intent (In) :: list (nc), j, k
06409 Integer, Intent (In) :: shape (2, ndim_3d)
06410 Double Precision, Intent (In) ::
06411 coords1 (shape(1,1):shape(2,1), shape(1,2):shape(2,2),
06412 shape(1,3):shape(2,3))
06413 Double Precision, Intent (In) ::
06414 coords2 (shape(1,1):shape(2,1), shape(1,2):shape(2,2),
06415 shape(1,3):shape(2,3))
06416 Integer, Intent (In) :: corner_shape (2, ndim_2d)
06417 Integer, Intent (In) :: nbr_corners
06418 Double Precision, Intent (In) ::
06419 corners1 ( corner_shape(1,1):corner_shape(2,1),
06420 corner_shape(1,2):corner_shape(2,2), nbr_corners)
06421 Double Precision, Intent (In) ::
06422 corners2 ( corner_shape(1,1):corner_shape(2,1),
06423 corner_shape(1,2):corner_shape(2,2), nbr_corners)
06424 Double Precision, Intent (In) :: tol
06425 Logical, Intent (Out) :: fnd (nc)
06426 Integer, Intent (Out) :: ierror
06427 End Subroutine
06428
06429 subroutine psmile_ext_compact_irreg2_dble (send_info, array, shape, &
06430 grid_valid_shape, &
06431 dest_vector, dest_size, ierror)
06432 Use PSMILe_common
06433 Type(Send_information), Intent(InOut) :: send_info
06434 Double Precision, Intent (In) :: array (*)
06435 Integer, Intent (In) :: shape (2, ndim_2d)
06436 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
06437 Integer, Intent (In) :: dest_size
06438 Double Precision, Intent (Out) :: dest_vector (dest_size)
06439 Integer, Intent (Out) :: ierror
06440 End Subroutine
06441
06442 subroutine psmile_ext_compact_list_3d_dble (send_info, array, shape, &
06443 grid_valid_shape, &
06444 dest_vector, dest_size, ierror)
06445 Use PSMILe_common
06446 Type(Send_information), Intent(In) :: send_info
06447 Double Precision, Intent (In) :: array (*)
06448 Integer, Intent (In) :: shape (2, ndim_3d)
06449 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
06450 Integer, Intent (In) :: dest_size
06451 Double Precision, Intent (Out) :: dest_vector (dest_size)
06452 Integer, Intent (Out) :: ierror
06453 End Subroutine
06454
06455 subroutine psmile_put_compact_list_3d_dble (source_list, dstijk, nloc, &
06456 array, shape, nbr_fields, &
06457 ierror)
06458 Use PSMILe_common
06459 Double Precision, Intent (InOut) :: array (*)
06460 Integer, Intent (In) :: shape (2, ndim_3d)
06461 Integer, Intent (In) :: nloc, nbr_fields
06462 Integer, Intent (In) :: dstijk (ndim_3d, nbr_fields)
06463 Double Precision, Intent (In) :: source_list (nloc, nbr_fields)
06464 Integer, Intent (Out) :: ierror
06465 End Subroutine
06466
06467 subroutine psmile_extract_indices_2d_dble (array, shape, &
06468 dstijk, ncpl, &
06469 dest_vector, ierror)
06470 Use PSMILe_common
06471 Double Precision, Intent (In) :: array (*)
06472 Integer, Intent (In) :: shape (2, ndim_2d)
06473 Integer, Intent (In) :: ncpl
06474 Integer, Intent (In) :: dstijk (ndim_3d, ncpl)
06475 Double Precision, Intent (Out) :: dest_vector (ncpl)
06476 Integer, Intent (Out) :: ierror
06477 End Subroutine
06478
06479 subroutine psmile_extract_indices_3d_dble (array, shape, &
06480 dstijk, ncpl, &
06481 dest_vector, ierror)
06482 Use PSMILe_common
06483 Double Precision, Intent (In) :: array (*)
06484 Integer, Intent (In) :: shape (2, ndim_3d)
06485 Integer, Intent (In) :: ncpl
06486 Integer, Intent (In) :: dstijk (ndim_3d, ncpl)
06487 Double Precision, Intent (Out) :: dest_vector (ncpl)
06488 Integer, Intent (Out) :: ierror
06489 End Subroutine
06490
06491 subroutine psmile_gauss_setup_dble (grid_id, counts, displs, ierror)
06492 Integer, Intent (In) :: grid_id
06493 Integer, Intent (In) :: counts (*)
06494 Integer, Intent (In) :: displs (*)
06495
06496 Integer, Intent (Out) :: ierror
06497 End Subroutine PSMILe_gauss_setup_dble
06498
06499 subroutine psmile_extent_subgrid_1d_dble ( &
06500 array, idlow, idhigh, nbr_corners, &
06501 ibeg, iend, &
06502 extent, ierror)
06503 Integer, Intent (In) :: idlow, idhigh, nbr_corners
06504 Integer, Intent (In) :: ibeg, iend
06505 Double Precision, Intent (In) :: array (idlow:idhigh, nbr_corners)
06506 Double Precision, Intent (Out) :: extent (2)
06507 Integer, Intent (Out) :: ierror
06508 End Subroutine
06509
06510 subroutine psmile_extent_subgrid_2d_dble ( &
06511 array, idlow, idhigh, jdlow, jdhigh, nbr_corners, &
06512 ibeg, iend, jbeg, jend, &
06513 extent, ierror)
06514 Integer, Intent (In) :: idlow, idhigh
06515 Integer, Intent (In) :: jdlow, jdhigh, nbr_corners
06516 Integer, Intent (In) :: ibeg, iend, jbeg, jend
06517 Double Precision, Intent (In) :: array (idlow:idhigh,
06518 jdlow:jdhigh, nbr_corners)
06519 Double Precision, Intent (Out) :: extent (2)
06520 Integer, Intent (Out) :: ierror
06521 End Subroutine
06522
06523 subroutine psmile_extent_subgrid_3d_dble ( &
06524 array, idlow, idhigh, jdlow, jdhigh, &
06525 kdlow, kdhigh, nbr_corners, &
06526 grid_shape, &
06527 extent, ierror)
06528 Use PSMILe_common
06529 Integer, Intent (In) :: idlow, idhigh
06530 Integer, Intent (In) :: jdlow, jdhigh
06531 Integer, Intent (In) :: kdlow, kdhigh, nbr_corners
06532 Double Precision, Intent (In) :: array (idlow:idhigh, jdlow:jdhigh,
06533 kdlow:kdhigh, nbr_corners)
06534 Integer, Intent (In) :: grid_shape (2, ndim_3d)
06535 Double Precision, Intent (Out) :: extent (2)
06536 Integer, Intent (Out) :: ierror
06537 End Subroutine
06538
06539 subroutine psmile_generate_1d_3d_dble ( &
06540 vector1, vector2, vector3, shape, &
06541 dest_array, dest_shape, &
06542 grid_valid_shape, ierror)
06543 Use PSMILe_common
06544
06545 Double Precision, Intent (In) :: vector1 (*)
06546 Double Precision, Intent (In) :: vector2 (*)
06547 Double Precision, Intent (In) :: vector3 (*)
06548 Integer, Intent (In) :: shape (2, ndim_3d)
06549 Integer, Intent (In) :: dest_shape (2, ndim_3d)
06550 Double Precision, Intent (Out) :: dest_array (
06551 dest_shape(1,1):dest_shape(2,1),
06552 dest_shape(1,2):dest_shape(2,2),
06553 dest_shape(1,3):dest_shape(2,3))
06554 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
06555 Integer, Intent (Out) :: ierror
06556 End Subroutine
06557
06558 subroutine psmile_get_cyclic_dir_3d_dble ( &
06559 chmin, chmin2, chmin3, &
06560 chmax, chmax2, chmax3, levdim, &
06561 corners, corners2, corners3, &
06562 corner_shape, nbr_corners, &
06563 grid_valid_shape, &
06564 len_cyclic, rtol, index, cyclic, ierror)
06565 Use PSMILe_common
06566
06567 Double Precision, Intent (In) :: chmin (*)
06568 Double Precision, Intent (In) :: chmax (*)
06569 Double Precision, Intent (In) :: chmin2 (*)
06570 Double Precision, Intent (In) :: chmax2 (*)
06571 Double Precision, Intent (In) :: chmin3 (*)
06572 Double Precision, Intent (In) :: chmax3 (*)
06573 Integer, Intent (In) :: levdim (ndim_3d)
06574 Double Precision, Intent (In) :: corners (*)
06575 Double Precision, Intent (In) :: corners2 (*)
06576 Double Precision, Intent (In) :: corners3 (*)
06577 Integer, Intent (In) :: corner_shape (2, ndim_3d)
06578 Integer, Intent (In) :: nbr_corners
06579 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
06580 Double Precision, Intent (In) :: len_cyclic, rtol
06581 Integer, Intent (In) :: index
06582 Logical, Intent (Out) :: cyclic
06583 Integer, Intent (Out) :: ierror
06584 End Subroutine
06585
06586 subroutine psmile_get_faces_3d_dble (search, extra_search, &
06587 corners1, corners2, corners3, &
06588 corner_shape, nbr_corners, grid_valid_shape, &
06589 neighbors_3d, nloc, num_neigh, &
06590 faces, n_faces, nreq, ierror)
06591 Use PSMILe_common
06592
06593 Type (Enddef_search), Intent (In) :: search
06594 Type (Extra_search_info), Intent (In) :: extra_search
06595 Integer, Intent (In) :: nbr_corners, nloc, num_neigh
06596 Integer, Intent (In) :: nreq
06597 Integer, Intent (In) :: corner_shape (2, ndim_3d)
06598 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
06599 Double Precision, Intent (In) ::
06600 corners1 ( corner_shape(1,1):corner_shape(2,1),
06601 corner_shape(1,2):corner_shape(2,2),
06602 corner_shape(1,3):corner_shape(2,3), nbr_corners)
06603 Double Precision, Intent (In) ::
06604 corners2 ( corner_shape(1,1):corner_shape(2,1),
06605 corner_shape(1,2):corner_shape(2,2),
06606 corner_shape(1,3):corner_shape(2,3), nbr_corners)
06607 Double Precision, Intent (In) ::
06608 corners3 ( corner_shape(1,1):corner_shape(2,1),
06609 corner_shape(1,2):corner_shape(2,2),
06610 corner_shape(1,3):corner_shape(2,3), nbr_corners)
06611 Integer, Intent (In) ::
06612 neighbors_3d (ndim_3d, nloc, num_neigh)
06613
06614 Double Precision, Intent (Out) :: faces (2, ndim_3d, nreq)
06615 Integer, Intent (Out) :: n_faces (nreq)
06616 Integer, Intent (Out) :: ierror
06617 End Subroutine
06618
06619 subroutine psmile_get_faces_3d_reg_dble (search, extra_search, &
06620 corners1, corners2, corners3, &
06621 corner_shape, nbr_corners, grid_valid_shape, &
06622 neighbors_3d, nloc, num_neigh, &
06623 faces, n_faces, nreq, ierror)
06624 Use PSMILe_common
06625
06626 Type (Enddef_search), Intent (In) :: search
06627 Type (Extra_search_info), Intent (In) :: extra_search
06628 Integer, Intent (In) :: nbr_corners, nloc, num_neigh
06629 Integer, Intent (In) :: nreq
06630 Integer, Intent (In) :: corner_shape (2, ndim_3d)
06631 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
06632 Double Precision, Intent (In) ::
06633 corners1 ( corner_shape(1,1):corner_shape(2,1), 2)
06634 Double Precision, Intent (In) ::
06635 corners2 ( corner_shape(1,2):corner_shape(2,2), 2)
06636 Double Precision, Intent (In) ::
06637 corners3 ( corner_shape(1,3):corner_shape(2,3), 2)
06638 Integer, Intent (In) ::
06639 neighbors_3d (ndim_3d, nloc, num_neigh)
06640
06641 Double Precision, Intent (Out) :: faces (2, ndim_3d, nreq)
06642 Integer, Intent (Out) :: n_faces (nreq)
06643 Integer, Intent (Out) :: ierror
06644 End Subroutine
06645
06646 subroutine psmile_get_faces_gauss2_dble (search, extra_search, &
06647 corners1, corners2, corners3, &
06648 corner_shape, nbr_corners, grid_valid_shape, &
06649 neighbors_3d, nloc, num_neigh, &
06650 faces, nreq, ierror)
06651
06652 Use PSMILe_common
06653
06654 Type (Enddef_search), Intent (In) :: search
06655 Type (Extra_search_info), Intent (In) :: extra_search
06656 Integer, Intent (In) :: nbr_corners, nloc, num_neigh
06657 Integer, Intent (In) :: nreq
06658 Integer, Intent (In) :: corner_shape (2, ndim_3d)
06659 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
06660 Double Precision, Intent (In) ::
06661 corners1 ( corner_shape(1,1):corner_shape(2,1), 2 )
06662 Double Precision, Intent (In) ::
06663 corners2 ( corner_shape(1,1):corner_shape(2,1), 2 )
06664 Double Precision, Intent (In) ::
06665 corners3 ( corner_shape(1,3):corner_shape(2,3), 2 )
06666 Integer, Intent (In) ::
06667 neighbors_3d (ndim_3d, nloc, num_neigh)
06668
06669 Double Precision, Intent (Out) :: faces (2, ndim_3d, nreq)
06670 Integer, Intent (Out) :: ierror
06671 End Subroutine
06672
06673 subroutine psmile_get_faces_irreg2_dble (search, extra_search, &
06674 corners1, corners2, corners3, &
06675 corner_shape, nbr_corners, grid_valid_shape, &
06676 neighbors_3d, nloc, num_neigh, &
06677 faces, n_faces, nreq, ierror)
06678 Use PSMILe_common
06679
06680 Type (Enddef_search), Intent (In) :: search
06681 Type (Extra_search_info), Intent (In) :: extra_search
06682 Integer, Intent (In) :: nbr_corners, nloc, num_neigh
06683 Integer, Intent (In) :: nreq
06684 Integer, Intent (In) :: corner_shape (2, ndim_3d)
06685 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
06686 Double Precision, Intent (In) ::
06687 corners1 ( corner_shape(1,1):corner_shape(2,1),
06688 corner_shape(1,2):corner_shape(2,2), nbr_corners/2)
06689 Double Precision, Intent (In) ::
06690 corners2 ( corner_shape(1,1):corner_shape(2,1),
06691 corner_shape(1,2):corner_shape(2,2), nbr_corners/2)
06692 Double Precision, Intent (In) ::
06693 corners3 ( corner_shape(1,3):corner_shape(2,3), 2)
06694 Integer, Intent (In) ::
06695 neighbors_3d (ndim_3d, nloc, num_neigh)
06696
06697 Double Precision, Intent (Out) :: faces (2, ndim_3d, nreq)
06698 Integer, Intent (Out) :: n_faces (nreq)
06699 Integer, Intent (Out) :: ierror
06700 End Subroutine
06701
06702 subroutine psmile_get_grid_extent_dble (grid_id, extent, ierror)
06703 Use PSMILe_common
06704 Integer, Intent (In) :: grid_id
06705 Real (PSMILe_float_kind), Intent (Out) :: extent (2, ndim_3d)
06706 Integer, Intent (Out) :: ierror
06707 End Subroutine
06708
06709 subroutine psmile_global_search_dble (comp_info, &
06710 control, len_cpl, var_id, grid_valid_shape, &
06711 search, tgt_coords, &
06712 neighbors_3d, nloc, num_neigh, extra_search, &
06713 interpolation_methods, interpolation_search, n_intmethods, &
06714 send_index, &
06715 mask_available, use_mask, use_how, &
06716 grid_type, ierror)
06717 Use PSMILe_common
06718
06719 Type (Enddef_comp), Intent (In) :: comp_info
06720 Type (Enddef_search), Intent (InOut) :: search
06721 Type (dble_vector), Intent (In) :: tgt_coords (ndim_3d)
06722 Integer, Intent (In) :: control (2, ndim_3d,
06723 search%npart)
06724 Integer, Intent (In) :: len_cpl (search%npart)
06725 Integer, Intent (In) :: var_id
06726 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
06727 Integer, Intent (In) :: send_index
06728 Integer, Intent (In) :: nloc, num_neigh
06729 Integer, Intent (In) :: n_intmethods
06730 Integer, Intent (In) :: interpolation_methods (n_intmethods)
06731 Logical, Intent (In) :: interpolation_search (n_intmethods)
06732 Logical, Intent (In) :: mask_available, use_mask
06733 Integer, Intent (In) :: use_how
06734 Integer, Intent (In) :: grid_type
06735 Integer, Intent (InOut) :: neighbors_3d (ndim_3d, nloc,
06736 num_neigh)
06737 Type (Extra_search_info), Intent (InOut) :: extra_search
06738 Integer, Intent (Out) :: ierror
06739 End Subroutine
06740
06741 subroutine psmile_global_search_cell_dble ( grid_id, var_id, &
06742 comp_info, send_info, search, extra_search, ncpl, &
06743 nbr_cells, n_intmethods, interpolation_methods, &
06744 interpolation_search, ierror )
06745 Use PSMILe_common
06746
06747 Integer, Intent (In) :: grid_id
06748 Integer, Intent (In) :: var_id
06749 Type (Enddef_comp), Intent (In) :: comp_info
06750 Type (Send_information), Intent (InOut) :: send_info
06751 Type (Enddef_search), Intent (InOut) :: search
06752 Type (Extra_search_info), Intent (InOut) :: extra_search
06753 Integer, Intent (In) :: ncpl
06754 Integer, Intent (InOut) :: nbr_cells(ncpl)
06755 Integer, Intent (In) :: n_intmethods
06756 Integer, Intent (In) :: interpolation_methods (n_intmethods)
06757 Logical, Intent (In) :: interpolation_search (n_intmethods)
06758 Integer, Intent (Out) :: ierror
06759 End Subroutine
06760
06761 subroutine psmile_global_search_nnx_dble (comp_info, &
06762 search, var_id, &
06763 tgt_coords_x, tgt_coords_y, tgt_coords_z, &
06764 neighbors_3d, nloc, num_neigh, nb_extra, &
06765 extra_search, send_index, &
06766 ierror)
06767 Use PSMILe_common
06768
06769 Type (Enddef_comp), Intent (In) :: comp_info
06770 Type (Enddef_search), Intent (InOut) :: search
06771 Integer, Intent (In) :: var_id
06772 Integer, Intent (In) :: send_index
06773 Integer, Intent (In) :: nb_extra, nloc, num_neigh
06774 Double Precision, Intent (In) :: tgt_coords_x (nloc)
06775 Double Precision, Intent (In) :: tgt_coords_y (nloc)
06776 Double Precision, Intent (In) :: tgt_coords_z (nloc)
06777 Integer, Intent (InOut) :: neighbors_3d (ndim_3d, nloc,
06778 num_neigh)
06779 Type (Extra_search_info), Intent (InOut) :: extra_search
06780 Integer, Intent (Out) :: ierror
06781 End Subroutine
06782
06783 subroutine psmile_return_extra_off_dble (comp_info, search, var_id, &
06784 found, distance, nd_dist, nb_extra, ierror)
06785 Use PSMILe_common
06786
06787 Type (Enddef_comp), Intent (In) :: comp_info
06788 Type (Enddef_global_search), Intent (InOut) :: search
06789 Integer, Intent (In) :: var_id
06790 Integer, Intent (In) :: nd_dist, nb_extra
06791 Integer, Intent (In) :: found (nd_dist)
06792 Double Precision, Intent (In) :: distance (nd_dist,
06793 nb_extra)
06794 Integer, Intent (Out) :: ierror
06795 End Subroutine
06796
06797 subroutine psmile_sel_grid_range_dble (grid_id, dinter, inter, ierror)
06798 Use PSMILe_common
06799 Integer, Intent (In) :: grid_id
06800 Real (PSMILe_float_kind), Intent (In) :: dinter (2, ndim_3d)
06801 Integer, Intent (Out) :: inter (2, ndim_3d)
06802 Integer, Intent (Out) :: ierror
06803 End Subroutine
06804
06805 subroutine psmile_range_subgrid_1d_dble ( &
06806 array, idlow, idhigh, nbr_corners, &
06807 ibeg, iend, &
06808 extent, inter, ierror)
06809 Integer, Intent (In) :: idlow, idhigh, nbr_corners
06810 Integer, Intent (In) :: ibeg, iend
06811 Double Precision, Intent (In) :: array (idlow:idhigh, nbr_corners)
06812 Double Precision, Intent (In) :: extent (2)
06813 Integer, Intent (Out) :: inter (2)
06814 Integer, Intent (Out) :: ierror
06815 End Subroutine
06816
06817 subroutine psmile_range_subgrid_2d_dble ( &
06818 array1, array2, &
06819 idlow, idhigh, jdlow, jdhigh, nbr_corners, &
06820 ibeg, iend, jbeg, jend, &
06821 extent, inter, ierror)
06822 Integer, Intent (In) :: idlow, idhigh
06823 Integer, Intent (In) :: jdlow, jdhigh, nbr_corners
06824 Integer, Intent (In) :: ibeg, iend, jbeg, jend
06825 Double Precision, Intent (In) ::
06826 array1 (idlow:idhigh, jdlow:jdhigh, nbr_corners)
06827 Double Precision, Intent (In) ::
06828 array2 (idlow:idhigh, jdlow:jdhigh, nbr_corners)
06829 Double Precision, Intent (In) :: extent (2,2)
06830
06831 Integer, Intent (Out) :: inter (2,2)
06832 Integer, Intent (Out) :: ierror
06833 End Subroutine
06834
06835 subroutine psmile_range_subgrid_3d_dble ( &
06836 array1, array2, array3, &
06837 idlow, idhigh, jdlow, jdhigh, kdlow, kdhigh, &
06838 nbr_corners, grid_shape, rinter, inter, ierror)
06839 Use PSMILe_common
06840 Integer, Intent (In) :: idlow, idhigh, jdlow, jdhigh
06841 Integer, Intent (In) :: kdlow, kdhigh, nbr_corners
06842 Integer, Intent (In) :: grid_shape (2, ndim_3d)
06843 Double Precision, Intent (In) ::
06844 array1 (idlow:idhigh, jdlow:jdhigh, kdlow:kdhigh, nbr_corners)
06845 Double Precision, Intent (In) ::
06846 array2 (idlow:idhigh, jdlow:jdhigh, kdlow:kdhigh, nbr_corners)
06847 Double Precision, Intent (In) ::
06848 array3 (idlow:idhigh, jdlow:jdhigh, kdlow:kdhigh, nbr_corners)
06849 Double Precision, Intent (In) :: rinter (2, ndim_3d)
06850
06851 Integer, Intent (Out) :: inter (2, ndim_3d)
06852 Integer, Intent (Out) :: ierror
06853 End Subroutine
06854
06855 subroutine psmile_mg_ctrl_subgrid_1d_dble ( &
06856 array, corner_shape, nbr_corners, range, &
06857 chmin, chmax, levdim, period, grid_id, ind, ierror)
06858 Integer, Intent (In) :: nbr_corners
06859 Integer, Intent (In) :: corner_shape (2)
06860 Integer, Intent (In) :: range (2)
06861 Integer, Intent (In) :: levdim
06862 Double Precision, Intent (In) :: period
06863 Double Precision, Intent (In) ::
06864 array ( corner_shape(1):corner_shape(2), nbr_corners)
06865 Double Precision, Intent (In) :: chmin (0:levdim)
06866 Double Precision, Intent (In) :: chmax (0:levdim)
06867 Integer, Intent (In) :: grid_id, ind
06868
06869 Integer, Intent (Out) :: ierror
06870 End Subroutine
06871
06872 subroutine psmile_mg_ctrl_subgrid_2d_dble ( &
06873 array, corner_shape, nbr_corners, &
06874 range, &
06875 chmin, chmax, levdim, period, &
06876 grid_id, ind, ierror)
06877 Integer, Intent (In) :: nbr_corners
06878 Integer, Intent (In) :: corner_shape (2, 2)
06879 Integer, Intent (In) :: range (2, 2)
06880 Integer, Intent (In) :: levdim (2)
06881 Double Precision, Intent (In) :: period
06882 Double Precision, Intent (In) :: array(corner_shape(1,1):
06883 corner_shape(2,1),
06884 corner_shape(1,2):
06885 corner_shape(2,2),
06886 nbr_corners)
06887 Double Precision, Intent (In) :: chmin (0:levdim(1), 0:levdim(2))
06888 Double Precision, Intent (In) :: chmax (0:levdim(1), 0:levdim(2))
06889 Integer, Intent (In) :: grid_id, ind
06890 Integer, Intent (Out) :: ierror
06891 End Subroutine
06892
06893 subroutine psmile_mg_ctrl_subgrid_3d_dble ( &
06894 array, corner_shape, nbr_corners, &
06895 range, &
06896 chmin, chmax, levdim, period, &
06897 grid_id, ind, ierror)
06898 Use PSMILe_common
06899 Integer, Intent (In) :: nbr_corners
06900 Integer, Intent (In) :: corner_shape (2, ndim_3d)
06901 Integer, Intent (In) :: range (2, ndim_3d)
06902 Integer, Intent (In) :: levdim (ndim_3d)
06903 Double Precision, Intent (In) :: period
06904 Double Precision, Intent (In) :: array(corner_shape(1,1):
06905 corner_shape(2,1),
06906 corner_shape(1,2):
06907 corner_shape(2,2),
06908 corner_shape(1,3):
06909 corner_shape(2,3),
06910 nbr_corners)
06911 Double Precision, Intent (In) :: chmin (0:levdim(1), 0:levdim(2),
06912 0:levdim(3))
06913 Double Precision, Intent (In) :: chmax (0:levdim(1), 0:levdim(2),
06914 0:levdim(3))
06915 Integer, Intent (In) :: grid_id, ind
06916 Integer, Intent (Out) :: ierror
06917 End Subroutine
06918
06919 subroutine psmile_mg_first_level_dble (grid_id, range, &
06920 mg_info, tol, simplified_grid, ierror)
06921 Use PSMILe_common
06922 Integer, Intent (In) :: grid_id
06923 Integer, Intent (In) :: range (2, ndim_3d)
06924 Type (Enddef_mg), Intent (InOut) :: mg_info
06925 Real (PSMILe_float_kind), Intent (In) :: tol
06926 Logical, Intent (In) :: simplified_grid
06927 Integer, Intent (Out) :: ierror
06928 End Subroutine
06929
06930 subroutine psmile_mg_first_subgrid_1d_dble ( &
06931 array, idlow, idhigh, nbr_corners, &
06932 range, &
06933 chmin, chmax, midp, &
06934 levdim, ierror)
06935 Integer, Intent (In) :: idlow, idhigh, nbr_corners
06936 Integer, Intent (In) :: range (2)
06937 Integer, Intent (In) :: levdim
06938 Double Precision, Intent (In) :: array (idlow:idhigh, nbr_corners)
06939 Double Precision, Intent (Out) :: chmin (0:levdim)
06940 Double Precision, Intent (Out) :: chmax (0:levdim)
06941 Double Precision, Intent (Out) :: midp (0:levdim)
06942 Integer, Intent (Out) :: ierror
06943 End Subroutine
06944
06945 subroutine psmile_mg_first_subgrid_2d_dble (array, &
06946 idlow, idhigh, jdlow, jdhigh, nbr_corners, &
06947 range, &
06948 chmin, chmax, midp, &
06949 levdim1, levdim2, ierror)
06950 Integer, Intent (In) :: idlow, idhigh, jdlow, jdhigh
06951 Integer, Intent (In) :: nbr_corners
06952 Integer, Intent (In) :: range (2, 2)
06953 Integer, Intent (In) :: levdim1, levdim2
06954 Double Precision, Intent (In) :: array (idlow:idhigh, jdlow:jdhigh,
06955 nbr_corners)
06956 Double Precision, Intent (Out) :: chmin (0:levdim1, 0:levdim2)
06957 Double Precision, Intent (Out) :: chmax (0:levdim1, 0:levdim2)
06958 Double Precision, Intent (Out) :: midp (0:levdim1, 0:levdim2)
06959 Integer, Intent (Out) :: ierror
06960 End Subroutine
06961
06962 subroutine psmile_mg_first_subgrid_3d_dble (array, &
06963 idlow, idhigh, jdlow, jdhigh, kdlow, kdhigh, &
06964 nbr_corners, &
06965 range, &
06966 chmin, chmax, midp, &
06967 levdim1, levdim2, levdim3, ierror)
06968 Use PSMILe_common
06969 Integer, Intent (In) :: idlow, idhigh, jdlow, jdhigh
06970 Integer, Intent (In) :: kdlow, kdhigh
06971 Integer, Intent (In) :: nbr_corners
06972 Double Precision, Intent (In) :: array (idlow:idhigh, jdlow:jdhigh,
06973 kdlow:kdhigh, nbr_corners)
06974 Integer, Intent (In) :: range (2, ndim_3d)
06975 Integer, Intent (In) :: levdim1, levdim2, levdim3
06976 Double Precision, Intent (Out) :: chmin (0:levdim1, 0:levdim2, 0:levdim3)
06977 Double Precision, Intent (Out) :: chmax (0:levdim1, 0:levdim2, 0:levdim3)
06978 Double Precision, Intent (Out) :: midp (0:levdim1, 0:levdim2, 0:levdim3)
06979 Integer, Intent (Out) :: ierror
06980 End Subroutine
06981
06982 subroutine psmile_mg_coars_level_dble (grid_id, mg_info_fine, &
06983 mg_info_coarse, &
06984 icoarse, ierror)
06985 Use PSMILe_common
06986 Integer, Intent (In) :: grid_id
06987 Type (Enddef_mg), Intent (In) :: mg_info_fine
06988 Type (Enddef_mg), Intent (InOut):: mg_info_coarse
06989 Integer, Intent (In) :: icoarse (ndim_3d)
06990 Integer, Intent (Out) :: ierror
06991 End Subroutine
06992
06993 subroutine psmile_mg_coars_subgrid_3d_dble ( chfmin, chfmax, midfp, &
06994 levdim1_fine, levdim2_fine, levdim3_fine, &
06995 chcmin, chcmax, midcp, &
06996 levdim1, levdim2, levdim3, &
06997 icoarse, ierror)
06998 Use PSMILe_common
06999 Integer, Intent (In) :: levdim1_fine, levdim2_fine,
07000 levdim3_fine
07001 Integer, Intent (In) :: levdim1, levdim2, levdim3
07002 Double Precision, Intent (In) :: chfmin (0:levdim1_fine,
07003 0:levdim2_fine,
07004 0:levdim3_fine)
07005 Double Precision, Intent (In) :: chfmax (0:levdim1_fine,
07006 0:levdim2_fine,
07007 0:levdim3_fine)
07008 Double Precision, Intent (In) :: midfp (0:levdim1_fine,
07009 0:levdim2_fine,
07010 0:levdim3_fine)
07011 Double Precision, Intent (Out) :: chcmin (0:levdim1, 0:levdim2,
07012 0:levdim3)
07013 Double Precision, Intent (Out) :: chcmax (0:levdim1, 0:levdim2,
07014 0:levdim3)
07015 Double Precision, Intent (Out) :: midcp (0:levdim1, 0:levdim2,
07016 0:levdim3)
07017 Integer, Intent (In) :: icoarse (ndim_3d)
07018 Integer, Intent (Out) :: ierror
07019 End Subroutine
07020
07021 subroutine psmile_mg_get_cyclic_dble (grid_id, range, &
07022 tol, ierror)
07023 Use PSMILe_common
07024
07025 Integer, Intent (In) :: grid_id
07026 Integer, Intent (In) :: range (2, ndim_3d)
07027 Double Precision, Intent (In) :: tol
07028 Integer, Intent (Out) :: ierror
07029 End Subroutine
07030
07031 subroutine psmile_neigh_extra_search_dble (search, extra_search, &
07032 nb_extra, ierror)
07033 Use PSMILe_common
07034
07035 Type (Enddef_search), Intent (In) :: search
07036 Type (Extra_search_info), Intent (InOut) :: extra_search
07037 Integer, Intent (In) :: nb_extra
07038 Integer, Intent (Out) :: ierror
07039 End Subroutine
07040
07041 subroutine psmile_send_req_coords_dble (msg_intersections, &
07042 dest, tag, ierror)
07043 use psmile_common, only : enddef_msg_intersections
07044
07045 Integer, Intent (In) :: dest, tag
07046 Type (enddef_msg_intersections), Intent (In) :: msg_intersections
07047 Integer, Intent (Out) :: ierror
07048 End Subroutine
07049
07050 subroutine psmile_send_req_corners_dble (msg_intersections, &
07051 dest, tag, ierror)
07052 use psmile_common, only : enddef_msg_intersections
07053
07054 Integer, Intent (In) :: dest, tag
07055 Type (enddef_msg_intersections), Intent (In) :: msg_intersections
07056 Integer, Intent (Out) :: ierror
07057 End Subroutine
07058
07059 subroutine psmile_recv_req_coords_dble (sender, tag, search, &
07060 recv_req, recv_mask, new_search, &
07061 ierror)
07062 Use PSMILe_common
07063 Integer, Intent (In) :: sender, tag
07064 Logical, Intent (In) :: recv_mask, new_search
07065 Type (Enddef_search), Intent (InOut) :: search
07066 Integer, Intent (Out) :: recv_req (ndim_3d+2, *)
07067 Integer, Intent (Out) :: ierror
07068 End Subroutine
07069
07070 subroutine psmile_recv_req_corners_dble (sender, tag, &
07071 search, recv_req, &
07072 recv_mask, new_search, &
07073 ierror)
07074 Use PSMILe_common
07075 Integer, Intent (In) :: sender, tag
07076 Logical, Intent (In) :: recv_mask, new_search
07077 Type (Enddef_search), Intent (InOut) :: search
07078 Integer, Intent (Out) :: recv_req (ndim_3d+2, *)
07079 Integer, Intent (Out) :: ierror
07080 End Subroutine
07081
07082 subroutine psmile_search_donor_1d_dble (grid_id, idim, found, &
07083 locations, coords, len, &
07084 tol, ierror)
07085 Use PSMILe_common
07086
07087 Integer, Intent (In) :: grid_id
07088 Integer, Intent (In) :: idim
07089 Integer, Intent (In) :: len
07090 Integer, Intent (InOut) :: found (len)
07091 Integer, Intent (InOut) :: locations (len)
07092 Double Precision, Intent (In) :: coords (len)
07093 Double Precision, Intent (In) :: tol
07094 Integer, Intent (Out) :: ierror
07095 End Subroutine
07096
07097 subroutine psmile_search_donor_2d_dble (found, &
07098 locations, len, &
07099 search, ipart, &
07100 grid_id, method_id, var_id, &
07101 tol, ierror)
07102 Use PSMILe_common
07103
07104 Integer, Intent (In) :: len
07105 Integer, Intent (InOut) :: found (len)
07106 Integer, Intent (InOut) :: locations (ndim_2d, len)
07107 Type (Enddef_search) :: search
07108 Integer, Intent (In) :: ipart
07109 Integer, Intent (In) :: grid_id, method_id, var_id
07110 Double Precision, Intent (In) :: tol
07111 Integer, Intent (Out) :: ierror
07112 End Subroutine
07113
07114 subroutine psmile_search_donor_3d_dble (comp_info, found, &
07115 locations, len, search, &
07116 field_list, n_vars, &
07117 grid_id, method_id, var_id, &
07118 tol, ierror)
07119 Use PSMILe_common
07120
07121 Type (Enddef_comp), Intent (In) :: comp_info
07122 Type (integer_vector) :: found (*)
07123 Type (integer_vector) :: locations (*)
07124 Integer, Intent (In) :: len (*)
07125 Type (Enddef_search) :: search
07126 Integer, Intent (In) :: grid_id
07127 Integer, Intent (InOut) :: method_id, var_id
07128 Integer, Intent (In) :: n_vars
07129 Integer, Intent (In) :: field_list (nd_field_list, n_vars)
07130 Double Precision, Intent (In) :: tol
07131 Integer, Intent (Out) :: ierror
07132 End Subroutine
07133
07134 subroutine psmile_search_donor_3d_reg_dble (comp_info, &
07135 found, locations, len, &
07136 search, field_list, n_vars, &
07137 grid_id, method_id, var_id, &
07138 tol, ierror)
07139 Use PSMILe_common
07140
07141 Type (Enddef_comp), Intent (In) :: comp_info
07142 Type (Enddef_search) :: search
07143 Type (integer_vector), Intent (InOut) :: found (ndim_3d, *)
07144 Type (integer_vector), Intent (InOut) :: locations (ndim_3d, *)
07145 Integer, Intent (In) :: len (search%npart)
07146 Integer, Intent (In) :: grid_id
07147 Integer, Intent (InOut) :: method_id, var_id
07148 Integer, Intent (In) :: n_vars
07149 Integer, Intent (In) :: field_list (nd_field_list, n_vars)
07150 Double Precision, Intent (In) :: tol
07151 Integer, Intent (Out) :: ierror
07152 End Subroutine
07153
07154 subroutine psmile_search_donor_gauss2_dble (comp_info, found, &
07155 locations, len, search, &
07156 field_list, n_vars, &
07157 grid_id, method_id, var_id, &
07158 tol, ierror)
07159 Use PSMILe_common
07160
07161 Type (Enddef_comp), Intent (In) :: comp_info
07162 Type (Enddef_search) :: search
07163 Type (integer_vector) :: found (search%npart, 2)
07164 Type (integer_vector) :: locations (search%npart, 2)
07165 Integer, Intent (In) :: len (search%npart, 2)
07166 Integer, Intent (In) :: grid_id
07167 Integer, Intent (InOut) :: method_id, var_id
07168 Integer, Intent (In) :: n_vars
07169 Integer, Intent (In) :: field_list (nd_field_list, n_vars)
07170 Double Precision, Intent (In) :: tol
07171 Integer, Intent (Out) :: ierror
07172 End Subroutine
07173
07174 subroutine psmile_search_donor_irreg2_dble (comp_info, found, &
07175 locations, len, search, &
07176 field_list, n_vars, grid_id, method_id, var_id, &
07177 tol, ierror)
07178 Use PSMILe_common
07179
07180 Type (Enddef_comp), Intent (In) :: comp_info
07181 Type (Enddef_search) :: search
07182 Type (integer_vector) :: found (search%npart, 2)
07183 Type (integer_vector) :: locations (search%npart, 2)
07184 Integer, Intent (In) :: len (search%npart, 2)
07185 Integer, Intent (In) :: grid_id
07186 Integer, Intent (InOut) :: method_id, var_id
07187 Integer, Intent (In) :: n_vars
07188 Integer, Intent (In) :: field_list (nd_field_list, n_vars)
07189 Double Precision, Intent (In) :: tol
07190 Integer, Intent (Out) :: ierror
07191 End Subroutine
07192
07193 subroutine psmile_search_donor_nnx_dble (comp_info, search, var_id, &
07194 coords1, coords2, coords3, distance, &
07195 nfound, locations, n_send, nb_extra, &
07196 tol, ierror)
07197 Use PSMILe_common
07198
07199 Type (Enddef_comp), Intent (In) :: comp_info
07200 Integer, Intent (In) :: var_id
07201 Integer, Intent (In) :: n_send
07202 Integer, Intent (In) :: nb_extra
07203 Double Precision, Intent (In) :: coords1 (n_send)
07204 Double Precision, Intent (In) :: coords2 (n_send)
07205 Double Precision, Intent (In) :: coords3 (n_send)
07206 Double Precision, Intent (InOut) :: distance (n_send)
07207 Double Precision, Intent (In) :: tol
07208 Type (Enddef_global_search), Intent (InOut) :: search
07209 Integer, Intent (InOut) :: nfound (n_send)
07210 Integer, Intent (Out) :: locations (ndim_3d, n_send)
07211 Integer, Intent (Out) :: ierror
07212 End Subroutine
07213
07214 subroutine psmile_search_nn_3d_dble ( &
07215 sin_search, cos_search, z_search, distance, &
07216 nfound, locations, n_send, &
07217 x_coords, y_coords, z_coords, coords_shape, &
07218 sin_values, cos_values, grid_valid_shape, &
07219 mask_array, mask_shape, mask_available, &
07220 tol, ierror)
07221 Use PSMILe_common
07222
07223 Integer, Intent (In) :: n_send
07224 Double Precision, Intent (In) :: sin_search (n_send, 2)
07225 Double Precision, Intent (In) :: cos_search (n_send, 2)
07226 Double Precision, Intent (In) :: z_search (n_send)
07227 Integer, Intent (In) :: coords_shape (2, ndim_3d)
07228 Double Precision, Intent (In) ::
07229 x_coords (coords_shape(1,1):coords_shape(2,1),
07230 coords_shape(1,2):coords_shape(2,2),
07231 coords_shape(1,3):coords_shape(2,3))
07232 Double Precision, Intent (In) ::
07233 y_coords (coords_shape(1,1):coords_shape(2,1),
07234 coords_shape(1,2):coords_shape(2,2),
07235 coords_shape(1,3):coords_shape(2,3))
07236 Double Precision, Intent (In) ::
07237 z_coords (coords_shape(1,1):coords_shape(2,1),
07238 coords_shape(1,2):coords_shape(2,2),
07239 coords_shape(1,3):coords_shape(2,3))
07240
07241 Integer, Intent (In) :: mask_shape (2, ndim_3d)
07242 Logical, Intent (In) ::
07243 mask_array (mask_shape (1,1):mask_shape (2,1),
07244 mask_shape (1,2):mask_shape (2,2),
07245 mask_shape (1,3):mask_shape (2,3))
07246 Logical, Intent (In) :: mask_available
07247 Integer, Intent (In) ::
07248 grid_valid_shape (2, ndim_3d)
07249
07250 Double Precision, Intent (In) ::
07251 sin_values (grid_valid_shape(1,1):grid_valid_shape(2,1),
07252 grid_valid_shape(1,2):grid_valid_shape(2,2), 2)
07253 Double Precision, Intent (In) ::
07254 cos_values (grid_valid_shape(1,1):grid_valid_shape(2,1),
07255 grid_valid_shape(1,2):grid_valid_shape(2,2), 2)
07256 Double Precision, Intent (In) :: tol
07257 Double Precision, Intent (InOut) :: distance (n_send)
07258 Integer, Intent (InOut) :: nfound (n_send)
07259 Integer, Intent (Out) :: locations (ndim_3d, n_send)
07260 Integer, Intent (Out) :: ierror
07261 End Subroutine
07262
07263 subroutine psmile_search_nn_3d_reg_dble ( &
07264 sin_search, cos_search, z_search, distance, &
07265 nfound, locations, n_send, &
07266 x_coords, y_coords, z_coords, coords_shape, &
07267 sin_values_lon, cos_values_lon, &
07268 sin_values_lat, cos_values_lat, &
07269 grid_valid_shape, &
07270 mask_array, mask_shape, mask_available, &
07271 tol, ierror)
07272 Use PSMILe_common
07273
07274 Integer, Intent (In) :: n_send
07275 Double Precision, Intent (In) :: sin_search (n_send, 2)
07276 Double Precision, Intent (In) :: cos_search (n_send, 2)
07277 Double Precision, Intent (In) :: z_search (n_send)
07278 Integer, Intent (In) :: coords_shape (2, ndim_3d)
07279 Double Precision, Intent (In) ::
07280 x_coords (coords_shape(1,1):coords_shape(2,1))
07281 Double Precision, Intent (In) ::
07282 y_coords (coords_shape(1,1):coords_shape(2,1))
07283 Double Precision, Intent (In) ::
07284 z_coords (coords_shape(1,3):coords_shape(2,3))
07285
07286 Integer, Intent (In) :: mask_shape (2, ndim_3d)
07287 Logical, Intent (In) ::
07288 mask_array (mask_shape (1,1):mask_shape (2,1),
07289 mask_shape (1,2):mask_shape (2,2),
07290 mask_shape (1,3):mask_shape (2,3))
07291 Logical, Intent (In) :: mask_available
07292 Integer, Intent (In) ::
07293 grid_valid_shape (2, ndim_3d)
07294
07295 Double Precision, Intent (In) ::
07296 sin_values_lon (grid_valid_shape(1,1):grid_valid_shape(2,1))
07297 Double Precision, Intent (In) ::
07298 cos_values_lon (grid_valid_shape(1,1):grid_valid_shape(2,1))
07299 Double Precision, Intent (In) ::
07300 sin_values_lat (grid_valid_shape(1,2):grid_valid_shape(2,2))
07301 Double Precision, Intent (In) ::
07302 cos_values_lat (grid_valid_shape(1,2):grid_valid_shape(2,2))
07303 Double Precision, Intent (In) :: tol
07304 Double Precision, Intent (InOut) :: distance (n_send)
07305 Integer, Intent (InOut) :: nfound (n_send)
07306 Integer, Intent (Out) :: locations (ndim_3d, n_send)
07307 Integer, Intent (Out) :: ierror
07308 End Subroutine
07309
07310 subroutine psmile_search_nn_irreg2_dble ( &
07311 sin_search, cos_search, z_search, distance, &
07312 nfound, locations, n_send, &
07313 x_coords, y_coords, z_coords, coords_shape, &
07314 sin_values, cos_values, grid_valid_shape, &
07315 mask_array, mask_shape, mask_available, &
07316 tol, ierror)
07317 Use PSMILe_common
07318
07319 Integer, Intent (In) :: n_send
07320 Double Precision, Intent (In) :: sin_search (n_send, 2)
07321 Double Precision, Intent (In) :: cos_search (n_send, 2)
07322 Double Precision, Intent (In) :: z_search (n_send)
07323 Integer, Intent (In) :: coords_shape (2, ndim_3d)
07324 Double Precision, Intent (In) :: x_coords(
07325 coords_shape(1,1):coords_shape(2,1),
07326 coords_shape(1,2):coords_shape(2,2))
07327 Double Precision, Intent (In) :: y_coords(
07328 coords_shape(1,1):coords_shape(2,1),
07329 coords_shape(1,2):coords_shape(2,2))
07330 Double Precision, Intent (In) :: z_coords(
07331 coords_shape(1,3):coords_shape(2,3))
07332
07333 Integer, Intent (In) :: mask_shape (2, ndim_3d)
07334 Logical, Intent (In) :: mask_array (
07335 mask_shape (1,1):mask_shape (2,1),
07336 mask_shape (1,2):mask_shape (2,2),
07337 mask_shape (1,3):mask_shape (2,3))
07338 Logical, Intent (In) :: mask_available
07339 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
07340
07341 Double Precision, Intent (In) ::
07342 sin_values (grid_valid_shape(1,1):grid_valid_shape(2,1),
07343 grid_valid_shape(1,2):grid_valid_shape(2,2), 2)
07344 Double Precision, Intent (In) ::
07345 cos_values (grid_valid_shape(1,1):grid_valid_shape(2,1),
07346 grid_valid_shape(1,2):grid_valid_shape(2,2), 2)
07347 Double Precision, Intent (In) :: tol
07348 Double Precision, Intent (InOut) :: distance (n_send)
07349 Integer, Intent (InOut) :: nfound (n_send)
07350 Integer, Intent (Out) :: locations (ndim_3d, n_send)
07351 Integer, Intent (Out) :: ierror
07352 End Subroutine
07353
07354 subroutine psmile_store_faces_3d_dble (indices_req, required, &
07355 nreq, &
07356 tgt_coords1, tgt_coords2, tgt_coords3, ncpl, &
07357 corners1, corners2, corners3, &
07358 corner_shape, nbr_corners, grid_valid_shape, &
07359 send_mask, srcloc_ind, &
07360 ibuf, len_item, ndibuf, ipia, &
07361 buf, len_rtem, ndrbuf, ipa, ierror)
07362 Use PSMILe_common
07363
07364 Integer, Intent (In) :: nreq, ncpl
07365 Integer, Intent (In) :: indices_req (nreq)
07366 Integer, Intent (In) :: required (nreq)
07367 Integer, Intent (In) :: nbr_corners
07368 Integer, Intent (In) :: corner_shape (2, ndim_3d)
07369 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
07370 Double Precision, Intent (In) :: tgt_coords1 (ncpl)
07371 Double Precision, Intent (In) :: tgt_coords2 (ncpl)
07372 Double Precision, Intent (In) :: tgt_coords3 (ncpl)
07373 Double Precision, Intent (In) ::
07374 corners1 ( corner_shape(1,1):corner_shape(2,1),
07375 corner_shape(1,2):corner_shape(2,2),
07376 corner_shape(1,3):corner_shape(2,3), nbr_corners)
07377 Double Precision, Intent (In) ::
07378 corners2 ( corner_shape(1,1):corner_shape(2,1),
07379 corner_shape(1,2):corner_shape(2,2),
07380 corner_shape(1,3):corner_shape(2,3), nbr_corners)
07381 Double Precision, Intent (In) ::
07382 corners3 ( corner_shape(1,1):corner_shape(2,1),
07383 corner_shape(1,2):corner_shape(2,2),
07384 corner_shape(1,3):corner_shape(2,3), nbr_corners)
07385 Logical, Intent (In) :: send_mask (nreq)
07386 Integer, Intent (In) :: len_item, len_rtem, ndibuf, ndrbuf
07387 Integer, Intent (In) :: srcloc_ind (ndim_3d, ndibuf)
07388 Double Precision, Intent (InOut) :: buf (len_rtem, ndrbuf)
07389 Integer, Intent (InOut) :: ibuf (len_item, ndibuf)
07390 Integer, Intent (InOut) :: ipa, ipia
07391 Integer, Intent (Out) :: ierror
07392 End Subroutine
07393
07394 subroutine psmile_store_faces_3d_reg_dble (indices_req, required, &
07395 nreq, &
07396 tgt_coords1, tgt_coords2, tgt_coords3, ncpl, &
07397 corners1, corners2, corners3, &
07398 corner_shape, nbr_corners, grid_valid_shape, &
07399 send_mask, srcloc_ind, &
07400 ibuf, len_item, ndibuf, ipia, &
07401 buf, len_rtem, ndrbuf, ipa, ierror)
07402 Use PSMILe_common
07403
07404 Integer, Intent (In) :: nreq, ncpl
07405 Integer, Intent (In) :: indices_req (nreq)
07406 Integer, Intent (In) :: required (nreq)
07407 Integer, Intent (In) :: nbr_corners
07408 Integer, Intent (In) :: corner_shape (2, ndim_3d)
07409 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
07410 Double Precision, Intent (In) :: tgt_coords1 (ncpl)
07411 Double Precision, Intent (In) :: tgt_coords2 (ncpl)
07412 Double Precision, Intent (In) :: tgt_coords3 (ncpl)
07413 Double Precision, Intent (In) ::
07414 corners1 ( corner_shape(1,1):corner_shape(2,1), 2)
07415 Double Precision, Intent (In) ::
07416 corners2 ( corner_shape(1,2):corner_shape(2,2), 2)
07417 Double Precision, Intent (In) ::
07418 corners3 ( corner_shape(1,3):corner_shape(2,3), 2)
07419 Logical, Intent (In) :: send_mask (nreq)
07420 Integer, Intent (In) :: len_item, len_rtem, ndibuf, ndrbuf
07421 Integer, Intent (In) :: srcloc_ind (ndim_3d, ndibuf)
07422 Double Precision, Intent (InOut) :: buf (len_rtem, ndrbuf)
07423 Integer, Intent (InOut) :: ibuf (len_item, ndibuf)
07424 Integer, Intent (InOut) :: ipa, ipia
07425 Integer, Intent (Out) :: ierror
07426 End Subroutine
07427
07428 subroutine psmile_store_faces_gauss2_dble (indices_req, &
07429 required, nreq, &
07430 tgt_coords1, tgt_coords2, tgt_coords3, ncpl, &
07431 corners1, corners2, corners3, corner_shape, &
07432 nbr_corners, grid_id, grid_valid_shape, &
07433 send_mask, srcloc_ind, &
07434 virtual_ind, virtual_cell_available, &
07435 ibuf, len_item, ndibuf, ipia, &
07436 buf, len_rtem, ndrbuf, ipa, ierror)
07437 Use PSMILe_common
07438
07439 Integer, Intent (In) :: nreq
07440 Integer, Intent (In) :: indices_req (nreq)
07441 Integer, Intent (In) :: required (nreq)
07442 Integer, Intent (In) :: corner_shape (2, ndim_3d)
07443 Integer, Intent (In) :: nbr_corners
07444 Integer, Intent (In) :: grid_id
07445 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
07446 Integer, Intent (In) :: ncpl
07447 Double Precision, Intent (In) :: tgt_coords1 (ncpl)
07448 Double Precision, Intent (In) :: tgt_coords2 (ncpl)
07449 Double Precision, Intent (In) :: tgt_coords3 (ncpl)
07450 Double Precision, Intent (In) :: corners1 ( corner_shape(1,1):corner_shape(2,1), 2)
07451 Double Precision, Intent (In) :: corners2 ( corner_shape(1,1):corner_shape(2,1), 2)
07452 Double Precision, Intent (In) :: corners3 ( corner_shape(1,3):corner_shape(2,3), 2)
07453 Logical, Intent (In) :: send_mask (nreq)
07454 Integer, Intent (In) :: ndibuf
07455 Integer, Intent (In) :: srcloc_ind (ndim_3d, ndibuf)
07456 Integer, Intent (In) :: virtual_ind (ndibuf)
07457 Logical, Intent (In) :: virtual_cell_available
07458 Integer, Intent (In) :: len_item
07459 Integer, Intent (In) :: ndrbuf
07460 Integer, Intent (In) :: len_rtem
07461 Double Precision, Intent (InOut) :: buf (len_rtem, ndrbuf)
07462 Integer, Intent (InOut) :: ipa
07463 Integer, Intent (InOut) :: ibuf (len_item, ndibuf)
07464 Integer, Intent (InOut) :: ipia
07465 Integer, Intent (Out) :: ierror
07466 End Subroutine
07467
07468 subroutine psmile_store_faces_irreg2_dble (indices_req, required, &
07469 nreq, &
07470 tgt_coords1, tgt_coords2, tgt_coords3, ncpl, &
07471 corners1, corners2, corners3, &
07472 corner_shape, nbr_corners, grid_valid_shape, &
07473 send_mask, srcloc_ind, &
07474 ibuf, len_item, ndibuf, ipia, &
07475 buf, len_rtem, ndrbuf, ipa, ierror)
07476 Use PSMILe_common
07477
07478 Integer, Intent (In) :: nreq, ncpl
07479 Integer, Intent (In) :: indices_req (nreq)
07480 Integer, Intent (In) :: required (nreq)
07481 Integer, Intent (In) :: nbr_corners
07482 Integer, Intent (In) :: corner_shape (2, ndim_3d)
07483 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
07484 Double Precision, Intent (In) :: tgt_coords1 (ncpl)
07485 Double Precision, Intent (In) :: tgt_coords2 (ncpl)
07486 Double Precision, Intent (In) :: tgt_coords3 (ncpl)
07487 Double Precision, Intent (In) ::
07488 corners1 ( corner_shape(1,1):corner_shape(2,1),
07489 corner_shape(1,2):corner_shape(2,2), nbr_corners/2)
07490 Double Precision, Intent (In) ::
07491 corners2 ( corner_shape(1,1):corner_shape(2,1),
07492 corner_shape(1,2):corner_shape(2,2), nbr_corners/2)
07493 Double Precision, Intent (In) ::
07494 corners3 ( corner_shape(1,3):corner_shape(2,3), 2)
07495 Logical, Intent (In) :: send_mask (nreq)
07496 Integer, Intent (In) :: len_item, len_rtem
07497 Integer, Intent (In) :: ndibuf, ndrbuf
07498 Integer, Intent (In) :: srcloc_ind (ndim_3d, ndibuf)
07499
07500 Double Precision, Intent (InOut) :: buf (len_rtem, ndrbuf)
07501 Integer, Intent (InOut) :: ibuf (len_item, ndibuf)
07502 Integer, Intent (InOut) :: ipa, ipia
07503 Integer, Intent (Out) :: ierror
07504 End Subroutine
07505
07506 subroutine psmile_trf_lonlat_1d_dble (x_coords, y_coords, &
07507 coords_shape, grid_valid_shape, &
07508 sin_values_lon, cos_values_lon, &
07509 sin_values_lat, cos_values_lat, ierror)
07510 Use PSMILe_common
07511
07512 Integer, Intent (In) :: coords_shape (2, ndim_2d)
07513 Integer, Intent (In) :: grid_valid_shape (2, ndim_2d)
07514
07515 Double Precision, Intent (In) :: x_coords(coords_shape(1,1):
07516 coords_shape(2,1))
07517 Double Precision, Intent (In) :: y_coords(coords_shape(1,2):
07518 coords_shape(2,2))
07519 Double Precision, Intent (Out) :: sin_values_lon (grid_valid_shape(1,1):
07520 grid_valid_shape(2,1))
07521 Double Precision, Intent (Out) :: sin_values_lat (grid_valid_shape(1,2):
07522 grid_valid_shape(2,2))
07523 Double Precision, Intent (Out) :: cos_values_lon (grid_valid_shape(1,1):
07524 grid_valid_shape(2,1))
07525 Double Precision, Intent (Out) :: cos_values_lat (grid_valid_shape(1,2):
07526 grid_valid_shape(2,2))
07527 Integer, Intent (Out) :: ierror
07528 End Subroutine
07529
07530 subroutine psmile_trf_lonlat_2d_dble (x_coords, y_coords, &
07531 coords_shape, grid_valid_shape, &
07532 sin_values, cos_values, ierror)
07533 Use PSMILe_common
07534
07535 Integer, Intent (In) :: coords_shape (2, ndim_2d)
07536 Integer, Intent (In) :: grid_valid_shape (2, ndim_2d)
07537
07538 Double Precision, Intent (In) :: x_coords(coords_shape(1,1):
07539 coords_shape(2,1),
07540 coords_shape(1,2):
07541 coords_shape(2,2))
07542 Double Precision, Intent (In) :: y_coords(coords_shape(1,1):
07543 coords_shape(2,1),
07544 coords_shape(1,2):
07545 coords_shape(2,2))
07546 Double Precision, Intent (Out) :: sin_values (grid_valid_shape(1,1):
07547 grid_valid_shape(2,1),
07548 grid_valid_shape(1,2):
07549 grid_valid_shape(2,2),
07550 2)
07551 Double Precision, Intent (Out) :: cos_values (grid_valid_shape(1,1):
07552 grid_valid_shape(2,1),
07553 grid_valid_shape(1,2):
07554 grid_valid_shape(2,2),
07555 2)
07556 Integer, Intent (Out) :: ierror
07557 End Subroutine
07558
07559 subroutine psmile_trf_lonlat_3d_dble (x_coords, y_coords, &
07560 coords_shape, grid_valid_shape, &
07561 sin_values, cos_values, ierror)
07562 Use PSMILe_common
07563
07564 Integer, Intent (In) :: coords_shape (2, ndim_3d)
07565 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
07566
07567 Double Precision, Intent (In) :: x_coords(coords_shape(1,1):
07568 coords_shape(2,1),
07569 coords_shape(1,2):
07570 coords_shape(2,2),
07571 coords_shape(1,3):
07572 coords_shape(2,3))
07573 Double Precision, Intent (In) :: y_coords(coords_shape(1,1):
07574 coords_shape(2,1),
07575 coords_shape(1,2):
07576 coords_shape(2,2),
07577 coords_shape(1,3):
07578 coords_shape(2,3))
07579 Double Precision, Intent (Out) :: sin_values (grid_valid_shape(1,1):
07580 grid_valid_shape(2,1),
07581 grid_valid_shape(1,2):
07582 grid_valid_shape(2,2),
07583 grid_valid_shape(1,3):
07584 grid_valid_shape(2,3),
07585 2)
07586 Double Precision, Intent (Out) :: cos_values (grid_valid_shape(1,1):
07587 grid_valid_shape(2,1),
07588 grid_valid_shape(1,2):
07589 grid_valid_shape(2,2),
07590 grid_valid_shape(1,3):
07591 grid_valid_shape(2,3),
07592 2)
07593 Integer, Intent (Out) :: ierror
07594 End Subroutine
07595
07596 subroutine psmile_info_coords_irreg2_dble ( &
07597 x_coords, y_coords, z_coords, &
07598 coords_shape, grid_valid_shape, &
07599 sinvec, cosvec, ierror)
07600 Use PSMILe_common
07601
07602 Integer, Intent (In) :: coords_shape (2, ndim_3d)
07603 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
07604
07605 Double Precision, Intent (In) :: x_coords(*)
07606 Double Precision, Intent (In) :: y_coords(*)
07607 Double Precision, Intent (In) :: z_coords(*)
07608
07609 Type (dble_vector) :: sinvec
07610 Type (dble_vector) :: cosvec
07611 Integer, Intent (Out) :: ierror
07612 End Subroutine
07613
07614 subroutine psmile_info_coords_3d_reg_dble ( &
07615 x_coords, y_coords, z_coords, &
07616 coords_shape, grid_valid_shape, &
07617 sinvec, cosvec, ierror)
07618 Use PSMILe_common
07619
07620 Integer, Intent (In) :: coords_shape (2, ndim_3d)
07621 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
07622
07623 Double Precision, Intent (In) :: x_coords(*)
07624 Double Precision, Intent (In) :: y_coords(*)
07625 Double Precision, Intent (In) :: z_coords(*)
07626
07627 Type (dble_vector) :: sinvec (ndim_2d)
07628 Type (dble_vector) :: cosvec (ndim_2d)
07629 Integer, Intent (Out) :: ierror
07630 End Subroutine
07631
07632 subroutine psmile_info_trf_coords_3d_dble ( &
07633 x_coords, y_coords, z_coords, &
07634 coords_shape, grid_valid_shape, &
07635 sinvec, cosvec, ierror)
07636 Use PSMILe_common
07637
07638 Integer, Intent (In) :: coords_shape (2, ndim_3d)
07639 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
07640
07641 Double Precision, Intent (In) :: x_coords(*)
07642 Double Precision, Intent (In) :: y_coords(*)
07643 Double Precision, Intent (In) :: z_coords(*)
07644
07645 Type (dble_vector) :: sinvec
07646 Type (dble_vector) :: cosvec
07647 Integer, Intent (Out) :: ierror
07648 End Subroutine
07649
07650 subroutine psmile_info_trs_locs_3d_dble (comp_info, &
07651 coords, shape, control, &
07652 len_cpl, &
07653 var_id, grid_valid_shape, &
07654 search, &
07655 method_id, send_index, &
07656 ierror)
07657 Use PSMILe_common
07658
07659 Type (Enddef_comp), Intent (In) :: comp_info
07660 Type (Enddef_search), Intent (InOut) :: search
07661 Type (dble_vector), Intent (In) :: coords (ndim_3d, search%npart)
07662 Integer, Intent (In) :: shape (2, ndim_3d, search%npart)
07663 Integer, Intent (In) :: control (2, ndim_3d, search%npart)
07664 Integer, Intent (In) :: len_cpl (search%npart)
07665 Integer, Intent (In) :: var_id, method_id
07666 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
07667 Integer, Intent (InOut) :: send_index
07668 Integer, Intent (Out) :: ierror
07669 End Subroutine
07670
07671 subroutine psmile_info_trs_loc_3d_reg_dble (comp_info, &
07672 coords, shape, control, &
07673 len_cpl, &
07674 var_id, grid_valid_shape, &
07675 search, &
07676 method_id, send_index, &
07677 ierror)
07678 Use PSMILe_common
07679
07680 Type (Enddef_comp), Intent (In) :: comp_info
07681 Type (Enddef_search), Intent (InOut) :: search
07682 Type (dble_vector), Intent (In) :: coords (ndim_3d, search%npart)
07683 Integer, Intent (In) :: shape (2, ndim_3d, search%npart)
07684 Integer, Intent (In) :: control (2, ndim_3d, search%npart)
07685 Integer, Intent (InOut) :: len_cpl (search%npart)
07686 Integer, Intent (In) :: var_id, method_id
07687 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
07688 Integer, Intent (InOut) :: send_index
07689 Integer, Intent (Out) :: ierror
07690 End Subroutine
07691
07692 subroutine psmile_info_trs_loc_irreg2_dble (comp_info, &
07693 coords, shape, control, &
07694 len_cpl, &
07695 var_id, grid_valid_shape, &
07696 search, &
07697 method_id, send_index, &
07698 ierror)
07699 Use PSMILe_common
07700
07701 Type (Enddef_comp), Intent (In) :: comp_info
07702 Type (Enddef_search), Intent (InOut) :: search
07703 Type (dble_vector), Intent (In) :: coords (ndim_3d, search%npart)
07704 Integer, Intent (In) :: shape (2, ndim_3d, search%npart)
07705 Integer, Intent (In) :: control (2, ndim_3d, search%npart)
07706 Integer, Intent (InOut) :: len_cpl (search%npart)
07707 Integer, Intent (In) :: var_id, method_id
07708 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
07709 Integer, Intent (InOut) :: send_index
07710 Integer, Intent (Out) :: ierror
07711 End Subroutine
07712
07713 subroutine psmile_info_trs_loc_gauss2_dble (comp_info, &
07714 coords, shape, control, len_cpl, &
07715 var_id, grid_valid_shape, &
07716 search, method_id, &
07717 send_index, ierror)
07718 Use PSMILe_common
07719
07720 Type (Enddef_comp), Intent (In) :: comp_info
07721 Type (Enddef_search), Intent (InOut) :: search
07722 Type (dble_vector), Intent (In) :: coords (ndim_3d, search%npart)
07723 Integer, Intent (In) :: shape (2, ndim_3d, search%npart)
07724 Integer, Intent (In) :: control (2, ndim_3d, search%npart)
07725 Integer, Intent (InOut) :: len_cpl (search%npart)
07726 Integer, Intent (In) :: var_id, method_id
07727 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
07728 Integer, Intent (InOut) :: send_index
07729 Integer, Intent (Out) :: ierror
07730 End Subroutine
07731
07732 subroutine psmile_neigh_near_irreg2_dble (grid_id, &
07733 coords1, coords2, coords3, &
07734 x_coords, y_coords, z_coords, &
07735 coords_shape, &
07736 mask_array, mask_shape, mask_available, &
07737 sin_values, cos_values, grid_valid_shape, &
07738 search_mode, &
07739 srcloc, srclocz, nlocs, &
07740 nloc, nprev, &
07741 neighbors_3d, num_neigh, &
07742 extra_search, ierror)
07743
07744 Use PSMILe_common
07745
07746 Integer, Intent (In) :: grid_id
07747 Integer, Intent (In) :: nloc, nprev, search_mode
07748 Integer, Intent (In) :: nlocs (ndim_2d)
07749 Double Precision, Intent (In) :: coords1 (nloc)
07750 Double Precision, Intent (In) :: coords2 (nloc)
07751 Double Precision, Intent (In) :: coords3 (nloc)
07752 Integer, Intent (In) :: coords_shape (2, ndim_3d)
07753 Double Precision, Intent (In) :: x_coords (*)
07754 Double Precision, Intent (In) :: y_coords (*)
07755 Double Precision, Intent (In) :: z_coords (*)
07756 Logical, Intent (In) :: mask_array (*)
07757 Integer, Intent (In) :: mask_shape (2, ndim_3d)
07758 Logical, Intent (In) :: mask_available
07759 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
07760 Double Precision, Intent (In) :: sin_values (*)
07761 Double Precision, Intent (In) :: cos_values (*)
07762 Integer, Intent (In) :: srcloc (ndim_2d, nloc)
07763 Integer, Intent (In) :: srclocz (nloc)
07764 Integer, Intent (In) :: num_neigh
07765 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc, num_neigh)
07766 Type (Extra_search_info) :: extra_search
07767 Integer, Intent (Out) :: ierror
07768 End Subroutine
07769
07770 subroutine psmile_neigh_nearx_irreg2_dble (grid_id, &
07771 coords1, coords2, coords3, &
07772 x_coords, y_coords, z_coords, &
07773 coords_shape, &
07774 mask_array, mask_shape, mask_available, &
07775 sin_values, cos_values, grid_valid_shape, &
07776 search_mode, &
07777 srcloc, srclocz, nlocs, &
07778 nloc, nprev, &
07779 neighbors_3d, num_neigh, &
07780 extra_search, ierror)
07781
07782 Use PSMILe_common
07783
07784 Integer, Intent (In) :: grid_id
07785 Integer, Intent (In) :: nloc, nprev, search_mode
07786 Integer, Intent (In) :: nlocs (ndim_2d)
07787 Double Precision, Intent (In) :: coords1 (nlocs(1)*nlocs(2))
07788 Double Precision, Intent (In) :: coords2 (nlocs(1)*nlocs(2))
07789 Double Precision, Intent (In) :: coords3 (nlocs(1)*nlocs(2))
07790 Integer, Intent (In) :: coords_shape (2, ndim_3d)
07791 Double Precision, Intent (In) :: x_coords (*)
07792 Double Precision, Intent (In) :: y_coords (*)
07793 Double Precision, Intent (In) :: z_coords (*)
07794 Logical, Intent (In) :: mask_array (*)
07795 Integer, Intent (In) :: mask_shape (2, ndim_3d)
07796 Logical, Intent (In) :: mask_available
07797 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
07798 Double Precision, Intent (In) :: sin_values (*)
07799 Double Precision, Intent (In) :: cos_values (*)
07800 Integer, Intent (In) :: srcloc (ndim_2d, nlocs(1))
07801 Integer, Intent (In) :: srclocz (nlocs(2))
07802 Integer, Intent (In) :: num_neigh
07803 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc, num_neigh)
07804 Type (Extra_search_info) :: extra_search
07805 Integer, Intent (Out) :: ierror
07806 End Subroutine
07807
07808 subroutine psmile_neigh_cells_3d_dble ( use_how, &
07809 grid_shape, interpolation_mode, cyclic, &
07810 corner_shape_3d, nbr_corners, &
07811 corner_x, corner_y, corner_z, &
07812 search, control, tgt_cell, tgt_corners, &
07813 npoints, srclocs, msklocs, ncpl, &
07814 num_neigh, nbr_cells, ierror )
07815
07816 USE PSMILe_Common
07817
07818 Integer, Intent (In) :: use_how(3)
07819 Integer, Intent (In) :: grid_shape (2, ndim_3d)
07820 Integer, Intent (In) :: interpolation_mode
07821 Logical, Intent (In) :: cyclic (ndim_3d)
07822 Integer, Intent (In) :: corner_shape_3d (2,ndim_3d,ndim_3d)
07823 Integer, Intent (In) :: nbr_corners(ndim_3d)
07824 Type (Enddef_search), Intent (InOut) :: search
07825 Integer, Intent (In) :: control (2, ndim_3d, search%npart)
07826 Type (dble_vector), Intent (InOut) :: tgt_cell(ndim_3d)
07827 Integer, Intent (In) :: tgt_corners(ndim_3d)
07828 Integer, Intent (In) :: npoints
07829 Integer, Intent (In) :: ncpl
07830 Integer, Intent (In) :: srclocs (ndim_3d, npoints)
07831 Logical, Intent (In) :: msklocs (npoints)
07832 Integer, Intent (In) :: num_neigh
07833 Double Precision, Intent (In) :: corner_x (corner_shape_3d (1,1,1):corner_shape_3d(2,1,1),
07834 corner_shape_3d (1,2,1):corner_shape_3d(2,2,1),
07835 corner_shape_3d (1,3,1):corner_shape_3d(2,3,1),
07836 nbr_corners(1))
07837
07838 Double Precision, Intent (In) :: corner_y (corner_shape_3d (1,1,2):corner_shape_3d(2,1,2),
07839 corner_shape_3d (1,2,2):corner_shape_3d(2,2,2),
07840 corner_shape_3d (1,3,2):corner_shape_3d(2,3,2),
07841 nbr_corners(2))
07842
07843 Double Precision, Intent (In) :: corner_z (corner_shape_3d (1,1,3):corner_shape_3d(2,1,3),
07844 corner_shape_3d (1,2,3):corner_shape_3d(2,2,3),
07845 corner_shape_3d (1,3,3):corner_shape_3d(2,3,3),
07846 nbr_corners(3))
07847 Integer, Intent (Out) :: nbr_cells(ncpl)
07848 Integer, Intent (Out) :: ierror
07849 End Subroutine
07850
07851 subroutine psmile_neigh_cells_3d_reg_dble ( &
07852 grid_valid_shape, interpolation_mode, &
07853 cyclic, grid_id, search, corners, &
07854 npoints, srclocs, ncpl, nbr_cells, &
07855 ierror )
07856
07857 USE PSMILe_Common
07858
07859 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
07860 Integer, Intent (In) :: interpolation_mode
07861 Logical, Intent (In) :: cyclic (ndim_3d)
07862 Integer, Intent (In) :: grid_id
07863 Type (Enddef_search), Intent (In) :: search
07864 Type (dble_vector), Intent (In) :: corners (ndim_3d, search%npart)
07865 Integer, Intent (In) :: npoints (ndim_3d, search%npart)
07866 Type (integer_vector), Intent (In) :: srclocs (ndim_3d, search%npart)
07867 Integer, Intent (In) :: ncpl
07868 Integer, Intent (Out) :: nbr_cells(ncpl)
07869 Integer, Intent (Out) :: ierror
07870 End Subroutine
07871
07872 subroutine psmile_neigh_cells_irreg2_dble ( use_how, &
07873 grid_shape, interpolation_mode, cyclic, &
07874 corner_shape_3d, nbr_corners, &
07875 corner_x, corner_y, &
07876 search, control, tgt_cell, tgt_corners, &
07877 npoints, srclocs, msklocs, ncpl, &
07878 num_neigh, nbr_cells, ierror )
07879
07880 USE PSMILe_Common
07881
07882 Integer, Intent (In) :: use_how(3)
07883 Integer, Intent (In) :: grid_shape (2, ndim_3d)
07884 Integer, Intent (In) :: interpolation_mode
07885 Logical, Intent (In) :: cyclic (ndim_3d)
07886 Integer, Intent (In) :: corner_shape_3d(2,ndim_3d,ndim_3d)
07887 Integer, Intent (In) :: nbr_corners(ndim_3d)
07888 Type (Enddef_search), Intent (InOut) :: search
07889 Integer, Intent (In) :: control (2, ndim_3d, search%npart)
07890 Type (dble_vector), Intent (InOut) :: tgt_cell(ndim_3d)
07891 Integer, Intent (In) :: tgt_corners
07892 Integer, Intent (In) :: npoints (ndim_2d, search%npart)
07893 Integer, Intent (In) :: ncpl
07894 Type (integer_vector), Intent (In) :: srclocs (2,search%npart)
07895 Type (logical_vector), Intent (In) :: msklocs (2,search%npart)
07896 Integer, Intent (In) :: num_neigh
07897 Double Precision, Intent (In) :: corner_x (corner_shape_3d (1,1,1):corner_shape_3d(2,1,1),
07898 corner_shape_3d (1,2,1):corner_shape_3d(2,2,1),
07899 nbr_corners(1))
07900 Double Precision, Intent (In) :: corner_y (corner_shape_3d (1,1,2):corner_shape_3d(2,1,2),
07901 corner_shape_3d (1,2,2):corner_shape_3d(2,2,2),
07902 nbr_corners(2))
07903 Integer, Intent (Out) :: nbr_cells(ncpl)
07904 Integer, Intent (Out) :: ierror
07905 End Subroutine
07906
07907 subroutine psmile_neigh_near_irr2_3d_dble (grid_id, &
07908 coords1, coords2, coords3, &
07909 x_coords, y_coords, z_coords, &
07910 coords_shape, &
07911 mask_array, mask_shape, mask_available, &
07912 sin_values, cos_values, grid_valid_shape, &
07913 search_mode, &
07914 srcloc, nloc, nprev, nsearch, &
07915 neighbors_3d, num_neigh, &
07916 extra_search, ierror)
07917
07918 Use PSMILe_common
07919
07920 Integer, Intent (In) :: grid_id
07921 Integer, Intent (In) :: nloc, nprev, nsearch, search_mode
07922 Double Precision, Intent (In) :: coords1 (nloc)
07923 Double Precision, Intent (In) :: coords2 (nloc)
07924 Double Precision, Intent (In) :: coords3 (nloc)
07925 Integer, Intent (In) :: coords_shape (2, ndim_3d)
07926 Double Precision, Intent (In) :: x_coords (*)
07927 Double Precision, Intent (In) :: y_coords (*)
07928 Double Precision, Intent (In) :: z_coords (*)
07929 Logical, Intent (In) :: mask_array (*)
07930 Integer, Intent (In) :: mask_shape (2, ndim_3d)
07931 Logical, Intent (In) :: mask_available
07932 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
07933 Double Precision, Intent (In) :: sin_values (*)
07934 Double Precision, Intent (In) :: cos_values (*)
07935 Integer, Intent (In) :: srcloc (ndim_3d, nloc)
07936 Integer, Intent (In) :: num_neigh
07937 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc, num_neigh)
07938 Type (Extra_search_info) :: extra_search
07939 Integer, Intent (Out) :: ierror
07940 End Subroutine
07941
07942 subroutine psmile_neigh_nearx_irr2_3d_dble (grid_id, &
07943 coords1, coords2, coords3, &
07944 x_coords, y_coords, z_coords, &
07945 coords_shape, &
07946 mask_array, mask_shape, mask_available, &
07947 sin_values, cos_values, grid_valid_shape, &
07948 search_mode, &
07949 srcloc, nloc, nprev, nsearch, &
07950 neighbors_3d, num_neigh, &
07951 extra_search, ierror)
07952
07953 Use PSMILe_common
07954
07955 Integer, Intent (In) :: grid_id
07956 Integer, Intent (In) :: nloc, nprev, nsearch, search_mode
07957 Double Precision, Intent (In) :: coords1 (nloc)
07958 Double Precision, Intent (In) :: coords2 (nloc)
07959 Double Precision, Intent (In) :: coords3 (nloc)
07960 Integer, Intent (In) :: coords_shape (2, ndim_3d)
07961 Double Precision, Intent (In) :: x_coords (*)
07962 Double Precision, Intent (In) :: y_coords (*)
07963 Double Precision, Intent (In) :: z_coords (*)
07964 Logical, Intent (In) :: mask_array (*)
07965 Integer, Intent (In) :: mask_shape (2, ndim_3d)
07966 Logical, Intent (In) :: mask_available
07967 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
07968 Double Precision, Intent (In) :: sin_values (*)
07969 Double Precision, Intent (In) :: cos_values (*)
07970 Integer, Intent (In) :: srcloc (ndim_3d, nloc)
07971 Integer, Intent (In) :: num_neigh
07972 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc, num_neigh)
07973 Type (Extra_search_info) :: extra_search
07974 Integer, Intent (Out) :: ierror
07975 End Subroutine
07976
07977 subroutine psmile_neigh_near_3d_irr2_dble (grid_id, &
07978 coords1, coords2, coords3, &
07979 x_coords, y_coords, z_coords, &
07980 coords_shape, &
07981 mask_array, mask_shape, mask_available, &
07982 sin_values_lon, cos_values_lon, &
07983 sin_values_lat, cos_values_lat, &
07984 grid_valid_shape, search_mode, &
07985 srcloc, srclocz, nlocs, nloc, nprev, &
07986 neighbors_3d, num_neigh, &
07987 extra_search, ierror)
07988
07989 Use PSMILe_common
07990
07991 Integer, Intent (In) :: grid_id
07992 Integer, Intent (In) :: nloc, nprev, search_mode
07993 Integer, Intent (In) :: nlocs (ndim_2d)
07994 Double Precision, Intent (In) :: coords1 (*)
07995 Double Precision, Intent (In) :: coords2 (*)
07996 Double Precision, Intent (In) :: coords3 (*)
07997 Integer, Intent (In) :: coords_shape (2, ndim_3d)
07998 Double Precision, Intent (In) :: x_coords (*)
07999 Double Precision, Intent (In) :: y_coords (*)
08000 Double Precision, Intent (In) :: z_coords (*)
08001 Logical, Intent (In) :: mask_array (*)
08002 Integer, Intent (In) :: mask_shape (2, ndim_3d)
08003 Logical, Intent (In) :: mask_available
08004 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
08005 Double Precision, Intent (In) :: sin_values_lon (*)
08006 Double Precision, Intent (In) :: cos_values_lon (*)
08007 Double Precision, Intent (In) :: sin_values_lat (*)
08008 Double Precision, Intent (In) :: cos_values_lat (*)
08009 Integer, Intent (In) :: srcloc (ndim_2d, nlocs(1))
08010 Integer, Intent (In) :: srclocz (nlocs(2))
08011 Integer, Intent (In) :: num_neigh
08012 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc,
08013 num_neigh)
08014 Type (Extra_search_info) :: extra_search
08015 Integer, Intent (Out) :: ierror
08016 End Subroutine
08017
08018 subroutine psmile_neigh_near_3d_irr3_dble (grid_id, &
08019 coords1, coords2, coords3, &
08020 x_coords, y_coords, z_coords, &
08021 coords_shape, &
08022 mask_array, mask_shape, mask_available, &
08023 sin_values_lon, cos_values_lon, &
08024 sin_values_lat, cos_values_lat, &
08025 grid_valid_shape, search_mode, &
08026 srcloc, nsearch, nloc, nprev, &
08027 neighbors_3d, num_neigh, &
08028 extra_search, ierror)
08029
08030 Use PSMILe_common
08031
08032 Integer, Intent (In) :: grid_id
08033 Integer, Intent (In) :: nloc, nprev, search_mode
08034 Integer, Intent (In) :: nsearch
08035 Double Precision, Intent (In) :: coords1 (*)
08036 Double Precision, Intent (In) :: coords2 (*)
08037 Double Precision, Intent (In) :: coords3 (*)
08038 Integer, Intent (In) :: coords_shape (2, ndim_3d)
08039 Double Precision, Intent (In) :: x_coords (*)
08040 Double Precision, Intent (In) :: y_coords (*)
08041 Double Precision, Intent (In) :: z_coords (*)
08042 Logical, Intent (In) :: mask_array (*)
08043 Integer, Intent (In) :: mask_shape (2, ndim_3d)
08044 Logical, Intent (In) :: mask_available
08045 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
08046 Double Precision, Intent (In) :: sin_values_lon (*)
08047 Double Precision, Intent (In) :: cos_values_lon (*)
08048 Double Precision, Intent (In) :: sin_values_lat (*)
08049 Double Precision, Intent (In) :: cos_values_lat (*)
08050 Integer, Intent (In) :: srcloc (ndim_3d, nloc)
08051 Integer, Intent (In) :: num_neigh
08052 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc,
08053 num_neigh)
08054 Type (Extra_search_info) :: extra_search
08055 Integer, Intent (Out) :: ierror
08056 End Subroutine
08057
08058 subroutine psmile_neigh_near_3d_reg_dble (grid_id, &
08059 coords1, coords2, coords3, &
08060 x_coords, y_coords, z_coords, &
08061 coords_shape, &
08062 mask_array, mask_shape, mask_available, &
08063 sin_values_lon, cos_values_lon, &
08064 sin_values_lat, cos_values_lat, &
08065 grid_valid_shape, search_mode, &
08066 srclocs, nlocs, nloc, nprev, &
08067 neighbors_3d, num_neigh, &
08068 extra_search, ierror)
08069
08070 Use PSMILe_common
08071
08072 Integer, Intent (In) :: grid_id
08073 Integer, Intent (In) :: nloc, nprev, search_mode
08074 Integer, Intent (In) :: nlocs (ndim_3d)
08075 Double Precision, Intent (In) :: coords1 (*)
08076 Double Precision, Intent (In) :: coords2 (*)
08077 Double Precision, Intent (In) :: coords3 (*)
08078 Integer, Intent (In) :: coords_shape (2, ndim_3d)
08079 Double Precision, Intent (In) :: x_coords (*)
08080 Double Precision, Intent (In) :: y_coords (*)
08081 Double Precision, Intent (In) :: z_coords (*)
08082 Logical, Intent (In) :: mask_array (*)
08083 Integer, Intent (In) :: mask_shape (2, ndim_3d)
08084 Logical, Intent (In) :: mask_available
08085 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
08086 Double Precision, Intent (In) :: sin_values_lon (*)
08087 Double Precision, Intent (In) :: cos_values_lon (*)
08088 Double Precision, Intent (In) :: sin_values_lat (*)
08089 Double Precision, Intent (In) :: cos_values_lat (*)
08090 Type (integer_vector), Intent (In) :: srclocs (ndim_3d)
08091 Integer, Intent (In) :: num_neigh
08092 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc, num_neigh)
08093 Type (Extra_search_info) :: extra_search
08094 Integer, Intent (Out) :: ierror
08095 End Subroutine
08096
08097 subroutine psmile_neigh_nearx_3d_irr2_dble (grid_id, &
08098 coords1, coords2, coords3, &
08099 x_coords, y_coords, z_coords, &
08100 coords_shape, &
08101 mask_array, mask_shape, mask_available, &
08102 sin_values_lon, cos_values_lon, &
08103 sin_values_lat, cos_values_lat, &
08104 grid_valid_shape, search_mode, &
08105 srcloc, srclocz, nlocs, nloc, nprev, &
08106 neighbors_3d, num_neigh, &
08107 extra_search, ierror)
08108
08109 Use PSMILe_common
08110
08111 Integer, Intent (In) :: grid_id
08112 Integer, Intent (In) :: nloc, nprev, search_mode
08113 Integer, Intent (In) :: nlocs (ndim_2d)
08114 Double Precision, Intent (In) :: coords1 (*)
08115 Double Precision, Intent (In) :: coords2 (*)
08116 Double Precision, Intent (In) :: coords3 (*)
08117 Integer, Intent (In) :: coords_shape (2, ndim_3d)
08118 Double Precision, Intent (In) :: x_coords (*)
08119 Double Precision, Intent (In) :: y_coords (*)
08120 Double Precision, Intent (In) :: z_coords (*)
08121 Logical, Intent (In) :: mask_array (*)
08122 Integer, Intent (In) :: mask_shape (2, ndim_3d)
08123 Logical, Intent (In) :: mask_available
08124 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
08125 Double Precision, Intent (In) :: sin_values_lon (*)
08126 Double Precision, Intent (In) :: cos_values_lon (*)
08127 Double Precision, Intent (In) :: sin_values_lat (*)
08128 Double Precision, Intent (In) :: cos_values_lat (*)
08129 Integer, Intent (In) :: srcloc (ndim_2d, nlocs(1))
08130 Integer, Intent (In) :: srclocz (nlocs(2))
08131 Integer, Intent (In) :: num_neigh
08132 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc, num_neigh)
08133 Type (Extra_search_info) :: extra_search
08134 Integer, Intent (Out) :: ierror
08135 End Subroutine
08136
08137 subroutine psmile_neigh_nearx_3d_irr3_dble (grid_id, &
08138 coords1, coords2, coords3, &
08139 x_coords, y_coords, z_coords, &
08140 coords_shape, &
08141 mask_array, mask_shape, mask_available, &
08142 sin_values_lon, cos_values_lon, &
08143 sin_values_lat, cos_values_lat, &
08144 grid_valid_shape, search_mode, &
08145 srcloc, nsearch, nloc, nprev, &
08146 neighbors_3d, num_neigh, &
08147 extra_search, ierror)
08148
08149 Use PSMILe_common
08150
08151 Integer, Intent (In) :: grid_id
08152 Integer, Intent (In) :: nloc, nprev, search_mode
08153 Integer, Intent (In) :: nsearch
08154 Double Precision, Intent (In) :: coords1 (*)
08155 Double Precision, Intent (In) :: coords2 (*)
08156 Double Precision, Intent (In) :: coords3 (*)
08157 Integer, Intent (In) :: coords_shape (2, ndim_3d)
08158 Double Precision, Intent (In) :: x_coords (*)
08159 Double Precision, Intent (In) :: y_coords (*)
08160 Double Precision, Intent (In) :: z_coords (*)
08161 Logical, Intent (In) :: mask_array (*)
08162 Integer, Intent (In) :: mask_shape (2, ndim_3d)
08163 Logical, Intent (In) :: mask_available
08164 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
08165 Double Precision, Intent (In) :: sin_values_lon (*)
08166 Double Precision, Intent (In) :: cos_values_lon (*)
08167 Double Precision, Intent (In) :: sin_values_lat (*)
08168 Double Precision, Intent (In) :: cos_values_lat (*)
08169 Integer, Intent (In) :: srcloc (ndim_3d, nloc)
08170 Integer, Intent (In) :: num_neigh
08171 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc, num_neigh)
08172 Type (Extra_search_info) :: extra_search
08173 Integer, Intent (Out) :: ierror
08174 End Subroutine
08175
08176 subroutine psmile_neigh_nearx_3d_reg_dble (grid_id, &
08177 coords1, coords2, coords3, &
08178 x_coords, y_coords, z_coords, &
08179 coords_shape, &
08180 mask_array, mask_shape, mask_available, &
08181 sin_values_lon, cos_values_lon, &
08182 sin_values_lat, cos_values_lat, &
08183 grid_valid_shape, search_mode, &
08184 srclocs, nlocs, nloc, nprev, &
08185 neighbors_3d, num_neigh, &
08186 extra_search, ierror)
08187
08188 Use PSMILe_common
08189
08190 Integer, Intent (In) :: grid_id
08191 Integer, Intent (In) :: nloc, nprev, search_mode
08192 Integer, Intent (In) :: nlocs (ndim_3d)
08193 Double Precision, Intent (In) :: coords1 (*)
08194 Double Precision, Intent (In) :: coords2 (*)
08195 Double Precision, Intent (In) :: coords3 (*)
08196 Integer, Intent (In) :: coords_shape (2, ndim_3d)
08197 Double Precision, Intent (In) :: x_coords (*)
08198 Double Precision, Intent (In) :: y_coords (*)
08199 Double Precision, Intent (In) :: z_coords (*)
08200 Logical, Intent (In) :: mask_array (*)
08201 Integer, Intent (In) :: mask_shape (2, ndim_3d)
08202 Logical, Intent (In) :: mask_available
08203 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
08204 Double Precision, Intent (In) :: sin_values_lon (*)
08205 Double Precision, Intent (In) :: cos_values_lon (*)
08206 Double Precision, Intent (In) :: sin_values_lat (*)
08207 Double Precision, Intent (In) :: cos_values_lat (*)
08208 Type (integer_vector), Intent (In) :: srclocs (ndim_3d)
08209 Integer, Intent (In) :: num_neigh
08210 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc, num_neigh)
08211 Type (Extra_search_info) :: extra_search
08212 Integer, Intent (Out) :: ierror
08213 End Subroutine
08214
08215 subroutine psmile_neigh_nearx_sub_irr_dble ( &
08216 grid_id, &
08217 x_coords, y_coords, z_coords, &
08218 coords_shape, &
08219 mask_array, mask_shape, mask_available, &
08220 sin_values, cos_values, &
08221 grid_valid_shape, search_mode, &
08222 neighbors_3d, num_neigh, nloc, &
08223 extra_search, &
08224 ijk, sin_search, cos_search, &
08225 z_search, jbeg, jend, width, ierror)
08226
08227 Use PSMILe_common
08228
08229 Integer, Intent (In) :: grid_id
08230 Integer, Intent (In) :: search_mode
08231 Integer, Intent (In) :: coords_shape (2, ndim_3d)
08232 Double Precision, Intent (In) :: x_coords (*)
08233 Double Precision, Intent (In) :: y_coords (*)
08234 Double Precision, Intent (In) :: z_coords (*)
08235 Logical, Intent (In) :: mask_array (*)
08236 Integer, Intent (In) :: mask_shape (2, ndim_3d)
08237 Logical, Intent (In) :: mask_available
08238 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
08239 Double Precision, Intent (In) :: sin_values (*)
08240 Double Precision, Intent (In) :: cos_values (*)
08241 Integer, Intent (In) :: nloc, num_neigh
08242 Type (Extra_search_info), Intent (InOut) :: extra_search
08243 Integer, Intent (In) :: jbeg, jend
08244 Integer, Intent (In) :: ijk (ndim_3d, jbeg:jend)
08245 Integer, Intent (In) :: width (ndim_3d)
08246 Double Precision, Intent (In) :: sin_search (jbeg:jend, 2)
08247 Double Precision, Intent (In) :: cos_search (jbeg:jend, 2)
08248 Double Precision, Intent (In) :: z_search (jbeg:jend)
08249 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc, num_neigh)
08250 Integer, Intent (Out) :: ierror
08251 End Subroutine
08252
08253 subroutine psmile_neigh_nearx_sub_reg_dble ( &
08254 grid_id, &
08255 x_coords, y_coords, z_coords, &
08256 coords_shape, &
08257 mask_array, mask_shape, mask_available, &
08258 sin_values_lon, cos_values_lon, &
08259 sin_values_lat, cos_values_lat, &
08260 grid_valid_shape, search_mode, &
08261 neighbors_3d, num_neigh, nloc, &
08262 extra_search, &
08263 ijk, sin_search, cos_search, &
08264 z_search, jbeg, jend, width, ierror)
08265
08266 Use PSMILe_common
08267
08268 Integer, Intent (In) :: grid_id
08269 Integer, Intent (In) :: search_mode
08270 Integer, Intent (In) :: coords_shape (2, ndim_3d)
08271 Double Precision, Intent (In) :: x_coords (*)
08272 Double Precision, Intent (In) :: y_coords (*)
08273 Double Precision, Intent (In) :: z_coords (*)
08274 Logical, Intent (In) :: mask_array (*)
08275 Integer, Intent (In) :: mask_shape (2, ndim_3d)
08276 Logical, Intent (In) :: mask_available
08277 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
08278 Double Precision, Intent (In) :: sin_values_lon (*)
08279 Double Precision, Intent (In) :: cos_values_lon (*)
08280 Double Precision, Intent (In) :: sin_values_lat (*)
08281 Double Precision, Intent (In) :: cos_values_lat (*)
08282 Integer, Intent (In) :: nloc, num_neigh
08283 Type (Extra_search_info), Intent(In) :: extra_search
08284 Integer, Intent (In) :: jbeg, jend
08285 Integer, Intent (In) :: ijk (ndim_3d, jbeg:jend)
08286 Integer, Intent (In) :: width (ndim_3d)
08287 Double Precision, Intent (In) :: sin_search (jbeg:jend, 2)
08288 Double Precision, Intent (In) :: cos_search (jbeg:jend, 2)
08289 Double Precision, Intent (In) :: z_search (jbeg:jend)
08290 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc, num_neigh)
08291 Integer, Intent (Out) :: ierror
08292 End Subroutine
08293
08294 subroutine psmile_neigh_nearest_3d_dble (grid_id, &
08295 coords1, coords2, coords3, &
08296 x_coords, y_coords, z_coords, &
08297 coords_shape, &
08298 mask_array, mask_shape, mask_available, &
08299 sin_values, cos_values, grid_valid_shape, &
08300 srcloc, nloc, nprev, nsearch, &
08301 neighbors_3d, num_neigh, &
08302 extra_search, ierror)
08303
08304 Use PSMILe_common
08305
08306 Integer, Intent (In) :: grid_id
08307 Integer, Intent (In) :: coords_shape (2, ndim_3d)
08308 Integer, Intent (In) :: mask_shape (2, ndim_3d)
08309 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
08310 Double Precision, Intent (In) :: x_coords (*)
08311 Double Precision, Intent (In) :: y_coords (*)
08312 Double Precision, Intent (In) :: z_coords (*)
08313 Logical, Intent (In) :: mask_array (*)
08314 Logical, Intent (In) :: mask_available
08315 Double Precision, Intent (In) :: sin_values (*)
08316 Double Precision, Intent (In) :: cos_values (*)
08317 Integer, Intent (In) :: nloc, nprev, nsearch
08318 Integer, Intent (In) :: srcloc (ndim_3d, nloc)
08319 Double Precision, Intent (In) :: coords1 (nloc)
08320 Double Precision, Intent (In) :: coords2 (nloc)
08321 Double Precision, Intent (In) :: coords3 (nloc)
08322 Integer, Intent (In) :: num_neigh
08323
08324 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc, num_neigh)
08325 Type (Extra_search_info) :: extra_search
08326 Integer, Intent (Out) :: ierror
08327 End Subroutine
08328
08329 subroutine psmile_neigh_nearestx_3d_dble (grid_id, &
08330 coords1, coords2, coords3, &
08331 x_coords, y_coords, z_coords, &
08332 coords_shape, &
08333 mask_array, mask_shape, mask_available, &
08334 sin_values, cos_values, grid_valid_shape, &
08335 srcloc, nloc, nprev, nsearch, &
08336 neighbors_3d, num_neigh, &
08337 extra_search, ierror)
08338
08339 Use PSMILe_common
08340
08341 Integer, Intent (In) :: grid_id
08342 Integer, Intent (In) :: nloc, nprev, nsearch
08343 Integer, Intent (In) :: coords_shape (2, ndim_3d)
08344 Integer, Intent (In) :: mask_shape (2, ndim_3d)
08345 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
08346 Double Precision, Intent (In) :: coords1 (nloc)
08347 Double Precision, Intent (In) :: coords2 (nloc)
08348 Double Precision, Intent (In) :: coords3 (nloc)
08349 Double Precision, Intent (In) :: x_coords (*)
08350 Double Precision, Intent (In) :: y_coords (*)
08351 Double Precision, Intent (In) :: z_coords (*)
08352 Logical, Intent (In) :: mask_array (*)
08353 Logical, Intent (In) :: mask_available
08354 Double Precision, Intent (In) :: sin_values (*)
08355 Double Precision, Intent (In) :: cos_values (*)
08356 Integer, Intent (In) :: srcloc (ndim_3d, nloc)
08357 Integer, Intent (In) :: num_neigh
08358 Integer, Intent (Out) :: neighbors_3d (ndim_3d, nloc, num_neigh)
08359
08360 Type (Extra_search_info) :: extra_search
08361 Integer, Intent (Out) :: ierror
08362 End Subroutine
08363
08364 subroutine psmile_mg_coarse_1d_dble (lev, chmin, chmax, &
08365 found, locations, coords, &
08366 ibeg, iend)
08367 Integer, Intent (In) :: lev
08368 Double Precision, Intent (In) :: chmin (0:0), chmax (0:0)
08369 Integer, Intent (InOut) :: ibeg, iend
08370 Integer, Intent (InOut) :: found (iend)
08371 Integer, Intent (InOut) :: locations (iend)
08372 Double Precision, Intent (In) :: coords (iend)
08373 End Subroutine
08374
08375 subroutine psmile_mg_coarse_2d_dble (lev, chmin, chmax, &
08376 found, locations, coords1, &
08377 coords2, ibeg, iend)
08378 Use PSMILe_common
08379
08380 Integer, Intent (In) :: lev
08381 Type (dble_vector), Intent (In) :: chmin (ndim_2d), chmax (ndim_2d)
08382 Integer, Intent (InOut) :: ibeg, iend
08383 Integer, Intent (InOut) :: found (iend)
08384 Integer, Intent (InOut) :: locations (iend)
08385 Double Precision, Intent (In) :: coords1 (iend)
08386 Double Precision, Intent (In) :: coords2 (iend)
08387 End Subroutine
08388
08389 subroutine psmile_mg_coarse_3d_dble (lev, chmin, chmax, &
08390 found, locations, coords1, &
08391 coords2, coords3, ibeg, iend)
08392 Use PSMILe_common
08393
08394 Integer, Intent (In) :: lev
08395 Type (dble_vector), Intent (In) :: chmin (ndim_3d), chmax (ndim_3d)
08396 Integer, Intent (InOut) :: ibeg, iend
08397 Integer, Intent (InOut) :: found (iend)
08398 Integer, Intent (InOut) :: locations (iend)
08399 Double Precision, Intent (In) :: coords1 (iend)
08400 Double Precision, Intent (In) :: coords2 (iend)
08401 Double Precision, Intent (In) :: coords3 (iend)
08402 End Subroutine
08403
08404 subroutine psmile_mg_next_level_1d_dble (grid_id, idim, &
08405 lev, nlev, &
08406 chmin, chmax, midp, levdim, &
08407 found, loc, coords, ibeg, iend, &
08408 ijkinc, ijkcoa, ierror)
08409
08410 Use PSMILe_common
08411 Integer, Intent (In) :: grid_id
08412 Integer, Intent (In) :: idim, levdim
08413 Integer, Intent (In) :: lev, nlev, ijkinc, ijkcoa
08414 Double Precision, Intent (In) :: chmin (0:levdim)
08415 Double Precision, Intent (In) :: chmax (0:levdim)
08416 Double Precision, Intent (In) :: midp (0:levdim)
08417 Integer, Intent (InOut) :: ibeg, iend
08418 Integer, Intent (InOut) :: found (iend)
08419 Integer, Intent (InOut) :: loc (iend)
08420 Double Precision, Intent (In) :: coords (iend)
08421 Integer, Intent (Out) :: ierror
08422 End Subroutine
08423
08424 subroutine psmile_mg_next_level_2d_dble (grid_id, lev, nlev, &
08425 chmin1, chmin2, &
08426 chmax1, chmax2, &
08427 midp1, midp2, &
08428 levdim, &
08429 found, loc, range, &
08430 coords1, coords2, &
08431 shape, control, &
08432 ijkinc, ijkcoa, ierror)
08433
08434 Use PSMILe_common
08435 Integer, Intent (In) :: grid_id
08436 Integer, Intent (In) :: levdim (ndim_2d)
08437 Integer, Intent (In) :: lev, nlev
08438 Integer, Intent (In) :: ijkinc(ndim_3d), ijkcoa(ndim_2d)
08439 Double Precision, Intent (In) :: chmin1 (*), chmin2 (*)
08440 Double Precision, Intent (In) :: chmax1 (*), chmax2 (*)
08441 Double Precision, Intent (In) :: midp1 (*), midp2 (*)
08442 Integer, Intent (InOut) :: found (*)
08443 Integer, Intent (InOut) :: loc (2, *)
08444 Integer, Intent (In) :: range (2, ndim_3d)
08445 Double Precision, Intent (In) :: coords1 (*)
08446 Double Precision, Intent (In) :: coords2 (*)
08447 Integer, Intent (In) :: shape (2, ndim_3d)
08448 Integer, Intent (InOut) :: control (2, ndim_3d)
08449 Integer, Intent (Out) :: ierror
08450 End Subroutine
08451
08452 subroutine psmile_mg_next_level_3d_dble (grid_id, lev, nlev, &
08453 chmin1, chmin2, chmin3, &
08454 chmax1, chmax2, chmax3, &
08455 midp1, midp2, midp3, &
08456 levdim, &
08457 found, loc, range, &
08458 coords1, coords2, coords3, &
08459 shape, control, &
08460 ijkinc, ijkcoa, ierror)
08461
08462 Use PSMILe_common
08463 Integer, Intent (In) :: grid_id
08464 Integer, Intent (In) :: levdim (ndim_3d)
08465 Integer, Intent (In) :: lev, nlev
08466 Integer, Intent (In) :: ijkinc(ndim_3d), ijkcoa(ndim_3d)
08467 Double Precision, Intent (In) :: chmin1 (*), chmin2 (*), chmin3 (*)
08468 Double Precision, Intent (In) :: chmax1 (*), chmax2 (*), chmax3 (*)
08469 Double Precision, Intent (In) :: midp1 (*), midp2 (*), midp3 (*)
08470 Integer, Intent (InOut) :: found (*)
08471 Integer, Intent (InOut) :: loc (ndim_3d, *)
08472 Integer, Intent (In) :: range (2, ndim_3d)
08473 Double Precision, Intent (In) :: coords1 (*)
08474 Double Precision, Intent (In) :: coords2 (*)
08475 Double Precision, Intent (In) :: coords3 (*)
08476 Integer, Intent (In) :: shape (2, ndim_3d)
08477 Integer, Intent (InOut) :: control (2, ndim_3d)
08478 Integer, Intent (Out) :: ierror
08479 End Subroutine
08480
08481 subroutine psmile_mg_prev_levels_1d_dble (grid_id, idim, &
08482 lev, nlev, &
08483 lstijk, xyz, found, newijk)
08484 Use PSMILe_common
08485 Integer, Intent (In) :: grid_id
08486 Integer, Intent (In) :: idim
08487 Integer, Intent (In) :: lev, nlev
08488 Integer, Intent (In) :: lstijk
08489 Double Precision, Intent (In) :: xyz
08490 Integer, Intent (Out) :: found, newijk
08491 End Subroutine
08492
08493 subroutine psmile_mg_prev_levels_2d_dble (grid_id, &
08494 lev, nlev, &
08495 lstijk, xyz, found, newijk, nc)
08496 Use PSMILe_Common
08497 Integer, Intent (In) :: grid_id
08498 Integer, Intent (In) :: lev, nlev, nc
08499 Integer, Intent (In) :: lstijk (ndim_2d, nc)
08500 Double Precision, Intent (In) :: xyz (ndim_2d, nc)
08501 Integer, Intent (Out) :: found (nc), newijk (ndim_2d, nc)
08502 End Subroutine
08503
08504 subroutine psmile_mg_prev_levels_3d_dble (grid_id, &
08505 lev, nlev, &
08506 lstijk, xyz, found, newijk)
08507 Use PSMILe_common
08508 Integer, Intent (In) :: grid_id
08509 Integer, Intent (In) :: lev, nlev
08510 Integer, Intent (In) :: lstijk (ndim_3d)
08511 Double Precision, Intent (In) :: xyz (ndim_3d)
08512 Integer, Intent (Out) :: found, newijk (ndim_3d)
08513 End Subroutine
08514
08515 subroutine psmile_mg_cells_1d_dble ( nlev, found, loc, range, &
08516 search_grid_type, &
08517 corners1, search_dim, &
08518 shape, control, &
08519 grid_valid_shape, cyclic, &
08520 chmin, chmax, tol, ierror )
08521 Use PSMILe_common
08522 Integer, Intent (In) :: nlev
08523 Integer, Intent (In) :: search_grid_type
08524 Integer, Intent (In) :: range (2, ndim_3d)
08525 Integer, Intent (In) :: shape (2, ndim_3d)
08526 Integer, Intent (InOut) :: found (range(1,1):range(2,1),
08527 range(1,2):range(2,2),
08528 range(1,3):range(2,3))
08529 Integer, Intent (InOut) :: loc (range(1,1):range(2,1),
08530 range(1,2):range(2,2),
08531 range(1,3):range(2,3))
08532 Double Precision, Intent (In) :: corners1 (shape(1,1):shape(2,1),
08533 shape(1,2):shape(2,2),
08534 shape(1,3):shape(2,3))
08535 Integer, Intent (In) :: control (2, ndim_3d)
08536 Integer, Intent (In) :: search_dim
08537 Integer, Intent (In) :: grid_valid_shape (2)
08538 Logical, Intent (In) :: cyclic
08539 Double Precision, Intent (In) :: chmin (grid_valid_shape(1):
08540 grid_valid_shape(2)+2)
08541 Double Precision, Intent (In) :: chmax (grid_valid_shape(1):
08542 grid_valid_shape(2)+2)
08543 Double Precision, Intent (In) :: tol
08544 Integer, Intent (Out) :: ierror
08545 End Subroutine
08546
08547 subroutine psmile_mg_cells_2d_dble ( grid_id, search_grid_type, &
08548 found, loc, loc_fnd_shape, &
08549 tgt_src_corners_x, tgt_src_corners_y, &
08550 src_corner_shape, control, &
08551 grid_valid_shape, &
08552 ipart, corner_shape, nbr_corners, &
08553 src_corners_x, src_corners_y, &
08554 chmin1, chmax1, chmin2, chmax2, &
08555 tol, ierror )
08556 Use PSMILe_common
08557 Integer, Intent (In) :: grid_id
08558 Integer, Intent (In) :: search_grid_type
08559 Integer, Intent (In) :: loc_fnd_shape (2, ndim_3d)
08560 Integer, Intent (In) :: src_corner_shape (2, ndim_3d)
08561 Integer, Intent (In) :: grid_valid_shape(2,ndim_2d)
08562 Integer, Intent (InOut) :: found (loc_fnd_shape(1,1):loc_fnd_shape(2,1),
08563 loc_fnd_shape(1,2):loc_fnd_shape(2,2),
08564 loc_fnd_shape(1,3):loc_fnd_shape(2,3))
08565 Integer, Intent (InOut) :: loc (ndim_2d,
08566 loc_fnd_shape(1,1):loc_fnd_shape(2,1),
08567 loc_fnd_shape(1,2):loc_fnd_shape(2,2),
08568 loc_fnd_shape(1,3):loc_fnd_shape(2,3))
08569 Double Precision, Intent (In) :: tgt_src_corners_x (
08570 src_corner_shape(1,1):src_corner_shape(2,1),
08571 src_corner_shape(1,2):src_corner_shape(2,2),
08572 src_corner_shape(1,3):src_corner_shape(2,3))
08573 Double Precision, Intent (In) :: tgt_src_corners_y (
08574 src_corner_shape(1,1):src_corner_shape(2,1),
08575 src_corner_shape(1,2):src_corner_shape(2,2),
08576 src_corner_shape(1,3):src_corner_shape(2,3))
08577 Integer, Intent (In) :: control (2, ndim_3d)
08578 Integer, Intent (In) :: ipart
08579 Integer, Intent (In) :: corner_shape (2,2)
08580 Integer, Intent (In) :: nbr_corners
08581 Double Precision, Intent (In) :: src_corners_x (
08582 corner_shape (1,1):corner_shape(2,1),
08583 corner_shape (1,2):corner_shape(2,2),
08584 nbr_corners)
08585 Double Precision, Intent (In) :: src_corners_y (
08586 corner_shape (1,1):corner_shape(2,1),
08587 corner_shape (1,2):corner_shape(2,2),
08588 nbr_corners)
08589 Double Precision, Intent (InOut):: chmin1 (grid_valid_shape(1,1):
08590 grid_valid_shape(2,1)+1 ,
08591 grid_valid_shape(1,2):
08592 grid_valid_shape(2,2)+1)
08593 Double Precision, Intent (InOut):: chmin2 (grid_valid_shape(1,1):
08594 grid_valid_shape(2,1)+1,
08595 grid_valid_shape(1,2):
08596 grid_valid_shape(2,2)+1)
08597 Double Precision, Intent (InOut):: chmax1 (grid_valid_shape(1,1):
08598 grid_valid_shape(2,1)+1 ,
08599 grid_valid_shape(1,2):
08600 grid_valid_shape(2,2)+1)
08601 Double Precision, Intent (InOut):: chmax2 (grid_valid_shape(1,1):
08602 grid_valid_shape(2,1)+1,
08603 grid_valid_shape(1,2):
08604 grid_valid_shape(2,2)+1)
08605 Double Precision, Intent (In) :: tol
08606 Integer, Intent (Out) :: ierror
08607 End Subroutine
08608
08609 subroutine psmile_mg_cells_gauss2 ( grid_id, search_grid_type, &
08610 found, loc, loc_fnd_shape, control, ierror )
08611
08612 Use PSMILe_common
08613 Integer, Intent (In) :: grid_id
08614 Integer, Intent (In) :: search_grid_type
08615 Integer, Intent (In) :: loc_fnd_shape (2, ndim_3d)
08616 Integer, Intent (In) :: control (2, ndim_3d)
08617 Integer, Intent (InOut) :: found ( loc_fnd_shape(1,1):loc_fnd_shape(2,1),
08618 loc_fnd_shape(1,2):loc_fnd_shape(2,2),
08619 loc_fnd_shape(1,3):loc_fnd_shape(2,3) )
08620 Integer, Intent (InOut) :: loc ( loc_fnd_shape(1,1):loc_fnd_shape(2,1),
08621 loc_fnd_shape(1,2):loc_fnd_shape(2,2),
08622 loc_fnd_shape(1,3):loc_fnd_shape(2,3) )
08623 Integer, Intent (Out) :: ierror
08624 End Subroutine
08625
08626 subroutine psmile_mg_control_cell_1d_dble ( &
08627 chmin, chmax, midp, levdim, &
08628 ijk, xyz, nold, all, wide, found, newijk)
08629 Use PSMILe_common
08630
08631 Integer, Intent (In) :: levdim
08632 Double Precision, Intent (In) :: chmin (0:levdim)
08633 Double Precision, Intent (In) :: chmax (0:levdim)
08634 Double Precision, Intent (In) :: midp (0:levdim)
08635 Integer, Intent (In) :: ijk, nold
08636 Logical, Intent (In) :: all, wide
08637 Double Precision, Intent (In) :: xyz
08638 Integer, Intent (Out) :: found, newijk
08639 End Subroutine
08640
08641 subroutine psmile_mg_control_cell_2d_dble ( &
08642 chmin1, chmin2, &
08643 chmax1, chmax2, &
08644 midp1, midp2, &
08645 levdim, &
08646 ijk, xyz, nold, ignore, wide, found, newijk)
08647 Use PSMILe_common
08648
08649 Double Precision, Intent (In) :: chmin1 (*), chmin2 (*)
08650 Double Precision, Intent (In) :: chmax1 (*), chmax2 (*)
08651 Double Precision, Intent (In) :: midp1 (*), midp2 (*)
08652 Integer, Intent (In) :: levdim (ndim_2d)
08653 Integer, Intent (In) :: ijk(ndim_2d), nold
08654 Integer, Intent (In) :: ignore(ndim_2d)
08655 Logical, Intent (In) :: wide
08656 Double Precision, Intent (In) :: xyz(ndim_2d)
08657 Integer, Intent (Out) :: found, newijk(ndim_2d)
08658 End Subroutine
08659
08660 subroutine psmile_mg_control_cell_3d_dble ( &
08661 chmin1, chmin2, chmin3, &
08662 chmax1, chmax2, chmax3, &
08663 midp1, midp2, midp3, &
08664 levdim, &
08665 ijk, xyz, nold, all, wide, found, newijk)
08666 Use PSMILe_common
08667
08668 Double Precision, Intent (In) :: chmin1 (*), chmin2 (*), chmin3 (*)
08669 Double Precision, Intent (In) :: chmax1 (*), chmax2 (*), chmax3 (*)
08670 Double Precision, Intent (In) :: midp1 (*), midp2 (*), midp3 (*)
08671 Integer, Intent (In) :: levdim (ndim_3d)
08672 Integer, Intent (In) :: ijk(ndim_3d), nold
08673 Logical, Intent (In) :: all, wide
08674 Double Precision, Intent (In) :: xyz(ndim_3d)
08675 Integer, Intent (Out) :: found, newijk(ndim_3d)
08676 End Subroutine
08677
08678 subroutine psmile_mg_final_2d_dble (grid_id, nlev, &
08679 chmin1, chmin2, chmax1, chmax2, &
08680 midp1, midp2, levdim, &
08681 found, loc, range, &
08682 coords1, coords2, shape, control, &
08683 corners1, corners2, corner_shape, nbr_corners, &
08684 tol, ierror)
08685 Use PSMILe_common
08686
08687 Integer, Intent (In) :: grid_id, nlev
08688 Integer, Intent (In) :: levdim (ndim_2d)
08689 Double Precision, Intent (In) :: chmin1 (0:levdim(1),
08690 0:levdim(2))
08691 Double Precision, Intent (In) :: chmin2 (0:levdim(1),
08692 0:levdim(2))
08693 Double Precision, Intent (In) :: chmax1 (0:levdim(1),
08694 0:levdim(2))
08695 Double Precision, Intent (In) :: chmax2 (0:levdim(1),
08696 0:levdim(2))
08697 Double Precision, Intent (In) :: midp1 (0:levdim(1),
08698 0:levdim(2))
08699 Double Precision, Intent (In) :: midp2 (0:levdim(1),
08700 0:levdim(2))
08701 Integer, Intent (In) :: range (2, ndim_3d)
08702 Integer, Intent (In) :: shape (2, ndim_3d)
08703 Integer, Intent (InOut) :: found (range(1,1):range(2,1),
08704 range(1,2):range(2,2),
08705 range(1,3):range(2,3))
08706 Integer, Intent (InOut) :: loc (ndim_2d,
08707 range(1,1):range(2,1),
08708 range(1,2):range(2,2),
08709 range(1,3):range(2,3))
08710 Double Precision, Intent (In) :: coords1 (shape(1,1):shape(2,1),
08711 shape(1,2):shape(2,2),
08712 shape(1,3):shape(2,3))
08713 Double Precision, Intent (In) :: coords2 (shape(1,1):shape(2,1),
08714 shape(1,2):shape(2,2),
08715 shape(1,3):shape(2,3))
08716 Integer, Intent (In) :: control (2, ndim_3d)
08717 Integer, Intent (In) :: corner_shape (2, ndim_2d)
08718 Integer, Intent (In) :: nbr_corners
08719 Double Precision, Intent (In) ::
08720 corners1 ( corner_shape(1,1):corner_shape(2,1),
08721 corner_shape(1,2):corner_shape(2,2), nbr_corners)
08722 Double Precision, Intent (In) ::
08723 corners2 ( corner_shape(1,1):corner_shape(2,1),
08724 corner_shape(1,2):corner_shape(2,2), nbr_corners)
08725 Double Precision, Intent (In) :: tol
08726 Integer, Intent (Out) :: ierror
08727 End Subroutine
08728
08729 subroutine psmile_mg_final_3d_dble (comp_info, nlev, &
08730 found, loc, range, &
08731 coords1, coords2, coords3, &
08732 shape, control, &
08733 grid_id, &
08734 x_coords, y_coords, z_coords, &
08735 coords_shape, &
08736 nbr_corners, &
08737 ijk0, tol, ierror)
08738
08739 Use PSMILe_common
08740
08741 Type (Enddef_comp), Intent (In) :: comp_info
08742 Integer, Intent (In) :: nlev
08743 Integer, Intent (InOut) :: found (*)
08744 Integer, Intent (InOut) :: loc (ndim_3d, *)
08745 Integer, Intent (In) :: range (2, ndim_3d)
08746 Double Precision, Intent (In) :: coords1 (*)
08747 Double Precision, Intent (In) :: coords2 (*)
08748 Double Precision, Intent (In) :: coords3 (*)
08749 Integer, Intent (In) :: shape (2, ndim_3d)
08750 Integer, Intent (InOut) :: control (2, ndim_3d)
08751 Integer, Intent (In) :: grid_id
08752 Integer, Intent (In) :: coords_shape (2, ndim_3d)
08753 Double Precision, Intent (In) :: x_coords (*)
08754 Double Precision, Intent (In) :: y_coords (*)
08755 Double Precision, Intent (In) :: z_coords (*)
08756 Integer, Intent (In) :: nbr_corners
08757 Integer, Intent (In) :: ijk0 (ndim_3d)
08758 Double Precision, Intent (In) :: tol
08759 Integer, Intent (Out) :: ierror
08760 End Subroutine
08761
08762 subroutine psmile_mg_final_gauss2_dble ( &
08763 grid_id, found, locations, fnd_loc_range, &
08764 tgt_coords_x, tgt_coords_y, tgt_coords_shape, search_range, &
08765 src_corners_x, src_corners_y, src_corner_shape, nbr_corners, &
08766 ierror)
08767
08768 use psmile_common
08769
08770 integer, intent (in) :: grid_id
08771 integer, intent (in) :: fnd_loc_range (2, ndim_3d)
08772 integer, intent (in) :: tgt_coords_shape (2, ndim_3d)
08773 double precision, intent (in) ::
08774 tgt_coords_x (tgt_coords_shape(1,1):tgt_coords_shape(2,1),
08775 tgt_coords_shape(1,2):tgt_coords_shape(2,2),
08776 tgt_coords_shape(1,3):tgt_coords_shape(2,3))
08777 double precision, intent (in) ::
08778 tgt_coords_y (tgt_coords_shape(1,1):tgt_coords_shape(2,1),
08779 tgt_coords_shape(1,2):tgt_coords_shape(2,2),
08780 tgt_coords_shape(1,3):tgt_coords_shape(2,3))
08781 integer, intent (in) :: search_range (2, ndim_3d)
08782 integer, intent (in) :: src_corner_shape (2, ndim_2d)
08783 integer, intent (in) :: nbr_corners
08784 double precision, intent (in) ::
08785 src_corners_x ( src_corner_shape(1,1):src_corner_shape(2,1), nbr_corners)
08786 double precision, intent (in) ::
08787 src_corners_y ( src_corner_shape(1,1):src_corner_shape(2,1), nbr_corners)
08788 integer, intent (inout) :: found (fnd_loc_range(1,1):fnd_loc_range(2,1),
08789 fnd_loc_range(1,2):fnd_loc_range(2,2),
08790 fnd_loc_range(1,3):fnd_loc_range(2,3))
08791 integer, intent (inout) :: locations (fnd_loc_range(1,1):fnd_loc_range(2,1),
08792 fnd_loc_range(1,2):fnd_loc_range(2,2),
08793 fnd_loc_range(1,3):fnd_loc_range(2,3))
08794 integer, intent (out) :: ierror
08795 end subroutine
08796
08797 subroutine psmile_mg_final_prev_2d_dble (grid_id, nlev, &
08798 lstijk, xyz, found, newijk, nc, &
08799 corners1, corners2, corner_shape, nbr_corners, &
08800 tol, ierror)
08801 Use PSMILe_common
08802
08803 Integer, Intent (In) :: grid_id, nlev
08804 Integer, Intent (In) :: nc
08805 Integer, Intent (In) :: lstijk (ndim_2d, nc)
08806 Double Precision, Intent (In) :: xyz (ndim_2d, nc)
08807 Integer, Intent (In) :: corner_shape (2, ndim_2d)
08808 Integer, Intent (In) :: nbr_corners
08809 Double Precision, Intent (In) ::
08810 corners1 ( corner_shape(1,1):corner_shape(2,1),
08811 corner_shape(1,2):corner_shape(2,2), nbr_corners)
08812 Double Precision, Intent (In) ::
08813 corners2 ( corner_shape(1,1):corner_shape(2,1),
08814 corner_shape(1,2):corner_shape(2,2), nbr_corners)
08815 Double Precision, Intent (In) :: tol
08816
08817 Integer, Intent (Out) :: found (nc)
08818 Integer, Intent (Out) :: newijk (ndim_2d, nc)
08819 Integer, Intent (Out) :: ierror
08820 End Subroutine
08821
08822 subroutine psmile_mg_method_1d_dble (comp_info, nlev, &
08823 found, loc, range, &
08824 coords1, &
08825 shape, control, &
08826 method_id, &
08827 x_coords, &
08828 coords_shape, &
08829 grid_valid_shape, cyclic, &
08830 chmin, chmax, &
08831 tol, ierror)
08832
08833 Use PSMILe_common
08834
08835 Type (Enddef_comp), Intent (In) :: comp_info
08836 Integer, Intent (In) :: nlev
08837 Integer, Intent (InOut) :: found (*)
08838 Integer, Intent (InOut) :: loc (*)
08839 Integer, Intent (In) :: range (2, ndim_3d)
08840 Double Precision, Intent (In) :: coords1 (*)
08841 Integer, Intent (In) :: shape (2, ndim_3d)
08842 Integer, Intent (In) :: control (2, ndim_3d)
08843 Integer, Intent (In) :: method_id
08844 Integer, Intent (In) :: coords_shape (2)
08845 Integer, Intent (In) :: grid_valid_shape (2)
08846 Logical, Intent (In) :: cyclic
08847 Double Precision, Intent (In) :: x_coords (*)
08848 Double Precision, Intent (In) :: chmin (*), chmax (*)
08849 Double Precision, Intent (In) :: tol
08850 Integer, Intent (Out) :: ierror
08851 End Subroutine
08852
08853 subroutine psmile_mg_method_2d_dble (comp_info, &
08854 nlev, found, loc, range, &
08855 coords1, coords2, search_shape, control, &
08856 x_coords, y_coords, coords_shape, &
08857 grid_valid_shape, cyclic, period, &
08858 chmin1, chmin2, chmax1, chmax2, &
08859 tol, ierror)
08860
08861 Use PSMILe_common
08862
08863 Type (Enddef_comp), Intent (In) :: comp_info
08864 Integer, Intent (In) :: nlev
08865 Integer, Intent (InOut):: found (*)
08866 Integer, Intent (InOut):: loc (ndim_2d, *)
08867 Integer, Intent (In) :: range (2, ndim_3d)
08868 Double Precision, Intent (In) :: coords1 (*)
08869 Double Precision, Intent (In) :: coords2 (*)
08870 Integer, Intent (In) :: search_shape (2, ndim_3d)
08871 Integer, Intent (In) :: control (2, ndim_3d)
08872 Integer, Intent (In) :: coords_shape (2, ndim_2d)
08873 Integer, Intent (In) :: grid_valid_shape (2, ndim_2d)
08874 Logical, Intent (In) :: cyclic (ndim_2d)
08875 Double Precision, Intent (In) :: period (ndim_2d)
08876 Double Precision, Intent (In) :: x_coords (*)
08877 Double Precision, Intent (In) :: y_coords (*)
08878 Double Precision, Intent (In) :: chmin1 (*), chmin2 (*)
08879 Double Precision, Intent (In) :: chmax1 (*), chmax2 (*)
08880 Double Precision, Intent (In) :: tol
08881 Integer, Intent (Out) :: ierror
08882 End Subroutine
08883
08884 subroutine psmile_mg_method_3d_dble (comp_info, nlev, &
08885 found, loc, range, &
08886 coords1, coords2, coords3, &
08887 shape, control, &
08888 method_id, &
08889 x_coords, y_coords, z_coords, &
08890 coords_shape, &
08891 grid_valid_shape, cyclic, &
08892 chmin1, chmin2, chmin3, &
08893 chmax1, chmax2, chmax3, &
08894 midp1, midp2, midp3, &
08895 tol, ierror)
08896
08897 Use PSMILe_common
08898
08899 Type (Enddef_comp), Intent (In) :: comp_info
08900 Integer, Intent (In) :: nlev
08901 Integer, Intent (InOut) :: found (*)
08902 Integer, Intent (InOut) :: loc (ndim_3d, *)
08903 Integer, Intent (In) :: range (2, ndim_3d)
08904 Double Precision, Intent (In) :: coords1 (*)
08905 Double Precision, Intent (In) :: coords2 (*)
08906 Double Precision, Intent (In) :: coords3 (*)
08907 Integer, Intent (In) :: shape (2, ndim_3d)
08908 Integer, Intent (In) :: control (2, ndim_3d)
08909 Integer, Intent (In) :: method_id
08910 Integer, Intent (In) :: coords_shape (2, ndim_3d)
08911 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
08912 Logical, Intent (In) :: cyclic (ndim_3d)
08913 Double Precision, Intent (In) :: x_coords (*)
08914 Double Precision, Intent (In) :: y_coords (*)
08915 Double Precision, Intent (In) :: z_coords (*)
08916 Double Precision, Intent (In) :: chmin1 (*), chmin2 (*), chmin3 (*)
08917 Double Precision, Intent (In) :: chmax1 (*), chmax2 (*), chmax3 (*)
08918 Double Precision, Intent (In) :: midp1 (*), midp2 (*), midp3 (*)
08919 Double Precision, Intent (In) :: tol
08920 Integer, Intent (Out) :: ierror
08921 End Subroutine
08922
08923 subroutine psmile_mg_method_gauss2_dble (method_id, search_range, &
08924 tgt_shape, tgt_coords_x, &
08925 tgt_coords_y, loc_fnd_shape, &
08926 found, loc, virtual_cell, &
08927 ierror)
08928
08929 use psmile_common
08930
08931 Integer, Intent (In) :: method_id
08932 Integer, Intent (In) :: search_range (2, ndim_3d)
08933 Integer, Intent (In) :: loc_fnd_shape (2, ndim_3d)
08934 Integer, Intent (In) :: tgt_shape (2, ndim_3d)
08935 Double Precision, Intent (In) :: tgt_coords_x (tgt_shape(1,1):tgt_shape(2,1),
08936 tgt_shape(1,2):tgt_shape(2,2),
08937 tgt_shape(1,3):tgt_shape(2,3)),
08938 tgt_coords_y (tgt_shape(1,1):tgt_shape(2,1),
08939 tgt_shape(1,2):tgt_shape(2,2),
08940 tgt_shape(1,3):tgt_shape(2,3))
08941 Integer, Intent (InOut) :: found (loc_fnd_shape(1,1):loc_fnd_shape(2,1),
08942 loc_fnd_shape(1,2):loc_fnd_shape(2,2),
08943 loc_fnd_shape(1,3):loc_fnd_shape(2,3))
08944 Integer, Intent (InOut) :: loc (loc_fnd_shape(1,1):loc_fnd_shape(2,1),
08945 loc_fnd_shape(1,2):loc_fnd_shape(2,2),
08946 loc_fnd_shape(1,3):loc_fnd_shape(2,3))
08947 Integer, Intent (Out) :: virtual_cell (loc_fnd_shape(1,1):loc_fnd_shape(2,1),
08948 loc_fnd_shape(1,2):loc_fnd_shape(2,2),
08949 loc_fnd_shape(1,3):loc_fnd_shape(2,3))
08950 Integer, Intent (Out) :: ierror
08951 end subroutine
08952
08953 subroutine psmile_mg_method_irreg2_dble (comp_info, &
08954 found, locations, search, &
08955 array, shape_2d, range_2d, control_2d, &
08956 shape_1d, range_1d, control_1d, &
08957 m_arrays, m_levdim, &
08958 grid_id, method_id, tol, ierror)
08959
08960 Use PSMILe_common
08961
08962 Type (Enddef_comp), Intent (In) :: comp_info
08963 Type (Enddef_search) :: search
08964 Integer, Intent (In) :: grid_id, method_id
08965 Double Precision, Intent (In) :: tol
08966 Type (dble_vector), Intent (In) :: array ( ndim_3d, search%npart)
08967 Integer, Intent (In) :: shape_2d (2, ndim_3d, search%npart)
08968 Integer, Intent (In) :: range_2d (2, ndim_3d, search%npart)
08969 Integer, Intent (In) :: control_2d (2, ndim_3d, search%npart)
08970 Integer, Intent (In) :: shape_1d (2, ndim_3d, search%npart)
08971 Integer, Intent (In) :: range_1d (2, ndim_3d, search%npart)
08972 Integer, Intent (In) :: control_1d (2, ndim_3d, search%npart)
08973 Type (Enddef_mg_double) :: m_arrays
08974 Integer, Intent (In) :: m_levdim (ndim_3d)
08975 Type (integer_vector) :: found (search%npart, 2)
08976 Type (integer_vector) :: locations (search%npart, 2)
08977 Integer, Intent (Out) :: ierror
08978 End Subroutine
08979
08980 subroutine psmile_mg_srch_nneigh_reg_dble (grid_id, nn_srch, &
08981 arrays, search_mode, nref_3d, grid_valid_shape, &
08982 neighbors_3d, nloc, num_neigh, &
08983 sin_search, cos_search, z_search, &
08984 dist_dble, dim1, indices, jbeg, jend, &
08985 mask_array, mask_shape, mask_available, &
08986 tol, ierror)
08987
08988 Use PSMILe_common
08989
08990 Integer, Intent (In) :: grid_id
08991 Type (Extra_search_nn), Intent (In) :: nn_srch
08992 Type (Extra_search_dble) :: arrays
08993 Integer, Intent (In) :: search_mode, nref_3d
08994 Integer, Intent (In) :: jbeg, jend, nloc
08995 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
08996 Integer, Intent (In) :: mask_shape (2, ndim_3d)
08997 Integer, Intent (In) :: num_neigh
08998 Integer, Intent (In) :: indices (:), dim1 (2)
08999 Double Precision, Intent (In) :: sin_search (jbeg:jend, 2)
09000 Double Precision, Intent (In) :: cos_search (jbeg:jend, 2)
09001 Double Precision, Intent (In) :: z_search (jbeg:jend)
09002 Logical, Intent (In) ::
09003 mask_array (mask_shape (1,1):mask_shape (2,1),
09004 mask_shape (1,2):mask_shape (2,2),
09005 mask_shape (1,3): mask_shape (2,3))
09006 Logical, Intent (In) :: mask_available
09007 Double Precision, Intent (In) :: tol
09008
09009 Double Precision, Intent (InOut) ::
09010 dist_dble (dim1(1):dim1(2), num_neigh)
09011
09012 Integer, Intent (Out) ::
09013 neighbors_3d (ndim_3d, nloc, num_neigh)
09014 Integer, Intent (Out) :: ierror
09015 End Subroutine
09016
09017 subroutine psmile_mg_srch_nneigh_irr_dble (grid_id, &
09018 arrays, search_mode, nref_3d, &
09019 sin_values, cos_values, grid_valid_shape, &
09020 z_coords, coords_shape, &
09021 neighbors_3d, nloc, num_neigh, &
09022 sin_search, cos_search, z_search, &
09023 dist_dble, dim1, indices, jbeg, jend, &
09024 mask_ind, &
09025 mask_array, mask_shape, mask_available, &
09026 tol, ierror)
09027
09028 Use PSMILe_common
09029
09030 Integer, Intent (In) :: grid_id
09031 Type (Extra_search_dble) :: arrays
09032 Integer, Intent (In) :: search_mode, nref_3d
09033 Integer, Intent (In) :: jbeg, jend, nloc
09034 Integer, Intent (In) :: grid_valid_shape (2, ndim_3d)
09035 Integer, Intent (In) :: coords_shape (2, ndim_3d)
09036 Integer, Intent (In) :: mask_shape (2, ndim_3d)
09037 Double Precision, Intent (In) ::
09038 sin_values (grid_valid_shape(1,1):grid_valid_shape(2,1),
09039 grid_valid_shape(1,2):grid_valid_shape(2,2), 2)
09040 Double Precision, Intent (In) ::
09041 cos_values (grid_valid_shape(1,1):grid_valid_shape(2,1),
09042 grid_valid_shape(1,2):grid_valid_shape(2,2), 2)
09043 Double Precision, Intent (In) ::
09044 z_coords (coords_shape(1,3):coords_shape(2,3))
09045 Integer, Intent (In) :: num_neigh
09046 Integer, Intent (In) :: indices (:), dim1 (2)
09047 Double Precision, Intent (In) :: sin_search (jbeg:jend, 2)
09048 Double Precision, Intent (In) :: cos_search (jbeg:jend, 2)
09049 Double Precision, Intent (In) :: z_search (jbeg:jend)
09050 Logical, Intent (In) :: mask_ind (jbeg:jend)
09051 Logical, Intent (In) ::
09052 mask_array (mask_shape (1,1):mask_shape (2,1),
09053 mask_shape (1,2):mask_shape (2,2),
09054 mask_shape (1,3): mask_shape (2,3))
09055 Logical, Intent (In) :: mask_available
09056 Double Precision, Intent (In) :: tol
09057
09058 Double Precision, Intent (InOut) ::
09059 dist_dble (dim1(1):dim1(2), num_neigh)
09060
09061 Integer, Intent (Out) ::
09062 neighbors_3d (ndim_3d, nloc, num_neigh)
09063 Integer, Intent (Out) :: ierror
09064 End Subroutine
09065
09066 subroutine psmile_print_3d_coord_dble (x, y, z, shape, &
09067 ind, nloc, message)
09068 Use PSMILe_common
09069
09070 Integer, Intent (In) :: shape (2, ndim_3d)
09071 Double Precision, Intent (In) :: x (*), y (*), z (*)
09072 Integer, Intent(In) :: nloc
09073 Integer, Intent(In) :: ind (ndim_3d, nloc)
09074 Character (len=*), Intent(In) :: message
09075 End Subroutine
09076
09077 subroutine psmile_print_3d_reg_coord_dble (x, y, z, shape, &
09078 ind, nloc, message)
09079 Use PSMILe_common
09080
09081 Integer, Intent (In) :: shape (2, ndim_3d)
09082 Double Precision, Intent (In) :: x (*), y (*), z (*)
09083 Integer, Intent(In) :: nloc
09084 Integer, Intent(In) :: ind (ndim_3d, nloc)
09085 Character (len=*), Intent(In) :: message
09086 End Subroutine
09087
09088 subroutine psmile_print_irreg2_coord_dble (x, y, z, shape, &
09089 ind, nloc, message)
09090 Use PSMILe_common
09091
09092 Integer, Intent (In) :: shape (2, ndim_3d)
09093 Double Precision, Intent (In) :: x (*), y (*), z (*)
09094 Integer, Intent(In) :: nloc
09095 Integer, Intent(In) :: ind (ndim_3d, nloc)
09096 Character (len=*), Intent(In) :: message
09097 End Subroutine
09098
09099
09100
09101
09102
09103
09104
09105
09106
09107
09108
09109
09110
09111
09112
09113
09114
09115
09116
09117
09118 subroutine psmile_put_field_dble (field_id, task_id, data_array, len, &
09119 nbr_fields, ierror)
09120
09121 Integer, Intent (In) :: field_id
09122 Integer, Intent (In) :: task_id
09123 Integer, Intent (In) :: len, nbr_fields
09124 Double Precision, Intent (In) :: data_array(*)
09125 Integer, Intent (Out) :: ierror
09126 End Subroutine
09127
09128 subroutine psmile_put_field_gauss2_dble (data_array, data_shape, nbr_fields, &
09129 srcloc, nparts, nloc, npoints, &
09130 dest, tag, comm, ierror)
09131 Use PSMILe_common
09132
09133 Integer, Intent (In) :: nloc, dest, tag, comm, nbr_fields
09134 Integer, Intent (In) :: nparts
09135 Integer, Intent (In) :: npoints (2, nparts)
09136 Integer, Intent (In) :: data_shape (2, ndim_3d)
09137 Type (integer_vector), Intent (In) :: srcloc (2, nparts)
09138 Double Precision, Intent (In) :: data_array (*)
09139 Integer, Intent (Out) :: ierror
09140 End Subroutine
09141
09142 subroutine psmile_put_field_21d_dble (data_array, data_shape, nbr_fields, &
09143 srcloc, nparts, nloc, npoints, &
09144 dest, tag, comm, ierror)
09145 Use PSMILe_common
09146
09147 Integer, Intent (In) :: nloc, dest, tag, comm, nbr_fields
09148 Integer, Intent (In) :: nparts
09149 Integer, Intent (In) :: npoints (2, nparts)
09150 Integer, Intent (In) :: data_shape (2, ndim_3d)
09151 Type (integer_vector), Intent (In) :: srcloc (2, nparts)
09152 Double Precision, Intent (In) :: data_array (*)
09153 Integer, Intent (Out) :: ierror
09154 End Subroutine
09155
09156 subroutine psmile_put_field_3d_dble (data_array, data_shape, nbr_fields, &
09157 srcloc, nparts, nloc, npoints, &
09158 dest, tag, comm, ierror)
09159 Use PSMILe_common
09160
09161 Integer, Intent (In) :: nloc, dest, tag, comm, nbr_fields
09162 Integer, Intent (In) :: nparts
09163 Integer, Intent (In) :: npoints (ndim_3d, nparts)
09164 Integer, Intent (In) :: data_shape (2, ndim_3d)
09165 Type (integer_vector), Intent (In) :: srcloc (ndim_3d, nparts)
09166 Double Precision, Intent (In) :: data_array (*)
09167 Integer, Intent (Out) :: ierror
09168 End Subroutine
09169
09170 subroutine psmile_put_irr_field_dble (data_array, data_shape, nbr_fields, &
09171 srcloc, npoints, srcars, nars, nloc, &
09172 dest, tag, comm, ierror)
09173 Use PSMILe_common
09174
09175 Integer, Intent (In) :: nars, nloc, npoints, nbr_fields
09176 Integer, Intent (In) :: dest, tag, comm
09177 Integer, Intent (In) :: data_shape (2, ndim_3d)
09178 Integer, Intent (In) :: srcloc (ndim_3d, npoints)
09179 Integer, Intent (In) :: srcars (2, ndim_3d, nars)
09180 Double Precision, Intent (In) :: data_array (*)
09181 Integer, Intent (Out) :: ierror
09182 End Subroutine
09183
09184 subroutine psmile_get_field_dble (field_id, data_array, len, &
09185 nbr_fields, ierror)
09186
09187 Integer, Intent (In) :: field_id
09188 Integer, Intent (In) :: len, nbr_fields
09189 Double Precision, Intent (InOut) :: data_array(*)
09190 Integer, Intent (Out) :: ierror
09191 End Subroutine
09192
09193 subroutine psmile_get_irr_field_dble (data_array, data_shape, nbr_fields, &
09194 dstijk, npoints, dstars, nars, nloc, &
09195 source, tag, comm, ierror)
09196 Use PSMILe_common
09197
09198 Integer, Intent (In) :: nars, nloc, npoints, nbr_fields
09199 Integer, Intent (In) :: source, tag, comm
09200 Integer, Intent (In) :: data_shape (2, ndim_3d)
09201 Integer, Intent (In) :: dstijk (ndim_3d, npoints)
09202 Integer, Intent (In) :: dstars (2, ndim_3d, nars)
09203 Double Precision, Intent (InOut) :: data_array (*)
09204 Integer, Intent (Out) :: ierror
09205 End Subroutine
09206
09207
09208
09209 subroutine psmile_copy_subarray_3d_double (dest_vector, size, &
09210 darray, idlow, idhigh, jdlow, jdhigh, kdlow, kdhigh, &
09211 sub, ierror)
09212 Use PSMILe_common
09213
09214 Integer(kind=int64), Intent (In) :: size
09215 Integer, Intent (In) :: idlow, idhigh, jdlow, jdhigh,
09216 kdlow, kdhigh
09217 Integer, Intent (In) :: sub (2, ndim_3d)
09218 Double Precision, Intent (In) :: darray (idlow:idhigh, jdlow:jdhigh,
09219 kdlow:kdhigh)
09220 Double Precision, Intent (Out) :: dest_vector (size)
09221 Integer, Intent (Out) :: ierror
09222 End Subroutine
09223
09224 subroutine psmile_copy_subarray_2d_double (dest_vector, size, &
09225 darray, idlow, idhigh, jdlow, jdhigh, &
09226 ibeg, iend, jbeg, jend, ierror)
09227 Use PSMILe_common
09228 Integer(kind=int64), Intent (In) :: size
09229 Integer, Intent (In) :: idlow, idhigh, jdlow, jdhigh
09230 Integer, Intent (In) :: ibeg, iend, jbeg, jend
09231 Double Precision, Intent (In) :: darray (idlow:idhigh, jdlow:jdhigh)
09232 Double Precision, Intent (Out) :: dest_vector (size)
09233 Integer, Intent (Out) :: ierror
09234 End Subroutine
09235
09236 subroutine psmile_tricu_gauss2_extra (search, grid_id, mask_array, &
09237 mask_shape, mask_available, ibuf, len_item, &
09238 n_send, num_neigh, ierror)
09239 Use PSMILe_common
09240
09241 Integer, Intent (In) :: mask_shape (2, ndim_3d)
09242 Logical, Intent (In) ::
09243 mask_array (mask_shape(1,1):mask_shape(2,1),
09244 mask_shape(1,2):mask_shape(2,2),
09245 mask_shape(1,3):mask_shape(2,3))
09246 Logical, Intent (In) :: mask_available
09247 Integer, Intent (In) :: grid_id
09248 Integer, Intent (In) :: len_item, n_send, num_neigh
09249 Type (Enddef_global_search), Intent (InOut) :: search
09250 Integer, Intent (InOut) :: ibuf (len_item, n_send)
09251 Integer, Intent (Out) :: ierror
09252 End Subroutine
09253
09254 subroutine psmile_trili_gauss2_extra (search, grid_id, mask_array, &
09255 mask_shape, mask_available, ibuf, len_item, &
09256 n_send, num_neigh, ierror)
09257 Use PSMILe_common
09258
09259 Integer, Intent (In) :: mask_shape (2, ndim_3d)
09260 Logical, Intent (In) ::
09261 mask_array (mask_shape(1,1):mask_shape(2,1),
09262 mask_shape(1,2):mask_shape(2,2),
09263 mask_shape(1,3):mask_shape(2,3))
09264 Logical, Intent (In) :: mask_available
09265 Integer, Intent (In) :: grid_id
09266 Integer, Intent (In) :: len_item, n_send, num_neigh
09267 Type (Enddef_global_search), Intent (InOut) :: search
09268 Integer, Intent (InOut) :: ibuf (len_item, n_send)
09269 Integer, Intent (Out) :: ierror
09270 End Subroutine
09271
09272 subroutine psmile_global_sum_compute_dble(data, data_size, &
09273 nbr_fields, comm, global_sum, ierror)
09274 Use PSMILe_common
09275 implicit none
09276
09277 integer, intent (in) :: data_size
09278 integer, intent (in) :: nbr_fields
09279 double complex, intent (in) :: data(data_size, nbr_fields)
09280 integer, intent (in) :: comm
09281 double complex, intent(out) :: global_sum(nbr_fields)
09282 integer, intent(out) :: ierror
09283 end subroutine
09284
09285 subroutine psmile_global_sum_compute_int(data, data_size, &
09286 nbr_fields, comm, global_sum, ierror)
09287 integer, intent (in) :: data_size
09288 integer, intent (in) :: nbr_fields
09289 integer, intent (in) :: data(data_size, nbr_fields)
09290 integer, intent (in) :: comm
09291 integer, intent(out) :: global_sum(nbr_fields)
09292 integer, intent(out) :: ierror
09293 end subroutine
09294
09295 subroutine psmile_global_sum_send_dble(data, nbr_fields, &
09296 rank, ierror)
09297 integer, intent(in) :: nbr_fields
09298 double complex, intent(in) :: data(nbr_fields)
09299 integer, intent(in) :: rank
09300 integer, intent(out) :: ierror
09301 end subroutine
09302
09303 subroutine psmile_global_sum_send_int(data, nbr_fields, &
09304 rank, ierror)
09305 integer, intent(in) :: nbr_fields
09306 integer, intent(in) :: data(nbr_fields)
09307 integer, intent(in) :: rank
09308
09309 integer, intent(out) :: ierror
09310 end subroutine
09311
09312 subroutine psmile_global_sum_recv_dble(data, nbr_fields, &
09313 rank, ierror)
09314 integer, intent(in) :: nbr_fields
09315 double complex, intent(out) :: data(nbr_fields)
09316 integer, intent(in) :: rank
09317 integer, intent(out) :: ierror
09318 end subroutine
09319
09320 subroutine psmile_global_sum_recv_int(data, nbr_fields, &
09321 rank, ierror)
09322 integer, intent(in) :: nbr_fields
09323 integer, intent(out) :: data(nbr_fields)
09324 integer, intent(in) :: rank
09325
09326 integer, intent(out) :: ierror
09327 end subroutine
09328
09329 subroutine psmile_ddadd_mpi_callback (dda, ddb, len, itype)
09330 integer, intent(in) :: len, itype
09331 double complex, intent(in) :: dda(len)
09332 double complex, intent(inout) :: ddb(len)
09333 end subroutine
09334
09335
09336
09337
09338
09339 subroutine psmile_trs_inform(ida_args, id_trs_rank, id_err)
09340 Use PSMILe_Common, only : PSMILe_Trans_header_length
09341 Integer, Dimension(PSMILe_Trans_header_length), Intent (In) :: ida_args
09342 Integer, Intent (In) :: id_trs_rank
09343 Integer, Intent (Out) :: id_err
09344 End Subroutine
09345
09346 subroutine psmile_trs_set_src_epio3d_dble(id_epio_id, &
09347 id_trans_rank, &
09348 id_src_epio_size, &
09349 id_nbr_corner, &
09350 dda_src_epio_lat, &
09351 dda_src_epio_lon, &
09352 dda_src_epio_z, &
09353 id_src_mask, &
09354 ida_src_epio_mask, &
09355 id_err )
09356 Integer, Intent (Out) :: id_epio_id
09357 Integer, Intent (Out) :: id_trans_rank
09358 Integer, Intent (In) :: id_src_epio_size
09359 Integer, Intent (In) :: id_nbr_corner
09360 Double Precision,Dimension(id_src_epio_size),Intent(In)::dda_src_epio_lat
09361 Double Precision,Dimension(id_src_epio_size),Intent(In)::dda_src_epio_lon
09362 Double Precision,Dimension(id_src_epio_size),Intent(In)::dda_src_epio_z
09363 Integer, Intent (In) :: id_src_mask
09364 Integer, Dimension(id_src_epio_size), Intent (In) :: ida_src_epio_mask
09365 Integer, Intent (Out) :: id_err
09366 End Subroutine
09367
09368 subroutine psmile_trs_set_src_epio3d_real(id_epio_id, &
09369 id_trans_rank, &
09370 id_src_epio_size, &
09371 id_nbr_corner, &
09372 rda_src_epio_lat, &
09373 rda_src_epio_lon, &
09374 rda_src_epio_z, &
09375 id_src_mask, &
09376 ida_src_epio_mask, &
09377 id_err )
09378 Integer, Intent (Out) :: id_epio_id
09379 Integer, Intent (Out) :: id_trans_rank
09380 Integer, Intent (In) :: id_src_epio_size
09381 Integer, Intent (In) :: id_nbr_corner
09382 Real,Dimension(id_src_epio_size),Intent(In) :: rda_src_epio_lat
09383 Real,Dimension(id_src_epio_size),Intent(In) :: rda_src_epio_lon
09384 Real,Dimension(id_src_epio_size),Intent(In) :: rda_src_epio_z
09385 Integer, Intent (In) :: id_src_mask
09386 Integer, Dimension(id_src_epio_size), Intent (In) :: ida_src_epio_mask
09387 Integer, Intent (Out) :: id_err
09388 End Subroutine
09389
09390 subroutine psmile_trs_set_tgt_epio3d_dble(id_epio_id, &
09391 id_trans_rank, &
09392 id_tgt_epio_size, &
09393 id_nbr_corner, &
09394 dda_tgt_epio_lat, &
09395 dda_tgt_epio_lon, &
09396 dda_tgt_epio_z, &
09397 id_tgt_mask, &
09398 ida_tgt_epio_mask, &
09399 id_err )
09400 Integer, Intent (In) :: id_epio_id
09401 Integer, Intent (In) :: id_trans_rank
09402 Integer, Intent (In) :: id_tgt_epio_size
09403 Integer, Intent (In) :: id_nbr_corner
09404 Double Precision,Dimension(id_tgt_epio_size),Intent(In)::dda_tgt_epio_lat
09405 Double Precision,Dimension(id_tgt_epio_size),Intent(In)::dda_tgt_epio_lon
09406 Double Precision,Dimension(id_tgt_epio_size),Intent(In)::dda_tgt_epio_z
09407 Integer, Intent (In) :: id_tgt_mask
09408 Integer, Dimension(id_tgt_epio_size), Intent (In) :: ida_tgt_epio_mask
09409 Integer, Intent (Out) :: id_err
09410 End Subroutine
09411
09412 subroutine psmile_trs_set_tgt_epio3d_real(id_epio_id, &
09413 id_trans_rank, &
09414 id_tgt_epio_size, &
09415 id_nbr_corner, &
09416 rda_tgt_epio_lat, &
09417 rda_tgt_epio_lon, &
09418 rda_tgt_epio_z, &
09419 id_tgt_mask, &
09420 ida_tgt_epio_mask, &
09421 id_err )
09422 Integer, Intent (In) :: id_epio_id
09423 Integer, Intent (In) :: id_trans_rank
09424 Integer, Intent (In) :: id_tgt_epio_size
09425 Integer, Intent (In) :: id_nbr_corner
09426 Real,Dimension(id_tgt_epio_size),Intent(In) :: rda_tgt_epio_lat
09427 Real,Dimension(id_tgt_epio_size),Intent(In) :: rda_tgt_epio_lon
09428 Real,Dimension(id_tgt_epio_size),Intent(In) :: rda_tgt_epio_z
09429 Integer, Intent (In) :: id_tgt_mask
09430 Integer, Dimension(id_tgt_epio_size), Intent (In) :: ida_tgt_epio_mask
09431 Integer, Intent (Out) :: id_err
09432 End Subroutine
09433
09434 subroutine psmile_trs_set_triple_links(id_trans_out_id, &
09435 id_trans_in_id, &
09436 id_epio_id, &
09437 id_trans_rank, &
09438 id_err )
09439 Integer, Intent (In) :: id_trans_out_id
09440 Integer, Intent (In) :: id_trans_in_id
09441 Integer, Intent (In) :: id_epio_id
09442 Integer, Intent (In) :: id_trans_rank
09443 Integer, Intent (Out) :: id_err
09444 End Subroutine
09445
09446 subroutine psmile_trs_put_int(id_transient_out_id, &
09447 id_epio_id, &
09448 id_trans_rank, &
09449 id_epio_field_size, &
09450 ida_field, &
09451 id_nbr_fields, &
09452 id_err)
09453 Integer, Intent (In) :: id_transient_out_id
09454 Integer, Intent (In) :: id_epio_id
09455 Integer, Intent (In) :: id_trans_rank
09456 Integer, Intent (In) :: id_epio_field_size
09457 Integer, Dimension(id_epio_field_size), Intent (In) :: ida_field
09458 Integer, Intent (In) :: id_nbr_fields
09459 Integer, Intent (Out) :: id_err
09460 End Subroutine
09461
09462 subroutine psmile_trs_put_real(id_transient_out_id, &
09463 id_epio_id, &
09464 id_trans_rank, &
09465 id_epio_field_size, &
09466 rda_field, &
09467 id_nbr_fields, &
09468 id_err)
09469 Integer, Intent (In) :: id_transient_out_id
09470 Integer, Intent (In) :: id_epio_id
09471 Integer, Intent (In) :: id_trans_rank
09472 Integer, Intent (In) :: id_epio_field_size
09473 Real, Dimension(id_epio_field_size), Intent (In) :: rda_field
09474 Integer, Intent (In) :: id_nbr_fields
09475 Integer, Intent (Out) :: id_err
09476 End Subroutine
09477
09478 subroutine psmile_trs_put_dble(id_transient_out_id, &
09479 id_epio_id, &
09480 id_trans_rank, &
09481 id_epio_field_size, &
09482 dda_field, &
09483 id_nbr_fields, &
09484 id_err)
09485 Integer, Intent (In) :: id_transient_out_id
09486 Integer, Intent (In) :: id_epio_id
09487 Integer, Intent (In) :: id_trans_rank
09488 Integer, Intent (In) :: id_epio_field_size
09489 Double Precision, Dimension(id_epio_field_size), Intent (In) :: dda_field
09490 Integer, Intent (In) :: id_nbr_fields
09491 Integer, Intent (Out) :: id_err
09492 End Subroutine
09493
09494 subroutine psmile_trs_get_int(id_transient_in_id, &
09495 id_epio_id, &
09496 id_trans_rank, &
09497 id_epio_field_size, &
09498 ida_field, &
09499 id_nbr_fields, &
09500 id_err)
09501 Integer, Intent (In) :: id_transient_in_id
09502 Integer, Intent (In) :: id_epio_id
09503 Integer, Intent (In) :: id_trans_rank
09504 Integer, Intent (In) :: id_epio_field_size
09505 Integer, Dimension(id_epio_field_size), Intent (Out) :: ida_field
09506 Integer, Intent (In) :: id_nbr_fields
09507 Integer, Intent (Out) :: id_err
09508 End Subroutine
09509
09510 subroutine psmile_trs_get_real(id_transient_in_id, &
09511 id_epio_id, &
09512 id_trans_rank, &
09513 id_epio_field_size, &
09514 rda_field, &
09515 id_nbr_fields, &
09516 id_err)
09517 Integer, Intent (In) :: id_transient_in_id
09518 Integer, Intent (In) :: id_epio_id
09519 Integer, Intent (In) :: id_trans_rank
09520 Integer, Intent (In) :: id_epio_field_size
09521 Real, Dimension(id_epio_field_size), Intent (Out) :: rda_field
09522 Integer, Intent (In) :: id_nbr_fields
09523 Integer, Intent (Out) :: id_err
09524 End Subroutine
09525
09526 subroutine psmile_trs_get_dble(id_transient_in_id, &
09527 id_epio_id, &
09528 id_trans_rank, &
09529 id_epio_field_size, &
09530 dda_field, &
09531 id_nbr_fields, &
09532 id_err)
09533 Integer, Intent (In) :: id_transient_in_id
09534 Integer, Intent (In) :: id_epio_id
09535 Integer, Intent (In) :: id_trans_rank
09536 Integer, Intent (In) :: id_epio_field_size
09537 Double Precision, Dimension(id_epio_field_size), Intent (Out) :: dda_field
09538 Integer, Intent (In) :: id_nbr_fields
09539 Integer, Intent (Out) :: id_err
09540 End Subroutine
09541
09542 subroutine psmile_trs_give_neighbors3d (id_epio_id, &
09543 id_trans_rank, &
09544 id_epio_tgt_size, &
09545 id_nb_neighbors, &
09546 ida_neighbor_indices, &
09547 id_err)
09548
09549 Integer, Intent (In) :: id_epio_id
09550 Integer, Intent (In) :: id_trans_rank
09551 Integer, Intent (In) :: id_epio_tgt_size
09552 Integer, Intent (In) :: id_nb_neighbors
09553 Integer, Dimension(id_nb_neighbors*id_epio_tgt_size), Intent (In) ::
09554 ida_neighbor_indices
09555 Integer, Intent (Out) :: id_err
09556
09557 End Subroutine
09558
09559 subroutine psmile_trs_give_neighbors_gauss (id_epio_id, &
09560 id_trans_rank, &
09561 id_epio_tgt_size, &
09562 id_nb_neighbors, &
09563 ida_neighbor_indices, &
09564 ida_neighbor_bascule, &
09565 id_err)
09566
09567 Integer, Intent (In) :: id_epio_id
09568 Integer, Intent (In) :: id_trans_rank
09569 Integer, Intent (In) :: id_epio_tgt_size
09570 Integer, Intent (In) :: id_nb_neighbors
09571 Integer, Dimension(id_nb_neighbors*id_epio_tgt_size), Intent (In) ::
09572 ida_neighbor_indices
09573 Integer, Dimension(id_epio_tgt_size), Intent (In) ::
09574 ida_neighbor_bascule
09575 Integer, Intent (Out) :: id_err
09576
09577 End Subroutine
09578
09579 subroutine psmile_trs_give_neighcells3d(id_epio_id, &
09580 id_trans_rank, &
09581 id_epio_tgt_size, &
09582 ida_nbsrccells_pertgtpt, &
09583 id_source_size, &
09584 id_nb_corners, &
09585 ida_source_cell_index, &
09586 ida_corner_index, &
09587 id_grid_type, &
09588 id_err)
09589
09590 Integer, Intent (In) :: id_epio_id
09591 Integer, Intent (In) :: id_trans_rank
09592 Integer, Intent (In) :: id_epio_tgt_size
09593 Integer, Intent (In) :: id_source_size
09594 Integer, Intent (In) :: id_nb_corners
09595 Integer, Intent (In) :: id_grid_type
09596 Integer, Dimension(id_epio_tgt_size), Intent (In) ::
09597 ida_nbsrccells_pertgtpt
09598 Integer, Dimension(id_source_size), INTENT (In) ::
09599 ida_source_cell_index
09600 Integer, Dimension(id_nb_corners*id_source_size), Intent (In) ::
09601 ida_corner_index
09602 Integer, Intent (Out) :: id_err
09603 End Subroutine
09604
09605 subroutine psmile_trs_trili_srch_neigh3d ( &
09606 ila_grid1_dims, il_grid1_size, ila_grid1_mask, &
09607 ila_grid1_center_lon, ila_grid1_center_lat,ila_grid1_center_z, &
09608 ila_grid2_dims, il_grid2_size, ila_grid2_mask, &
09609 ila_grid2_center_lon, ila_grid2_center_lat,ila_grid2_center_z, &
09610 il_num_srch_bin, il_restrict_type, ila_neighbors, il_err)
09611 Integer, Dimension(3), Intent (In) :: ila_grid1_dims
09612 Integer, Dimension(3), Intent (In) :: ila_grid2_dims
09613 Integer, Intent (In) :: il_grid1_size
09614 Integer, Intent (In) :: il_grid2_size
09615 Integer, Dimension(il_grid1_size), Intent (In) :: ila_grid1_mask
09616 Integer, Dimension(il_grid2_size), Intent (In) :: ila_grid2_mask
09617 Real, Dimension(il_grid1_size), Intent (Inout) :: ila_grid1_center_lon
09618 Real, Dimension(il_grid1_size), Intent (Inout) :: ila_grid1_center_lat
09619 Real, Dimension(il_grid1_size), Intent (Inout) :: ila_grid1_center_z
09620 Real, Dimension(il_grid2_size), Intent (Inout) :: ila_grid2_center_lon
09621 Real, Dimension(il_grid2_size), Intent (Inout) :: ila_grid2_center_lat
09622 Real, Dimension(il_grid2_size), Intent (Inout) :: ila_grid2_center_z
09623 Integer, Intent (In) :: il_num_srch_bin
09624 Integer, Intent (In) :: il_restrict_type
09625 Integer, Dimension(il_grid2_size,8), Intent (Out) :: ila_neighbors
09626 Integer, Intent (Out) :: il_err
09627 End Subroutine
09628
09629 subroutine psmile_trs_finalize(id_trans_rank, id_err)
09630 Integer, Intent (In) :: id_trans_rank
09631 Integer, Intent (Out) :: id_err
09632 End Subroutine
09633
09634
09635
09636
09637
09638 subroutine psmile_io_derive_pelist(id_comm_appl,id_comp_id, &
09639 comp_info,pelist,ierror)
09640 Use PSMILe_common
09641 Integer,Intent(In) :: id_comm_appl
09642 Integer,Intent(In) :: id_comp_id
09643 Type (Enddef_comp), Intent (In) :: comp_info
09644 Integer,Intent(Out):: pelist(*)
09645 Integer,Intent(Out):: ierror
09646
09647 End Subroutine
09648
09649 subroutine psmile_io_init ( ierror )
09650 Integer, Intent (Out) :: ierror
09651 End Subroutine
09652
09653 subroutine psmile_io_init_comp (id_comp_id, ierror)
09654 Integer, Intent (In) :: id_comp_id
09655 Integer, Intent (Out) :: ierror
09656 End Subroutine
09657
09658 subroutine psmile_io_init_pelist (id_comp_id, comp_info, ierror)
09659
09660 Use PSMILe_common
09661
09662 Integer, Intent (In) :: id_comp_id
09663 Type (Enddef_comp), Intent (In) :: comp_info
09664 Integer, Intent (Out) :: ierror
09665 End Subroutine
09666
09667 subroutine psmile_io_init_cf (ierror)
09668 Integer, Intent (Out) :: ierror
09669 End Subroutine
09670
09671 subroutine psmile_io_finalize (ierror)
09672 Integer, Intent (Out) :: ierror
09673 End Subroutine
09674
09675 subroutine psmile_io_close (ierror)
09676 Integer, Intent (Out) :: ierror
09677 End Subroutine
09678
09679 subroutine psmile_def_domains(ierror)
09680 Integer, Intent (Out) :: ierror
09681 End Subroutine
09682
09683 subroutine psmile_def_metadata (id_varid,ierror)
09684 Integer, Intent (In) :: id_varid
09685 Integer, Intent (Out) :: ierror
09686 End Subroutine
09687
09688 subroutine psmile_enddef_metadata (ierror)
09689 Integer, Intent (Out) :: ierror
09690 End Subroutine
09691
09692 subroutine psmile_open_files ( ierror )
09693 Integer, Intent (Out) :: ierror
09694 End Subroutine
09695
09696 subroutine psmile_open_file_byid (varid, taskid, date, ierror)
09697 Use PRISM_Constants
09698 Integer, Intent (In) :: varid,taskid
09699 Type(PRISM_Time_Struct), Intent (In) :: date
09700 Integer, Intent (Out) :: ierror
09701 End Subroutine
09702
09703 subroutine psmile_check_restart(id_varid,id_taskid,id_info,ierror)
09704 Integer, Intent (In) :: id_varid
09705 Integer, Intent (In) :: id_taskid
09706 Integer, Intent (Out) :: id_info
09707 Integer, Intent (Out) :: ierror
09708 End Subroutine
09709
09710 subroutine psmile_close_files (ierror)
09711 Integer, Intent (Out) :: ierror
09712 End Subroutine
09713
09714 subroutine psmile_io_cleanup (ierror)
09715 Integer, Intent (Out) :: ierror
09716 End Subroutine
09717
09718 subroutine psmile_close_file_byid (varid, taskid, ierror)
09719 Integer, Intent (In) :: varid, taskid
09720 Integer, Intent (Out) :: ierror
09721 End Subroutine
09722
09723 subroutine psmile_check_file_size (varids, size, flag, ierror)
09724 Integer, Intent (In) :: varids(:)
09725 Integer, Intent (In) :: size
09726 Logical, Intent (Out) :: flag
09727 Integer, Intent (Out) :: ierror
09728 End Subroutine
09729
09730 subroutine psmile_io_scandir(basename,file_list,len_of_list,no_of_files,ierror)
09731 Character(len=*),Intent(in) ::basename
09732 Character(len=*),Intent(out) ::file_list(*)
09733 Integer,Intent(in) ::len_of_list
09734 Integer,Intent(out) ::no_of_files
09735 Integer,Intent(out) ::ierror
09736 End Subroutine
09737
09738 subroutine psmile_io_scandir_no_of_files(basename,no_of_files,ierror)
09739 Character(len=*),Intent(in) ::basename
09740 Integer,Intent(out) ::no_of_files
09741 Integer,Intent(out) ::ierror
09742 End Subroutine
09743
09744 subroutine psmile_write_meta_byid(id_varid,id_taskid,ierror)
09745 Integer,Intent(In) :: id_varid,id_taskid
09746 Integer,Intent(Out) :: ierror
09747 End Subroutine
09748
09749 subroutine psmile_write_meta(ierror)
09750 Integer,Intent(Out) :: ierror
09751 End Subroutine
09752
09753
09754
09755
09756
09757
09758
09759
09760
09761
09762
09763
09764
09765
09766
09767
09768
09769
09770
09771
09772
09773
09774
09775
09776
09777
09778
09779
09780 subroutine psmile_read_byid_dble(id_varid,id_taskid,rd_a,ju_day,ju_sec &
09781 ,ju_dayb,ju_secb,timeop,ierror)
09782 Integer,Intent(in)::id_varid,id_taskid
09783 Logical,Intent(out):: timeop
09784 Integer,Intent(out):: ierror
09785 Double Precision , Intent (InOut) :: rd_a(*)
09786 Double Precision, Intent (In) :: ju_day, ju_sec
09787 Double Precision, Intent (In) :: ju_dayb(2), ju_secb(2)
09788 End Subroutine
09789
09790 subroutine psmile_read_byid_real(id_varid,id_taskid,rd_a,ju_day,ju_sec &
09791 ,ju_dayb,ju_secb,timeop,ierror)
09792 Integer,Intent(in)::id_varid,id_taskid
09793 Logical,Intent(out):: timeop
09794 Integer,Intent(out):: ierror
09795 Real , Intent (InOut) :: rd_a(*)
09796 Double Precision, Intent (In) :: ju_day, ju_sec
09797 Double Precision, Intent (In) :: ju_dayb(2), ju_secb(2)
09798 End Subroutine
09799
09800 subroutine psmile_read_byid_int(id_varid,id_taskid,rd_a,ju_day,ju_sec &
09801 ,ju_dayb,ju_secb,timeop,ierror)
09802 Integer,Intent(in)::id_varid,id_taskid
09803 Logical,Intent(out):: timeop
09804 Integer,Intent(out):: ierror
09805 Integer , Intent (InOut) :: rd_a(*)
09806 Double Precision, Intent (In) :: ju_day, ju_sec
09807 Double Precision, Intent (In) :: ju_dayb(2), ju_secb(2)
09808 End Subroutine
09809
09810
09811
09812
09813
09814 subroutine psmile_multi_reduce_int ( task, shape_in, data_in, &
09815 shape_out, data_out, mask, ierror )
09816 Integer, Intent (In) :: task
09817 Integer, Intent (In) :: shape_in(2,6)
09818 Integer, Intent (In) :: shape_out(2,6)
09819 Integer, Intent (In) :: data_in ( shape_in(1,1) : shape_in (2,1),
09820 shape_in(1,2) : shape_in (2,2),
09821 shape_in(1,3) : shape_in (2,3),
09822 shape_in(1,4) : shape_in (2,4),
09823 shape_in(1,5) : shape_in (2,5),
09824 shape_in(1,6) : shape_in (2,6) )
09825 Logical, Intent (In) :: mask ( shape_in(1,1) : shape_in (2,1),
09826 shape_in(1,2) : shape_in (2,2),
09827 shape_in(1,3) : shape_in (2,3),
09828 shape_in(1,4) : shape_in (2,4),
09829 shape_in(1,5) : shape_in (2,5) )
09830 Integer, Intent (Out) :: data_out ( shape_out(1,1) : shape_out (2,1),
09831 shape_out(1,2) : shape_out (2,2),
09832 shape_out(1,3) : shape_out (2,3),
09833 shape_out(1,4) : shape_out (2,4),
09834 shape_out(1,5) : shape_out (2,5),
09835 shape_out(1,6) : shape_out (2,6) )
09836 Integer, Intent (Out) :: ierror
09837
09838 End Subroutine
09839
09840 subroutine psmile_multi_reduce_real ( task, shape_in, data_in, &
09841 shape_out, data_out, mask, ierror )
09842 Integer, Intent (In) :: task
09843 Integer, Intent (In) :: shape_in(2,6)
09844 Integer, Intent (In) :: shape_out(2,6)
09845 Real, Intent (In) :: data_in ( shape_in(1,1) : shape_in (2,1),
09846 shape_in(1,2) : shape_in (2,2),
09847 shape_in(1,3) : shape_in (2,3),
09848 shape_in(1,4) : shape_in (2,4),
09849 shape_in(1,5) : shape_in (2,5),
09850 shape_in(1,6) : shape_in (2,6) )
09851 Logical, Intent (In) :: mask ( shape_in(1,1) : shape_in (2,1),
09852 shape_in(1,2) : shape_in (2,2),
09853 shape_in(1,3) : shape_in (2,3),
09854 shape_in(1,4) : shape_in (2,4),
09855 shape_in(1,5) : shape_in (2,5) )
09856 Real, Intent (Out) :: data_out ( shape_out(1,1) : shape_out (2,1),
09857 shape_out(1,2) : shape_out (2,2),
09858 shape_out(1,3) : shape_out (2,3),
09859 shape_out(1,4) : shape_out (2,4),
09860 shape_out(1,5) : shape_out (2,5),
09861 shape_out(1,6) : shape_out (2,6) )
09862 Integer, Intent (Out) :: ierror
09863
09864 End Subroutine
09865
09866 subroutine psmile_multi_reduce_dble ( task, shape_in, data_in, &
09867 shape_out, data_out, mask, ierror )
09868 Integer, Intent (In) :: task
09869 Integer, Intent (In) :: shape_in(2,6)
09870 Integer, Intent (In) :: shape_out(2,6)
09871 Double Precision, Intent (In) :: data_in ( shape_in(1,1) : shape_in (2,1),
09872 shape_in(1,2) : shape_in (2,2),
09873 shape_in(1,3) : shape_in (2,3),
09874 shape_in(1,4) : shape_in (2,4),
09875 shape_in(1,5) : shape_in (2,5),
09876 shape_in(1,6) : shape_in (2,6) )
09877 Logical, Intent (In) :: mask ( shape_in(1,1) : shape_in (2,1),
09878 shape_in(1,2) : shape_in (2,2),
09879 shape_in(1,3) : shape_in (2,3),
09880 shape_in(1,4) : shape_in (2,4),
09881 shape_in(1,5) : shape_in (2,5) )
09882 Double Precision, Intent (Out) :: data_out ( shape_out(1,1) : shape_out (2,1),
09883 shape_out(1,2) : shape_out (2,2),
09884 shape_out(1,3) : shape_out (2,3),
09885 shape_out(1,4) : shape_out (2,4),
09886 shape_out(1,5) : shape_out (2,5),
09887 shape_out(1,6) : shape_out (2,6) )
09888 Integer, Intent (Out) :: ierror
09889
09890 End Subroutine
09891
09892 subroutine psmile_loc_trans_int ( task, nbr_fields, &
09893 len_in, data_in, &
09894 len_out, data_out, field_id )
09895 Integer, Intent (In) :: task
09896 Integer, Intent (In) :: nbr_fields
09897 Integer, Intent (In) :: len_in
09898 Integer, Intent (In) :: data_in(len_in,nbr_fields)
09899 Integer, Intent (In) :: len_out
09900 Integer, Intent (InOut) :: data_out(len_out,nbr_fields)
09901 Integer, Optional, Intent (In) :: field_id
09902
09903 End Subroutine
09904
09905 subroutine psmile_loc_trans_real ( task, nbr_fields, &
09906 len_in, data_in, &
09907 len_out, data_out, field_id )
09908 Integer, Intent (In) :: task
09909 Integer, Intent (In) :: nbr_fields
09910 Integer, Intent (In) :: len_in
09911 Real, Intent (In) :: data_in(len_in,nbr_fields)
09912 Integer, Intent (In) :: len_out
09913 Real, Intent (InOut) :: data_out(len_out,nbr_fields)
09914 Integer, Optional, Intent (In) :: field_id
09915
09916 End Subroutine
09917
09918 subroutine psmile_loc_trans_dble ( task, nbr_fields, &
09919 len_in, data_in, &
09920 len_out, data_out, field_id )
09921 Integer, Intent (In) :: task
09922 Integer, Intent (In) :: nbr_fields
09923 Integer, Intent (In) :: len_in
09924 Double Precision, Intent (In) :: data_in(len_in,nbr_fields)
09925 Integer, Intent (In) :: len_out
09926 Double Precision, Intent (InOut) :: data_out(len_out,nbr_fields)
09927 Integer, Optional, Intent (In) :: field_id
09928
09929 End Subroutine
09930
09931 subroutine psmile_get_initial_date ( initial_date, ierror )
09932 Use PRISM_Constants
09933 Type(PRISM_Time_struct), Intent(Out) :: initial_date
09934 Integer, Intent(Out) :: ierror
09935 End Subroutine
09936
09937 Subroutine psmile_set_userdef (var_id, side, chan_id, ierror)
09938 Integer, intent (In) :: var_id
09939 Integer, intent (In) :: side
09940 Integer, intent (In) :: chan_id
09941 Integer, Intent (Out) :: ierror
09942 End Subroutine psmile_set_userdef
09943
09944
09945
09946
09947
09948
09949 subroutine psmile_init_enddef_msg_inters (msg_intersections)
09950 use psmile_common, only : enddef_msg_intersections
09951
09952 type (enddef_msg_intersections), intent (out) :: msg_intersections
09953 end subroutine psmile_init_enddef_msg_inters
09954
09955 subroutine psmile_pack_msg_intersections (msg_intersections, buffer)
09956 use psmile_common, only : enddef_msg_intersections, nd_msgint
09957
09958 type (enddef_msg_intersections), intent (in) :: msg_intersections
09959 integer, intent (inout) :: buffer(nd_msgint)
09960 end subroutine psmile_pack_msg_intersections
09961
09962 subroutine psmile_unpack_msg_intersections (msg_intersections, buffer)
09963 use psmile_common, only : enddef_msg_intersections, nd_msgint
09964
09965 type (enddef_msg_intersections), intent (out) :: msg_intersections
09966 integer, intent (inout) :: buffer(nd_msgint)
09967 end subroutine psmile_unpack_msg_intersections
09968
09969 subroutine psmile_copy_msg_intersections (msg_intersections_to, &
09970 msg_intersections_from)
09971 use psmile_common, only : enddef_msg_intersections
09972
09973 type (enddef_msg_intersections), intent (in) :: msg_intersections_from
09974 type (enddef_msg_intersections), intent (out) :: msg_intersections_to
09975 end subroutine psmile_copy_msg_intersections
09976
09977 subroutine psmile_init_enddef_msg_locs (msg_locations)
09978 use psmile_common, only : enddef_msg_locations, &
09979 psmile_undef
09980
09981 type (enddef_msg_locations), intent (out) :: msg_locations
09982 end subroutine psmile_init_enddef_msg_locs
09983
09984 subroutine psmile_pack_msg_locations (msg_locations, buffer)
09985 use psmile_common, only : enddef_msg_locations, msgloc_size
09986
09987 type (enddef_msg_locations), intent (in) :: msg_locations
09988 integer, intent (out) :: buffer(msgloc_size)
09989 end subroutine psmile_pack_msg_locations
09990
09991 subroutine psmile_unpack_msg_locations (msg_locations, buffer)
09992 use psmile_common, only : enddef_msg_locations, msgloc_size
09993
09994 type (enddef_msg_locations), intent (out) :: msg_locations
09995 integer, intent (in) :: buffer(msgloc_size)
09996 end subroutine psmile_unpack_msg_locations
09997
09998 End Interface
09999
10000 End Module PSMILe