25 integer(kind=ip_i4_p),
parameter,
public ::
mvarcpl = 10
29 character(len=ic_lvar):: name
30 integer(kind=ip_i4_p) :: part
31 integer(kind=ip_i4_p) :: ndim
32 integer(kind=ip_i4_p) :: num
33 integer(kind=ip_i4_p) :: ops
34 integer(kind=ip_i4_p) ::
type 35 integer(kind=ip_i4_p) :: size
36 integer(kind=ip_i4_p) :: ncpl
50 id_var_nodims, kinout, id_var_shape, ktype, kinfo)
52 INTEGER(kind=ip_i4_p),
intent(out) :: id_nports
53 CHARACTER(len=*) ,
intent(in) :: cdport
54 INTEGER(kind=ip_i4_p),
intent(in) :: id_part
55 INTEGER(kind=ip_i4_p),
intent(in) :: id_var_nodims(2)
56 INTEGER(kind=ip_i4_p),
intent(in) :: kinout
57 INTEGER(kind=ip_i4_p),
intent(in) :: id_var_shape(:)
58 INTEGER(kind=ip_i4_p),
intent(in) :: ktype
59 INTEGER(kind=ip_i4_p),
intent(out),
optional :: kinfo
61 INTEGER(kind=ip_i4_p) :: n
62 CHARACTER(len=ic_lvar) :: trimmed_cdport
63 character(len=*),
parameter :: subname =
'(oasis_def_var)' 64 LOGICAL :: l_field_in_namcouple
79 if (len_trim(cdport) >
ic_lvar)
then 80 WRITE(
nulprt,*) subname,
estr,
'variable too long = ',trim(cdport)
84 trimmed_cdport = trim(cdport)
88 l_field_in_namcouple = .false.
96 DO WHILE (n <
size_namfld .AND. (.NOT.l_field_in_namcouple))
100 l_field_in_namcouple = .true.
108 if (.not. l_field_in_namcouple)
then 111 write(
nulprt,*) subname,
' variable not in namcouple return ',trimmed_cdport
123 if (trimmed_cdport ==
prism_var(n)%name)
then 124 write(
nulprt,*) subname,
estr,
'variable already defined with def_var = ',trimmed_cdport
125 write(
nulprt,*) subname,
estr,
'check oasis_def_var calls in your model' 131 if (id_var_nodims(2) > 999)
then 132 write(
nulprt,*) subname,
estr,
'variable id_var_nodims2 too large. limit is 999 ',id_var_nodims(2)
133 write(
nulprt,*) subname,
estr,
'check oasis_def_var calls in your model' 146 write(
nulprt,*) subname,
estr,
'check maxvar set in oasis_init_comp' 188 integer(kind=ip_intwp_p) :: m,n,p,v
189 INTEGER(kind=ip_intwp_p) :: ierr, taskid
190 integer(kind=ip_intwp_p) :: vcnt
191 logical :: found, fastcheckout
192 character(len=ic_lvar) ,
pointer :: vname0(:),vname(:)
193 character(len=ic_lvar2) ,
pointer :: pname0(:),pname(:)
194 integer(kind=ip_intwp_p),
pointer :: inout0(:),inout(:)
195 integer(kind=ip_intwp_p),
pointer :: vanum0(:),vanum(:)
196 logical,
parameter :: local_timers_on = .false.
197 character(len=*),
parameter :: subname =
'(oasis_var_setup)' 217 fastcheck=.true.,fastcheckout=fastcheckout, &
218 linp2=pname0,lout2=pname,linp3=inout0,lout3=inout,linp4=vanum0,lout4=vanum)
231 if (.not. fastcheckout)
then 267 write(
nulprt,*) subname,
' found part match ',trim(vname(v)),trim(pname(v)),p
270 write(
nulprt,*) subname,
estr,
'prism part not found part = ',trim(pname(v)),
' var = ',trim(vname(v))
288 deallocate(vname,pname,inout,vanum)
305 character(len=*),
parameter :: subname =
'(oasis_var_zero)' 310 prism_var%name =
'oasis_var_name_unset'
Provides a common location for several OASIS variables.
integer(kind=ip_intwp_p), parameter oasis_ok
type(prism_part_type), dimension(mpart), public prism_part
list of defined partitions
integer(kind=ip_i4_p) size_namfld
integer(kind=ip_intwp_p) nulprt
subroutine, public oasis_def_var(id_nports, cdport, id_part, id_var_nodims, kinout, id_var_shape, ktype, kinfo)
The OASIS user interface to define variables.
subroutine, public oasis_abort(id_compid, cd_routine, cd_message, file, line, rcode)
OASIS abort method, publically available to users.
Provides a generic and simpler interface into MPI calls for OASIS.
character(len=ic_lvar), dimension(:), pointer total_namsrcfld
subroutine, public oasis_debug_enter(string)
Used when a subroutine is entered, write info to log file at some debug level.
subroutine, public oasis_mpi_reducelists(linp1, comm, cntout, lout1, callstr, fastcheck, fastcheckout, linp2, lout2, spval2, linp3, lout3, spval3, linp4, lout4, spval4)
Custom method for reducing MPI lists across pes for OASIS.
OASIS partition data and methods.
Defines parameters for OASIS.
character(len=ic_lvar), dimension(:), pointer total_namdstfld
OASIS variable data and methods.
subroutine, public oasis_timer_start(timer_label, barrier)
Start a timer.
integer(kind=ip_i4_p) oasis_debug
subroutine, public oasis_timer_stop(timer_label)
Stop a timer.
character(len= *), parameter, public estr
integer(kind=ip_i4_p) mpi_comm_local
integer, parameter ic_lvar
integer(kind=ip_i4_p), parameter, public mvarcpl
max namcouples per variable
integer(kind=ip_intwp_p), parameter oasis_var_uncpl
integer(kind=ip_intwp_p), public prism_npart
number of partitions defined
subroutine, public oasis_flush(nu)
Flushes output to file.
integer(kind=ip_intwp_p), public prism_nvar
number of variables defined
subroutine oasis_var_zero(prism_var)
Zero variable information.
Performance timer methods.
subroutine, public oasis_var_setup()
Synchronize variables across all tasks, called at oasis enddef.
integer(ip_intwp_p), public maxvar
number of potential variables, derived from namcouple input
type(prism_var_type), dimension(:), pointer, public prism_var
list of defined variables
Model variable data for model coupling.
subroutine, public oasis_debug_exit(string)
Used when a subroutine is exited, write info to log file at some debug level.