-
Notifications
You must be signed in to change notification settings - Fork 153
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'format_changes' of https://github.com/wx20jjung/GSI int…
…o format_changes
- Loading branch information
Showing
18 changed files
with
2,364 additions
and
28 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,161 @@ | ||
module gsi_gnssrspdOper | ||
!$$$ subprogram documentation block | ||
! . . . . | ||
! subprogram: module gsi_gnssrspdOper | ||
! (based on gsi_*Oper.F90 routines by j guo <[email protected]>) | ||
! prgmmr: K. Apodaca <[email protected]> | ||
! org: Spire Global, Inc. | ||
! date: 2023-04-28 | ||
! | ||
! abstract: an obOper extension for gnssrspdNode type | ||
! | ||
! program history log: | ||
! 2023-04-21 k apodaca - initial version | ||
! input argument list: see Fortran 90 style document below | ||
! | ||
! output argument list: see Fortran 90 style document below | ||
! | ||
! attributes: | ||
! language: Fortran 90 and/or above | ||
! machine: | ||
! | ||
!$$$ end subprogram documentation block | ||
|
||
! module interface: | ||
|
||
use gsi_obOper, only: obOper | ||
use m_gnssrspdNode , only: gnssrspdNode | ||
implicit none | ||
public:: gnssrspdOper ! data stracture | ||
|
||
type,extends(obOper):: gnssrspdOper | ||
contains | ||
procedure,nopass:: mytype | ||
procedure,nopass:: nodeMold | ||
procedure:: setup_ | ||
procedure:: intjo1_ | ||
procedure:: stpjo1_ | ||
end type gnssrspdOper | ||
|
||
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
character(len=*),parameter :: myname='gsi_gnssrspdOper' | ||
type(gnssrspdNode),save,target:: myNodeMold_ | ||
|
||
contains | ||
function mytype(nodetype) | ||
implicit none | ||
character(len=:),allocatable:: mytype | ||
logical,optional, intent(in):: nodetype | ||
mytype="[gnssrspdOper]" | ||
if(present(nodetype)) then | ||
if(nodetype) mytype=myNodeMold_%mytype() | ||
endif | ||
end function mytype | ||
|
||
function nodeMold() | ||
!> %nodeMold() returns a mold of its corresponding obsNode | ||
use m_obsNode, only: obsNode | ||
implicit none | ||
class(obsNode),pointer:: nodeMold | ||
nodeMold => myNodeMold_ | ||
end function nodeMold | ||
|
||
subroutine setup_(self, lunin, mype, is, nobs, init_pass,last_pass) | ||
use gnssrspd_setup, only: setup | ||
use kinds, only: i_kind | ||
use gsi_obOper, only: len_obstype | ||
use gsi_obOper, only: len_isis | ||
|
||
use m_rhs , only: awork => rhs_awork | ||
use m_rhs , only: bwork => rhs_bwork | ||
use m_rhs , only: iwork => i_gnssrspd | ||
|
||
use obsmod , only: write_diag | ||
use convinfo, only: diag_conv | ||
use jfunc , only: jiter | ||
|
||
use mpeu_util, only: die | ||
implicit none | ||
class(gnssrspdOper ), intent(inout):: self | ||
integer(i_kind), intent(in):: lunin | ||
integer(i_kind), intent(in):: mype | ||
integer(i_kind), intent(in):: is | ||
integer(i_kind), intent(in):: nobs | ||
logical , intent(in):: init_pass ! supporting multi-pass setup() | ||
logical , intent(in):: last_pass ! with incremental backgrounds. | ||
|
||
!---------------------------------------- | ||
character(len=*),parameter:: myname_=myname//"::setup_" | ||
|
||
character(len=len_obstype):: obstype | ||
character(len=len_isis ):: isis | ||
integer(i_kind):: nreal,nchanl,ier,nele | ||
logical:: diagsave | ||
|
||
if(nobs == 0) return | ||
|
||
read(lunin,iostat=ier) obstype,isis,nreal,nchanl | ||
if(ier/=0) call die(myname_,'read(obstype,...), iostat =',ier) | ||
nele = nreal+nchanl | ||
|
||
diagsave = write_diag(jiter) .and. diag_conv | ||
|
||
call setup(self%obsLL(:), self%odiagLL(:), & | ||
lunin,mype,bwork,awork(:,iwork),nele,nobs,is,diagsave) | ||
|
||
end subroutine setup_ | ||
|
||
subroutine intjo1_(self, ibin, rval,sval, qpred,sbias) | ||
use intgnssrspdmod, only: intjo => intgnssrspd | ||
use gsi_bundlemod , only: gsi_bundle | ||
use bias_predictors, only: predictors | ||
use m_obsNode , only: obsNode | ||
use m_obsLList, only: obsLList_headNode | ||
use kinds , only: i_kind, r_quad | ||
implicit none | ||
class(gnssrspdOper ),intent(in ):: self | ||
integer(i_kind ),intent(in ):: ibin | ||
type(gsi_bundle),intent(inout):: rval ! (ibin) | ||
type(gsi_bundle),intent(in ):: sval ! (ibin) | ||
real(r_quad ),target,dimension(:),intent(inout):: qpred ! (ibin) | ||
type(predictors),target, intent(in ):: sbias | ||
|
||
!---------------------------------------- | ||
character(len=*),parameter:: myname_=myname//"::intjo1_" | ||
class(obsNode),pointer:: headNode | ||
|
||
headNode => obsLList_headNode(self%obsLL(ibin)) | ||
call intjo(headNode, rval,sval) | ||
headNode => null() | ||
|
||
end subroutine intjo1_ | ||
|
||
subroutine stpjo1_(self, ibin, dval,xval,pbcjo,sges,nstep,dbias,xbias) | ||
use stpgnssrspdmod, only: stpjo => stpgnssrspd | ||
use gsi_bundlemod, only: gsi_bundle | ||
use bias_predictors, only: predictors | ||
use m_obsNode , only: obsNode | ||
use m_obsLList, only: obsLList_headNode | ||
use kinds, only: r_quad,r_kind,i_kind | ||
implicit none | ||
class(gnssrspdOper ),intent(in):: self | ||
integer(i_kind ),intent(in):: ibin | ||
type(gsi_bundle),intent(in):: dval | ||
type(gsi_bundle),intent(in):: xval | ||
real(r_quad ),dimension(:),intent(inout):: pbcjo ! (1:4) | ||
real(r_kind ),dimension(:),intent(in ):: sges | ||
integer(i_kind),intent(in):: nstep | ||
|
||
type(predictors),target, intent(in):: dbias | ||
type(predictors),target, intent(in):: xbias | ||
|
||
!---------------------------------------- | ||
character(len=*),parameter:: myname_=myname//"::stpjo1_" | ||
class(obsNode),pointer:: headNode | ||
|
||
headNode => obsLList_headNode(self%obsLL(ibin)) | ||
call stpjo(headNode,dval,xval,pbcjo(:),sges,nstep) | ||
headNode => null() | ||
end subroutine stpjo1_ | ||
|
||
end module gsi_gnssrspdOper |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.